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