Title: [209230] trunk
Revision
209230
Author
jiewen_...@apple.com
Date
2016-12-01 19:30:37 -0800 (Thu, 01 Dec 2016)

Log Message

Add a runtime flag for SubtleCrypto
https://bugs.webkit.org/show_bug.cgi?id=164982

Reviewed by Brent Fulgham.

Source/WebCore:

* bindings/generic/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setSubtleCryptoEnabled):
(WebCore::RuntimeEnabledFeatures::subtleCryptoEnabled):
* page/Crypto.idl:

Source/WebKit/mac:

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences subtleCryptoEnabled]):
(-[WebPreferences setSubtleCryptoEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetSubtleCryptoEnabled):
(WKPreferencesGetSubtleCryptoEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setSubtleCryptoEnabled):
* WebKitTestRunner/InjectedBundle/TestRunner.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (209229 => 209230)


--- trunk/Source/WebCore/ChangeLog	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebCore/ChangeLog	2016-12-02 03:30:37 UTC (rev 209230)
@@ -1,3 +1,15 @@
+2016-12-01  Jiewen Tan  <jiewen_...@apple.com>
+
+        Add a runtime flag for SubtleCrypto
+        https://bugs.webkit.org/show_bug.cgi?id=164982
+
+        Reviewed by Brent Fulgham.
+
+        * bindings/generic/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::setSubtleCryptoEnabled):
+        (WebCore::RuntimeEnabledFeatures::subtleCryptoEnabled):
+        * page/Crypto.idl:
+
 2016-12-01  Saam Barati  <sbar...@apple.com>
 
         Rename CallFrame::callee() to CallFrame::jsCallee()

Modified: trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h (209229 => 209230)


--- trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h	2016-12-02 03:30:37 UTC (rev 209230)
@@ -240,6 +240,11 @@
     bool encryptedMediaAPIEnabled() const { return m_encryptedMediaAPIEnabled; }
 #endif
 
+#if ENABLE(SUBTLE_CRYPTO)
+    void setSubtleCryptoEnabled(bool isEnabled) { m_isSubtleCryptoEnabled = isEnabled; }
+    bool subtleCryptoEnabled() const { return m_isSubtleCryptoEnabled; }
+#endif
+
     WEBCORE_EXPORT static RuntimeEnabledFeatures& sharedFeatures();
 
     WEBCORE_EXPORT void reset();
@@ -362,6 +367,10 @@
     bool m_intersectionObserverEnabled { false };
 #endif
 
+#if ENABLE(SUBTLE_CRYPTO)
+    bool m_isSubtleCryptoEnabled;
+#endif
+
     friend class WTF::NeverDestroyed<RuntimeEnabledFeatures>;
 };
 

Modified: trunk/Source/WebCore/page/Crypto.idl (209229 => 209230)


--- trunk/Source/WebCore/page/Crypto.idl	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebCore/page/Crypto.idl	2016-12-02 03:30:37 UTC (rev 209230)
@@ -31,7 +31,7 @@
     Exposed=(Window,Worker),
     GenerateIsReachable=ImplScriptExecutionContext,
 ] interface Crypto {
-    [Conditional=SUBTLE_CRYPTO] readonly attribute SubtleCrypto subtle;
+    [Conditional=SUBTLE_CRYPTO, EnabledAtRuntime=SubtleCrypto] readonly attribute SubtleCrypto subtle;
     [Custom, MayThrowException] ArrayBufferView getRandomValues(ArrayBufferView array);
 
     // Will be deprecated.

Modified: trunk/Source/WebKit/mac/ChangeLog (209229 => 209230)


--- trunk/Source/WebKit/mac/ChangeLog	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit/mac/ChangeLog	2016-12-02 03:30:37 UTC (rev 209230)
@@ -1,3 +1,19 @@
+2016-12-01  Jiewen Tan  <jiewen_...@apple.com>
+
+        Add a runtime flag for SubtleCrypto
+        https://bugs.webkit.org/show_bug.cgi?id=164982
+
+        Reviewed by Brent Fulgham.
+
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences subtleCryptoEnabled]):
+        (-[WebPreferences setSubtleCryptoEnabled:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChanged:]):
+
 2016-11-30  Said Abou-Hallawa  <sabouhall...@apple.com>
 
         Add separate settings and preferences to enable/disable async decoding for large images and animated images

Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (209229 => 209230)


--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2016-12-02 03:30:37 UTC (rev 209230)
@@ -173,6 +173,7 @@
 #define WebKitVisualViewportEnabledPreferenceKey @"WebKitVisualViewportEnabled"
 #define WebKitModernMediaControlsEnabledPreferenceKey @"WebKitModernMediaControlsEnabled"
 #define WebKitPointerLockEnabledPreferenceKey @"WebKitPointerLockEnabled"
+#define WebKitSubtleCryptoEnabledPreferenceKey @"WebKitSubtleCryptoEnabled"
 
 #if !TARGET_OS_IPHONE
 // These are private both because callers should be using the cover methods and because the

Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (209229 => 209230)


