Commit Graph

20 Commits

Author SHA1 Message Date
Boris Zbarsky
8324aa1fa8 Bug 1444909 part 2. Change DOMTokenList.replace() to return a boolean and pull in the corresponding web platform test updates. r=qdot
The wpt changes come from https://github.com/w3c/web-platform-tests/pull/9920
and are needed to keep Element-classlist.html passing.

The change to testing/web-platform/mozilla/tests/dom/classList.html is pulling
those changes into our weird forked version of that test...

MozReview-Commit-ID: CvQlBRuieUY
2018-03-14 16:08:58 -04:00
Edgar Chen
d9444e4dd3 Bug 1422197 - Add fast path to get DocGroup in binding code for [CEReactions]; r=smaug
MozReview-Commit-ID: HgbFo9ddr0o
2017-11-27 16:10:27 +08:00
Nicholas Nethercote
7dbfdaf890 Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro.
(Path is actually r=froydnj.)

Bug 1400459 devirtualized nsIAtom so that it is no longer a subclass of
nsISupports. This means that nsAtom is now a better name for it than nsIAtom.

MozReview-Commit-ID: 91U22X2NydP
2017-10-03 09:05:19 +11:00
Nicholas Nethercote
9fda5528d2 Bug 1400459 (part 2) - Devirtualize nsIAtom. r=heycam.
This patch merges nsAtom into nsIAtom. For the moment, both names can be used
interchangeably due to a typedef. The patch also devirtualizes nsIAtom, by
making it not inherit from nsISupports, removing NS_DECL_NSIATOM, and dropping
the use of NS_IMETHOD_. It also removes nsIAtom's IIDs.

These changes trigger knock-on changes throughout the codebase, changing the
types of lots of things as follows.

- nsCOMPtr<nsIAtom> --> RefPtr<nsIAtom>

- nsCOMArray<nsIAtom> --> nsTArray<RefPtr<nsIAtom>>
  - Count() --> Length()
  - ObjectAt() --> ElementAt()
  - AppendObject() --> AppendElement()
  - RemoveObjectAt() --> RemoveElementAt()

- ns*Hashtable<nsISupportsHashKey, ...> -->
  ns*Hashtable<nsRefPtrHashKey<nsIAtom>, ...>

- nsInterfaceHashtable<T, nsIAtom> --> nsRefPtrHashtable<T, nsIAtom>
  - This requires adding a Get() method to nsRefPtrHashtable that it lacks but
    nsInterfaceHashtable has.

- nsCOMPtr<nsIMutableArray> --> nsTArray<RefPtr<nsIAtom>>
  - nsArrayBase::Create() --> nsTArray()
  - GetLength() --> Length()
  - do_QueryElementAt() --> operator[]

The patch also has some changes to Rust code that manipulates nsIAtom.

MozReview-Commit-ID: DykOl8aEnUJ
2017-09-26 08:33:21 +10:00
Aryeh Gregor
6218cacf33 Bug 869788 - Normalize DOMTokenList for whitespace/dupes; r=smaug
Some bits taken from a patch by Cameron McCormack.  This follows a
change to the DOM spec that has already been implemented by WebKit.

We do no checks for duplicates on initial attribute parsing, only when
the DOMTokenList is accessed.  We re-check for duplicates on every
DOMTokenList access, but optimized with a bloom filter, so it should be
fast.  It would be possible to add a flag to check if we've already
removed duplicates from the atom list, but it would require the
nsAttrValue to talk to the nsDOMTokenList somehow, and a spare bit would
be needed in nsAttrValue, and it would only help cases where
DOMTokenList is repeatedly accessed without the content attribute being
modified in between (e.g., .length) where the token list is extremely
long.

This patch assumes that no one other than nsDOMTokenList cares if
duplicates are removed from the nsAttrValue's atom array.  If anything
does, they will see inconsistent behavior depending on whether
nsDOMTokenList has removed duplicates yet.  Since we don't want to
check for duplicates on parse for performance reasons, the correct fix
is to update the code elsewhere to also remove duplicates.

