Title: [248708] trunk
Revision
248708
Author
commit-qu...@webkit.org
Date
2019-08-14 23:11:35 -0700 (Wed, 14 Aug 2019)

Log Message

Error thrown during "acceptNode" lookup is overridden
https://bugs.webkit.org/show_bug.cgi?id=200735

Patch by Alexey Shvayka <shvaikal...@gmail.com> on 2019-08-14
Reviewed by Ross Kirsling.

LayoutTests/imported/w3c:

* web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.html

* bindings/js/JSCallbackData.cpp:
(WebCore::JSCallbackData::invokeCallback): Catch and return exception of callback->get call.

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (248707 => 248708)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2019-08-15 04:55:55 UTC (rev 248707)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2019-08-15 06:11:35 UTC (rev 248708)
@@ -1,5 +1,14 @@
 2019-08-14  Alexey Shvayka  <shvaikal...@gmail.com>
 
+        Error thrown during "acceptNode" lookup is overridden
+        https://bugs.webkit.org/show_bug.cgi?id=200735
+
+        Reviewed by Ross Kirsling.
+
+        * web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt:
+
+2019-08-14  Alexey Shvayka  <shvaikal...@gmail.com>
+
         Re-sync web-platform-tests/dom/traversal from upstream
         https://bugs.webkit.org/show_bug.cgi?id=200737
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt (248707 => 248708)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt	2019-08-15 04:55:55 UTC (rev 248707)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt	2019-08-15 06:11:35 UTC (rev 248708)
@@ -7,7 +7,7 @@
 PASS Testing with object with non-function acceptNode property 
 PASS Testing with function having acceptNode function 
 PASS Testing with filter function that throws 
-FAIL rethrows errors when getting `acceptNode` assert_throws: function "function () { walker.firstChild(); }" threw object "TypeError: Type error" ("TypeError") expected object "[object Object]" ("test")
+PASS rethrows errors when getting `acceptNode` 
 PASS performs `Get` on every traverse 
 PASS Testing with filter object that throws 
 Test JS objects as NodeFilters

Modified: trunk/Source/WebCore/ChangeLog (248707 => 248708)


--- trunk/Source/WebCore/ChangeLog	2019-08-15 04:55:55 UTC (rev 248707)
+++ trunk/Source/WebCore/ChangeLog	2019-08-15 06:11:35 UTC (rev 248708)
@@ -1,3 +1,15 @@
+2019-08-14  Alexey Shvayka  <shvaikal...@gmail.com>
+
+        Error thrown during "acceptNode" lookup is overridden
+        https://bugs.webkit.org/show_bug.cgi?id=200735
+
+        Reviewed by Ross Kirsling.
+
+        Test: imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.html
+
+        * bindings/js/JSCallbackData.cpp:
+        (WebCore::JSCallbackData::invokeCallback): Catch and return exception of callback->get call.
+
 2019-08-14  Myles C. Maxfield  <mmaxfi...@apple.com>
 
         [WHLSL] Variables shouldn't be able to have void type

Modified: trunk/Source/WebCore/bindings/js/JSCallbackData.cpp (248707 => 248708)


--- trunk/Source/WebCore/bindings/js/JSCallbackData.cpp	2019-08-15 04:55:55 UTC (rev 248707)
+++ trunk/Source/WebCore/bindings/js/JSCallbackData.cpp	2019-08-15 06:11:35 UTC (rev 248708)
@@ -44,6 +44,8 @@
 
     ExecState* exec = globalObject.globalExec();
     VM& vm = exec->vm();
+    auto scope = DECLARE_CATCH_SCOPE(vm);
+
     JSValue function;
     CallData callData;
     CallType callType = CallType::None;
@@ -60,6 +62,12 @@
 
         ASSERT(!functionName.isNull());
         function = callback->get(exec, functionName);
+        if (UNLIKELY(scope.exception())) {
+            returnedException = scope.exception();
+            scope.clearException();
+            return JSValue();
+        }
+
         callType = getCallData(vm, function, callData);
         if (callType == CallType::None) {
             returnedException = JSC::Exception::create(vm, createTypeError(exec));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to