Fix passing null / undefined as NodeFilter parameter for createNodeIterator() / creat...
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 Aug 2015 03:05:02 +0000 (03:05 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 Aug 2015 03:05:02 +0000 (03:05 +0000)
https://bugs.webkit.org/show_bug.cgi?id=148257

Reviewed by Darin Adler.

Source/WebCore:

Fix passing null / undefined as NodeFilter parameter for createNodeIterator() / createTreeWalker().
It is supposed to be translated into a *null* NodeFilter. However, WebKit was constructing a
NodeFilter in this case.

Chrome and Firefox do not create a NodeFilter in this case.

No new tests, already covered by:
fast/dom/createNodeIterator-parameters.html
fast/dom/createTreeWalker-parameters.html

* bindings/js/JSNodeFilterCustom.cpp:
(WebCore::JSNodeFilter::toWrapped):

LayoutTests:

Rebaseline tests. We are now passing more of the checks.

* fast/dom/createNodeIterator-parameters-expected.txt:
* fast/dom/createTreeWalker-parameters-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@188745 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/dom/createNodeIterator-parameters-expected.txt
LayoutTests/fast/dom/createTreeWalker-parameters-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSNodeFilterCustom.cpp

index a3e0d51..29159a6 100644 (file)
@@ -1,3 +1,15 @@
+2015-08-20  Chris Dumez  <cdumez@apple.com>
+
+        Fix passing null / undefined as NodeFilter parameter for createNodeIterator() / createTreeWalker()
+        https://bugs.webkit.org/show_bug.cgi?id=148257
+
+        Reviewed by Darin Adler.
+
+        Rebaseline tests. We are now passing more of the checks.
+
+        * fast/dom/createNodeIterator-parameters-expected.txt:
+        * fast/dom/createTreeWalker-parameters-expected.txt:
+
 2015-08-20  Myles C. Maxfield  <mmaxfield@apple.com>
 
         [iOS] Adopt OS X's emoji behavior
index 3deb741..f815520 100644 (file)
@@ -19,7 +19,7 @@ iterator = document.createNodeIterator(document, null, null)
 PASS iterator.root is document
 PASS iterator.referenceNode is document
 PASS iterator.whatToShow is 0
-FAIL iterator.filter should be null. Was [object NodeFilter].
+PASS iterator.filter is null
 PASS iterator.pointerBeforeReferenceNode is true
 
 Passing undefined for optional parameters
@@ -27,7 +27,7 @@ iterator = document.createNodeIterator(document, undefined, undefined)
 PASS iterator.root is document
 PASS iterator.referenceNode is document
 FAIL iterator.whatToShow should be 4294967295. Was 0.
-FAIL iterator.filter should be null. Was [object NodeFilter].
+PASS iterator.filter is null
 PASS iterator.pointerBeforeReferenceNode is true
 PASS successfullyParsed is true
 
index 328755d..03cf6cc 100644 (file)
@@ -18,14 +18,14 @@ walker = document.createTreeWalker(document, null, null)
 PASS walker.root is document
 PASS walker.currentNode is document
 PASS walker.whatToShow is 0
-FAIL walker.filter should be null. Was [object NodeFilter].
+PASS walker.filter is null
 
 Passing undefined for optional parameters
 walker = document.createTreeWalker(document, undefined, undefined)
 PASS walker.root is document
 PASS walker.currentNode is document
 FAIL walker.whatToShow should be 4294967295. Was 0.
-FAIL walker.filter should be null. Was [object NodeFilter].
+PASS walker.filter is null
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 1100605..660c846 100644 (file)
@@ -1,3 +1,23 @@
+2015-08-20  Chris Dumez  <cdumez@apple.com>
+
+        Fix passing null / undefined as NodeFilter parameter for createNodeIterator() / createTreeWalker()
+        https://bugs.webkit.org/show_bug.cgi?id=148257
+
+        Reviewed by Darin Adler.
+
+        Fix passing null / undefined as NodeFilter parameter for createNodeIterator() / createTreeWalker().
+        It is supposed to be translated into a *null* NodeFilter. However, WebKit was constructing a
+        NodeFilter in this case.
+
+        Chrome and Firefox do not create a NodeFilter in this case.
+
+        No new tests, already covered by:
+        fast/dom/createNodeIterator-parameters.html
+        fast/dom/createTreeWalker-parameters.html
+
+        * bindings/js/JSNodeFilterCustom.cpp:
+        (WebCore::JSNodeFilter::toWrapped):
+
 2015-08-20  Zalan Bujtas  <zalan@apple.com>
 
         Make outline: auto repaint rect inflate more explicit.
index 2bd5a27..70533db 100644 (file)
@@ -40,6 +40,9 @@ RefPtr<NodeFilter> JSNodeFilter::toWrapped(JSC::VM& vm, JSC::JSValue value)
     if (value.inherits(JSNodeFilter::info()))
         return &JSC::jsCast<JSNodeFilter*>(asObject(value))->impl();
 
+    if (!value.isObject())
+        return nullptr;
+
     RefPtr<NodeFilter> result = NodeFilter::create();
     result->setCondition(JSNodeFilterCondition::create(vm, result.get(), value));
     return result;