MozReview-Commit-ID: 97KRVhPGwm8
2016-04-11 18:01:14 +03:00
Emilio Cobos Álvarez
67c19a4605 Bug 1293563: Simplify DOMTokenlist.remove using a tokenizer. r=baku
MozReview-Commit-ID: 4TTprZaZg8l
2016-08-26 22:27:14 -07:00
Emilio Cobos Álvarez
ef910caad3 Bug 1293563: Fix some DOMTokenList.replace bugs. r=baku
MozReview-Commit-ID: C2tCbHmwsi6
2016-08-08 22:48:30 -07:00
Ben Tian
244567c7ce Bug 1263116 - Stop throwing for DOMTokenList's.contains() when using empty string or ASCII whitespace, r=baku 2016-05-05 18:07:22 +08:00
Boris Zbarsky
7243aac6bf Bug 1257849 part 5. Implement DOMTokenList.prototype.supports(). r=bkelly 2016-05-04 23:41:25 -04:00
Boris Zbarsky
5ea2e6dc2b Bug 1257849 part 1. Add a concept of supported tokens to nsDOMTokenList. r=bkelly 2016-05-04 23:41:24 -04:00
Emilio Cobos Álvarez
43d463e550 Bug 1224186: Implement DOMTokenlist.replace r=baku,Ms2ger 2016-04-28 11:20:25 +02:00
Carsten "Tomcat" Book
703994ffed Backed out changeset 0eb8cf4e5b92 (bug 1224186) for w2 wpt test issues on a CLOSED TREE 2016-04-14 15:53:52 +02:00
Emilio Cobos Álvarez
9e6c01ff20 Bug 1224186 - Implement DOMTokenlist.replace r=baku r=Ms2ger 2016-04-13 08:49:00 +02:00
Carsten "Tomcat" Book
b7494546e1 Backed out changeset 92a78fabeb8d (bug 1224186) for causing issues in /dom/interfaces.html 2016-04-13 15:09:26 +02:00
Emilio Cobos Álvarez
e7729bf5d6 Bug 1224186: Implement DOMTokenlist.replace r=baku r=Ms2ger 2016-03-21 06:10:00 +01:00
Deepthi Venkitaramanan
b00793a3d8 Bug 1244328 - Merge the functionality of DOMSettableTokenList into DOMTokenList and make everything that used to refer to DOMSettableTokenList refer to DOMTokenList instead. r=bzbarsky 2016-02-11 17:50:42 -05:00
Andrew McCreight
92010d3e4c Bug 1152551, part 2 - Fix mode lines in dom/. r=jst 2015-05-03 15:32:37 -04:00
Ehsan Akhgari
ea41d8de48 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Boris Zbarsky
3a822d99b4 Bug 1117172 part 3. Change the wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv
The only manual changes here are to BindingUtils.h, BindingUtils.cpp,
Codegen.py, Element.cpp, IDBFileRequest.cpp, IDBObjectStore.cpp,
dom/workers/Navigator.cpp, WorkerPrivate.cpp, DeviceStorageRequestChild.cpp,
Notification.cpp, nsGlobalWindow.cpp, MessagePort.cpp, nsJSEnvironment.cpp,
Sandbox.cpp, XPCConvert.cpp, ExportHelpers.cpp, and DataStoreService.cpp.  The
rest of this diff was generated by running the following commands:

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObject\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g'

  find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx|aContext|aCtx|js), [^,)]+)\)/\1, aGivenProto)/g'
2015-03-19 10:13:33 -04:00
Birunthan Mohanathas
e9068bbc4f Bug 946065 - Part 12: Move content/base/ to dom/ and flatten subdirectories. r=peterv 2014-10-25 20:25:22 +03:00