--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2016-12-02 03:30:37 UTC (rev 209230)
@@ -630,6 +630,9 @@
 #endif
         [NSNumber numberWithBool:NO], WebKitVisualViewportEnabledPreferenceKey,
         [NSNumber numberWithBool:YES], WebKitNeedsStorageAccessFromFileURLsQuirkKey,
+#if ENABLE(SUBTLE_CRYPTO)
+        [NSNumber numberWithBool:YES], WebKitSubtleCryptoEnabledPreferenceKey,
+#endif
         nil];
 
 #if !PLATFORM(IOS)
@@ -2680,6 +2683,17 @@
     [self _setStringValue:directory forKey:WebKitMediaKeysStorageDirectoryKey];
 }
 
+- (BOOL)subtleCryptoEnabled
+{
+    return [self _boolValueForKey:WebKitSubtleCryptoEnabledPreferenceKey];
+}
+
+- (void)setSubtleCryptoEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitSubtleCryptoEnabledPreferenceKey];
+}
+
+
 - (void)setMetaRefreshEnabled:(BOOL)enabled
 {
     [self setHTTPEquivEnabled:enabled];

Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (209229 => 209230)


--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2016-12-02 03:30:37 UTC (rev 209230)
@@ -160,6 +160,9 @@
 - (BOOL)isSpatialNavigationEnabled;
 - (void)setSpatialNavigationEnabled:(BOOL)flag;
 
+- (void)setSubtleCryptoEnabled:(BOOL)flag;
+- (BOOL)subtleCryptoEnabled;
+
 #if !TARGET_OS_IPHONE
 // zero means do AutoScale
 - (float)PDFScaleFactor;

Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (209229 => 209230)


--- trunk/Source/WebKit/mac/WebView/WebView.mm	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm	2016-12-02 03:30:37 UTC (rev 209230)
@@ -2866,6 +2866,10 @@
     RuntimeEnabledFeatures::sharedFeatures().setIntersectionObserverEnabled(preferences.intersectionObserverEnabled);
 #endif
 
+#if ENABLE(SUBTLE_CRYPTO)
+    RuntimeEnabledFeatures::sharedFeatures().setSubtleCryptoEnabled([preferences subtleCryptoEnabled]);
+#endif
+
     NSTimeInterval timeout = [preferences incrementalRenderingSuppressionTimeoutInSeconds];
     if (timeout > 0)
         settings.setIncrementalRenderingSuppressionTimeoutInSeconds(timeout);

Modified: trunk/Source/WebKit2/ChangeLog (209229 => 209230)


--- trunk/Source/WebKit2/ChangeLog	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit2/ChangeLog	2016-12-02 03:30:37 UTC (rev 209230)
@@ -1,3 +1,20 @@
+2016-12-01  Jiewen Tan  <jiewen_...@apple.com>
+
+        Add a runtime flag for SubtleCrypto
+        https://bugs.webkit.org/show_bug.cgi?id=164982
+
+        Reviewed by Brent Fulgham.
+
+        * Shared/WebPreferencesDefinitions.h:
+        * UIProcess/API/C/WKPreferences.cpp:
+        (WKPreferencesSetSubtleCryptoEnabled):
+        (WKPreferencesGetSubtleCryptoEnabled):
+        * UIProcess/API/C/WKPreferencesRefPrivate.h:
+        * WebProcess/InjectedBundle/InjectedBundle.cpp:
+        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updatePreferences):
+
 2016-12-01  Saam Barati  <sbar...@apple.com>
 
         Rename CallFrame::callee() to CallFrame::jsCallee()

Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (209229 => 209230)


--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2016-12-02 03:30:37 UTC (rev 209230)
@@ -317,6 +317,7 @@
     macro(ModernMediaControlsEnabled, modernMediaControlsEnabled, Bool, bool, false, "Modern Media Controls", "Use modern media controls look") \
     macro(VariationFontsEnabled, variationFontsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Variation Fonts", "Enable variation fonts") \
     macro(InputEventsEnabled, inputEventsEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Input Events", "Enable InputEvents support") \
+    macro(SubtleCryptoEnabled, subtleCryptoEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "SubtleCrypto", "Enable SubtleCrypto support") \
     macro(WebGL2Enabled, webGL2Enabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "WebGL 2.0", "WebGL 2 prototype") \
     macro(ES6ModulesEnabled, es6ModulesEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "ES6 Modules", "Enable ES6 Modules support") \
     macro(PointerLockEnabled, pointerLockEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "PointerLock", "Pointer Lock API support") \

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (209229 => 209230)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2016-12-02 03:30:37 UTC (rev 209230)
@@ -1611,3 +1611,12 @@
     WebKit::toImpl(preferencesRef)->setApplePayCapabilityDisclosureAllowed(allowed);
 }
 
