Title: [254950] trunk
Revision
254950
Author
[email protected]
Date
2020-01-22 15:48:29 -0800 (Wed, 22 Jan 2020)

Log Message

REGRESSION (r253519): [WKWebView evaluateJavaScript:completionHandler:] gives a non-nil, non-Error result even when _javascript_ cannot be evaluated
<rdar://problem/58544942> and https://bugs.webkit.org/show_bug.cgi?id=206608

Reviewed by Alex Christensen.

Source/WebCore:

Covered by new API test.

* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::executeScriptInWorld): Address a FIXME added in 253519 which had predicted this problem.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:
(TEST):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (254949 => 254950)


--- trunk/Source/WebCore/ChangeLog	2020-01-22 23:38:21 UTC (rev 254949)
+++ trunk/Source/WebCore/ChangeLog	2020-01-22 23:48:29 UTC (rev 254950)
@@ -1,3 +1,15 @@
+2020-01-22  Brady Eidson  <[email protected]>
+
+        REGRESSION (r253519): [WKWebView evaluateJavaScript:completionHandler:] gives a non-nil, non-Error result even when _javascript_ cannot be evaluated
+        <rdar://problem/58544942> and https://bugs.webkit.org/show_bug.cgi?id=206608
+
+        Reviewed by Alex Christensen.
+
+        Covered by new API test.
+
+        * bindings/js/ScriptController.cpp:
+        (WebCore::ScriptController::executeScriptInWorld): Address a FIXME added in 253519 which had predicted this problem.
+
 2020-01-22  Chris Dumez  <[email protected]>
 
         Unreviewed, fix build with recent SDKs.

Modified: trunk/Source/WebCore/bindings/js/ScriptController.cpp (254949 => 254950)


--- trunk/Source/WebCore/bindings/js/ScriptController.cpp	2020-01-22 23:38:21 UTC (rev 254949)
+++ trunk/Source/WebCore/bindings/js/ScriptController.cpp	2020-01-22 23:48:29 UTC (rev 254950)
@@ -576,9 +576,8 @@
 {
     UserGestureIndicator gestureIndicator(parameters.forceUserGesture == ForceUserGesture::Yes ? Optional<ProcessingUserGestureState>(ProcessingUserGesture) : WTF::nullopt);
 
-    // FIXME: Instead of returning an empty JSValue, should return an ExceptionDetails.
     if (!canExecuteScripts(AboutToExecuteScript) || isPaused())
-        return { };
+        return makeUnexpected(ExceptionDetails { "Cannot execute _javascript_ in this document"_s });
 
     switch (parameters.runAsAsyncFunction) {
     case RunAsAsyncFunction::No: {

Modified: trunk/Tools/ChangeLog (254949 => 254950)


--- trunk/Tools/ChangeLog	2020-01-22 23:38:21 UTC (rev 254949)
+++ trunk/Tools/ChangeLog	2020-01-22 23:48:29 UTC (rev 254950)
@@ -1,3 +1,13 @@
+2020-01-22  Brady Eidson  <[email protected]>
+
+        REGRESSION (r253519): [WKWebView evaluateJavaScript:completionHandler:] gives a non-nil, non-Error result even when _javascript_ cannot be evaluated
+        <rdar://problem/58544942> and https://bugs.webkit.org/show_bug.cgi?id=206608
+
+        Reviewed by Alex Christensen.
+
+        * TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:
+        (TEST):
+
 2020-01-22  Jonathan Bedard  <[email protected]>
 
         webkitpy: WebSocket server doesn't support Python 3 (Workaround)

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm (254949 => 254950)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm	2020-01-22 23:38:21 UTC (rev 254949)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm	2020-01-22 23:48:29 UTC (rev 254950)
@@ -27,6 +27,7 @@
 #import <WebKit/WKFoundation.h>
 
 #import "PlatformUtilities.h"
+#import "TCPServer.h"
 #import "Test.h"
 #import "TestNavigationDelegate.h"
 #import "TestWKWebView.h"
@@ -224,3 +225,32 @@
     }];
     isDone = false;
 }
+
+TEST(WebKit, EvaluateJavaScriptInAttachments)
+{
+    // Attachments displayed inline are in sandboxed documents.
+    // Evaluating _javascript_ in such a document should fail and result in an error.
+
+    using namespace TestWebKitAPI;
+    TCPServer server([](int socket) {
+        NSString *response = @"HTTP/1.1 200 OK\r\n"
+            "Content-Length: 12\r\n"
+            "Content-Disposition: attachment; filename=fromHeader.txt;\r\n\r\n"
+            "Hello world!";
+
+        TCPServer::read(socket);
+        TCPServer::write(socket, response.UTF8String, response.length);
+    });
+    auto webView = adoptNS([TestWKWebView new]);
+    [webView synchronouslyLoadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://127.0.0.1:%d/", server.port()]]]];
+
+    __block bool done = false;
+    [webView evaluateJavaScript:@"Hello" completionHandler:^(id result, NSError *error) {
+        EXPECT_NULL(result);
+        EXPECT_NOT_NULL(error);
+        EXPECT_TRUE([[error description] containsString:@"Cannot execute _javascript_ in this document"]);
+        done = true;
+    }];
+    TestWebKitAPI::Util::run(&done);
+}
+
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to