Title: [277713] trunk
Revision
277713
Author
timothy_hor...@apple.com
Date
2021-05-18 20:10:55 -0700 (Tue, 18 May 2021)

Log Message

allowsContentJavaScript API not applied from defaultWebpagePreferences
https://bugs.webkit.org/show_bug.cgi?id=225957

Reviewed by Wenson Hsieh.

New API test: WebKit.AllowsContentJavaScriptFromDefaultPreferences

* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::copy const):
allowsContentJavaScript works fine on the per-navigation-level WKWebpagePreferences,
but is ignored if applied on the WKWebViewConfiguration's defaultWebpagePreferences,
because it is not copied in copy(). Copy it!

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (277712 => 277713)


--- trunk/Source/WebKit/ChangeLog	2021-05-19 03:03:50 UTC (rev 277712)
+++ trunk/Source/WebKit/ChangeLog	2021-05-19 03:10:55 UTC (rev 277713)
@@ -1,5 +1,20 @@
 2021-05-18  Tim Horton  <timothy_hor...@apple.com>
 
+        allowsContentJavaScript API not applied from defaultWebpagePreferences
+        https://bugs.webkit.org/show_bug.cgi?id=225957
+
+        Reviewed by Wenson Hsieh.
+
+        New API test: WebKit.AllowsContentJavaScriptFromDefaultPreferences
+
+        * UIProcess/API/APIWebsitePolicies.cpp:
+        (API::WebsitePolicies::copy const):
+        allowsContentJavaScript works fine on the per-navigation-level WKWebpagePreferences,
+        but is ignored if applied on the WKWebViewConfiguration's defaultWebpagePreferences,
+        because it is not copied in copy(). Copy it!
+
+2021-05-18  Tim Horton  <timothy_hor...@apple.com>
+
         REGRESSION (r277683): WebContent process crashing in unit tests
         https://bugs.webkit.org/show_bug.cgi?id=225955
         rdar://78184041

Modified: trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp (277712 => 277713)


--- trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp	2021-05-19 03:03:50 UTC (rev 277712)
+++ trunk/Source/WebKit/UIProcess/API/APIWebsitePolicies.cpp	2021-05-19 03:10:55 UTC (rev 277713)
@@ -71,6 +71,7 @@
     policies->setCustomHeaderFields(WTFMove(customHeaderFields));
     policies->setAllowSiteSpecificQuirksToOverrideContentMode(m_allowSiteSpecificQuirksToOverrideContentMode);
     policies->setApplicationNameForDesktopUserAgent(m_applicationNameForDesktopUserAgent);
+    policies->setAllowsContentJavaScript(m_allowsContentJavaScript);
     policies->setMouseEventPolicy(m_mouseEventPolicy);
     return policies;
 }

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm (277712 => 277713)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm	2021-05-19 03:03:50 UTC (rev 277712)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm	2021-05-19 03:10:55 UTC (rev 277713)
@@ -438,6 +438,27 @@
 }
 #endif
 
+TEST(WebKit, AllowsContentJavaScriptFromDefaultPreferences)
+{
+    RetainPtr<WKWebpagePreferences> preferences = adoptNS([[WKWebpagePreferences alloc] init]);
+    [preferences setAllowsContentJavaScript:NO];
+
+    RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
+    [configuration setDefaultWebpagePreferences:preferences.get()];
+
+    RetainPtr<TestWKWebView> webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
+
+    [webView synchronouslyLoadHTMLString:@"<script>var foo = 'bar'</script>"];
+
+    __block bool done = false;
+    [webView evaluateJavaScript:@"foo" completionHandler:^(id result, NSError *error) {
+        EXPECT_NULL(result);
+        EXPECT_TRUE([[error description] containsString:@"Can't find variable: foo"]);
+        done = true;
+    }];
+    TestWebKitAPI::Util::run(&done);
+}
+
 TEST(WebKit, SPIJavascriptMarkupVsAPIContentJavaScript)
 {
     // There's not a dynamically configuration setting for _javascript_ markup,
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to