+void WKPreferencesSetSubtleCryptoEnabled(WKPreferencesRef preferencesRef, bool flag)
+{
+    toImpl(preferencesRef)->setSubtleCryptoEnabled(flag);
+}
+
+bool WKPreferencesGetSubtleCryptoEnabled(WKPreferencesRef preferencesRef)
+{
+    return toImpl(preferencesRef)->subtleCryptoEnabled();
+}

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h (209229 => 209230)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h	2016-12-02 03:30:37 UTC (rev 209230)
@@ -450,6 +450,10 @@
 WK_EXPORT void WKPreferencesSetIntersectionObserverEnabled(WKPreferencesRef, bool flag);
 WK_EXPORT bool WKPreferencesGetIntersectionObserverEnabled(WKPreferencesRef);
 
+// Defaults to true
+WK_EXPORT void WKPreferencesSetSubtleCryptoEnabled(WKPreferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetSubtleCryptoEnabled(WKPreferencesRef);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp (209229 => 209230)


--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp	2016-12-02 03:30:37 UTC (rev 209230)
@@ -221,6 +221,11 @@
         RuntimeEnabledFeatures::sharedFeatures().setEncryptedMediaAPIEnabled(enabled);
 #endif
 
+#if ENABLE(SUBTLE_CRYPTO)
+    if (preference == "WebKitSubtleCryptoEnabled")
+        RuntimeEnabledFeatures::sharedFeatures().setSubtleCryptoEnabled(enabled);
+#endif
+
     // Map the names used in LayoutTests with the names used in WebCore::Settings and WebPreferencesStore.
 #define FOR_EACH_OVERRIDE_BOOL_PREFERENCE(macro) \
     macro(WebKitAcceleratedCompositingEnabled, AcceleratedCompositingEnabled, acceleratedCompositingEnabled) \

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (209229 => 209230)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2016-12-02 03:30:37 UTC (rev 209230)
@@ -3209,6 +3209,10 @@
         updateThrottleState();
     }
 
+#if ENABLE(SUBTLE_CRYPTO)
+    RuntimeEnabledFeatures::sharedFeatures().setSubtleCryptoEnabled(store.getBoolValueForKey(WebPreferencesKey::subtleCryptoEnabledKey()));
+#endif
+
     platformPreferencesDidChange(store);
 
     if (m_drawingArea)

Modified: trunk/Tools/ChangeLog (209229 => 209230)


--- trunk/Tools/ChangeLog	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Tools/ChangeLog	2016-12-02 03:30:37 UTC (rev 209230)
@@ -1,3 +1,18 @@
+2016-12-01  Jiewen Tan  <jiewen_...@apple.com>
+
+        Add a runtime flag for SubtleCrypto
+        https://bugs.webkit.org/show_bug.cgi?id=164982
+
+        Reviewed by Brent Fulgham.
+
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (resetWebPreferencesToConsistentValues):
+        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
+        (WTR::InjectedBundle::beginTesting):
+        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
+        (WTR::TestRunner::setSubtleCryptoEnabled):
+        * WebKitTestRunner/InjectedBundle/TestRunner.h:
+
 2016-12-01  Alexey Proskuryakov  <a...@apple.com>
 
         Remove webkitpy dependency on Eliza

Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (209229 => 209230)


--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2016-12-02 03:30:37 UTC (rev 209230)
@@ -1001,6 +1001,8 @@
     preferences.intersectionObserverEnabled = options.enableIntersectionObserver;
     preferences.modernMediaControlsEnabled = options.enableModernMediaControls;
 
+    [preferences setSubtleCryptoEnabled:YES];
+
     [WebPreferences _clearNetworkLoaderSession];
     [WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];
 }

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp (209229 => 209230)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp	2016-12-02 03:30:37 UTC (rev 209230)
@@ -335,6 +335,8 @@
     m_testRunner->setTabKeyCyclesThroughElements(true);
     m_testRunner->clearTestRunnerCallbacks();
 
+    m_testRunner->setSubtleCryptoEnabled(true);
+
     if (m_timeout > 0)
         m_testRunner->setCustomTimeout(m_timeout);
 

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp (209229 => 209230)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp	2016-12-02 03:30:37 UTC (rev 209230)
@@ -354,6 +354,13 @@
     WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled);
 }
 
+void TestRunner::setSubtleCryptoEnabled(bool enabled)
+{
+    WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitSubtleCryptoEnabled"));
+    auto& injectedBundle = InjectedBundle::singleton();
+    WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled);
+}
+
 void TestRunner::setDOMIteratorEnabled(bool enabled)
 {
     WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitDOMIteratorEnabled"));

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h (209229 => 209230)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h	2016-12-02 02:38:23 UTC (rev 209229)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h	2016-12-02 03:30:37 UTC (rev 209230)
@@ -129,6 +129,7 @@
     void setAllowsAnySSLCertificate(bool);
     void setES6ModulesEnabled(bool);
     void setEncryptedMediaAPIEnabled(bool);
+    void setSubtleCryptoEnabled(bool);
 
     // Special DOM functions.
     void clearBackForwardList();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to