Title: [213676] trunk
Revision
213676
Author
[email protected]
Date
2017-03-09 14:40:25 -0800 (Thu, 09 Mar 2017)

Log Message

Guard Credential Management implementation behind a runtime enabled feature flag
https://bugs.webkit.org/show_bug.cgi?id=169364
<rdar://problem/30957425>

Reviewed by Brent Fulgham.

Source/_javascript_Core:

Add common identifiers for Credential, PasswordCredential, and SiteBoundCredential that are
needed to guard these interfaces behind a runtime enabled feature flag.

* runtime/CommonIdentifiers.h:

Source/WebCore:

Add a runtime enabled feature flag for Credential Management (disabled by default).
Once we are happy with this feature we can enable the feature by default or remove the
the runtime enabled feature flag so as to enable it by default.

* Modules/credentials/BasicCredential.idl: Enable only if the runtime enabled feature flag is
 enabled.
* Modules/credentials/PasswordCredential.idl: Ditto.
* Modules/credentials/SiteBoundCredential.idl: Ditto.
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setCredentialManagementEnabled): Added.
(WebCore::RuntimeEnabledFeatures::credentialManagementEnabled): Added.

Source/WebKit/mac:

Add WebKit preference for Credential Management (disabled by default).

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences credentialManagementEnabled]): Added.
(-[WebPreferences setCredentialManagementEnabled:]): Added.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:

Add WebKit2 preference for Credential Management (disabled by default).

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetCredentialManagementEnabled): Added.
(WKPreferencesGetCredentialManagementEnabled): Added.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

Add a new test option header, enableCredentialManagement, to DumpRenderTree/WebKitTestRunner
to enable Credential Management.

* DumpRenderTree/TestOptions.h:
* DumpRenderTree/TestOptions.mm:
(TestOptions::TestOptions):
* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(setWebPreferencesForTestOptions):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:

LayoutTests:

* credentials/idlharness.html: Use comment header to enable Credential Management API.
* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt: Update expected results now
that we no longer expose the Credential Management API by default.
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt: Ditto.
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt: Ditto.
* platform/mac/js/dom/global-constructors-attributes-expected.txt: Ditto.
* platform/win/TestExpectations: For now, skip the Credential Management API tests.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (213675 => 213676)


--- trunk/LayoutTests/ChangeLog	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/LayoutTests/ChangeLog	2017-03-09 22:40:25 UTC (rev 213676)
@@ -1,3 +1,19 @@
+2017-03-09  Daniel Bates  <[email protected]>
+
+        Guard Credential Management implementation behind a runtime enabled feature flag
+        https://bugs.webkit.org/show_bug.cgi?id=169364
+        <rdar://problem/30957425>
+
+        Reviewed by Brent Fulgham.
+
+        * credentials/idlharness.html: Use comment header to enable Credential Management API.
+        * platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt: Update expected results now
+        that we no longer expose the Credential Management API by default.
+        * platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt: Ditto.
+        * platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt: Ditto.
+        * platform/mac/js/dom/global-constructors-attributes-expected.txt: Ditto.
+        * platform/win/TestExpectations: For now, skip the Credential Management API tests.
+
 2017-03-09  Yoav Weiss  <[email protected]>
 
         [link preload] Double downloads of preloaded CSS

Modified: trunk/LayoutTests/credentials/idlharness.html (213675 => 213676)


--- trunk/LayoutTests/credentials/idlharness.html	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/LayoutTests/credentials/idlharness.html	2017-03-09 22:40:25 UTC (rev 213676)
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!DOCTYPE html><!-- webkit-test-runner [ enableCredentialManagement=true ] -->
 <script src=""
 <script src=""
 <script src=""

Modified: trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt (213675 => 213676)


--- trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:40:25 UTC (rev 213676)
@@ -303,11 +303,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').value is Credential
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').value is Crypto
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('set') is false
@@ -1173,11 +1168,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').value is PasswordCredential
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').value is Path2D
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('set') is false
@@ -2108,11 +2098,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').value is SiteBoundCredential
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').value is SourceBuffer
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt (213675 => 213676)


--- trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/LayoutTests/platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:40:25 UTC (rev 213676)
@@ -303,11 +303,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').value is Credential
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').value is Crypto
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('set') is false
@@ -1173,11 +1168,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').value is PasswordCredential
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').value is Path2D
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('set') is false
@@ -2108,11 +2098,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').value is SiteBoundCredential
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').value is SourceBuffer
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt (213675 => 213676)


--- trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:40:25 UTC (rev 213676)
@@ -303,11 +303,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').value is Credential
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').value is Crypto
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('set') is false
@@ -1173,11 +1168,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').value is PasswordCredential
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').value is Path2D
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('set') is false
@@ -2108,11 +2098,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').value is SiteBoundCredential
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').value is SourceBuffer
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt (213675 => 213676)


--- trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt	2017-03-09 22:40:25 UTC (rev 213676)
@@ -298,11 +298,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'Counter').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').value is Credential
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'Credential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').value is Crypto
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('set') is false
@@ -1163,11 +1158,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'PageTransitionEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').value is PasswordCredential
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'PasswordCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').value is Path2D
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'Path2D').hasOwnProperty('set') is false
@@ -2098,11 +2088,6 @@
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').value is SiteBoundCredential
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'SiteBoundCredential').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').value is SourceBuffer
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'SourceBuffer').hasOwnProperty('set') is false

Modified: trunk/LayoutTests/platform/win/TestExpectations (213675 => 213676)


--- trunk/LayoutTests/platform/win/TestExpectations	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/LayoutTests/platform/win/TestExpectations	2017-03-09 22:40:25 UTC (rev 213676)
@@ -644,6 +644,9 @@
 
 webkit.org/b/158836 imported/w3c/web-platform-tests/encrypted-media [ Skip ]
 
+# Credential Management not supported
+credentials/ [ Skip ]
+
 ################################################################################
 ###########    End Missing Functionality Prevents Testing         ##############
 ################################################################################

Modified: trunk/Source/_javascript_Core/ChangeLog (213675 => 213676)


--- trunk/Source/_javascript_Core/ChangeLog	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/_javascript_Core/ChangeLog	2017-03-09 22:40:25 UTC (rev 213676)
@@ -1,3 +1,16 @@
+2017-03-09  Daniel Bates  <[email protected]>
+
+        Guard Credential Management implementation behind a runtime enabled feature flag
+        https://bugs.webkit.org/show_bug.cgi?id=169364
+        <rdar://problem/30957425>
+
+        Reviewed by Brent Fulgham.
+
+        Add common identifiers for Credential, PasswordCredential, and SiteBoundCredential that are
+        needed to guard these interfaces behind a runtime enabled feature flag.
+
+        * runtime/CommonIdentifiers.h:
+
 2017-03-09  Mark Lam  <[email protected]>
 
         Refactoring some HeapVerifier code.
@@ -6120,8 +6133,8 @@
         sum of the depths of its nodes, with a node's depth equal to the number
         of frames in its associated call stack. For any stack trace,
 
-            S = { s𝟶, s𝟷, …, s𝑘 }, with endpoints s𝟶, s𝑘
-            depth(S) = depth(s𝟶) + depth(s𝟷) + … + depth(s𝑘)
+            S = { sퟶ, sퟷ, …, s푘 }, with endpoints sퟶ, s푘
+            depth(S) = depth(sퟶ) + depth(sퟷ) + … + depth(s푘)
 
         A stack trace is truncated when it exceeds the maximum depth. Truncation
         occurs on node boundaries, not call frames, consequently the maximum depth
@@ -6128,7 +6141,7 @@
         is more of a target than a guarantee:
 
             d = maximum stack trace depth
-            for all S, depth(S) ≤ d + depth(s𝑘)
+            for all S, depth(S) ≤ d + depth(s푘)
 
         Because nodes can belong to multiple stack traces, it may be necessary
         to clone the tail of a stack trace being truncated to prevent other traces
@@ -6221,8 +6234,8 @@
         sum of the depths of its nodes, with a node's depth equal to the number
         of frames in its associated call stack. For any stack trace,
 
-            S = { s𝟶, s𝟷, …, s𝑘 }, with endpoints s𝟶, s𝑘
-            depth(S) = depth(s𝟶) + depth(s𝟷) + … + depth(s𝑘)
+            S = { sퟶ, sퟷ, …, s푘 }, with endpoints sퟶ, s푘
+            depth(S) = depth(sퟶ) + depth(sퟷ) + … + depth(s푘)
 
         A stack trace is truncated when it exceeds the maximum depth. Truncation
         occurs on node boundaries, not call frames, consequently the maximum depth
@@ -6229,7 +6242,7 @@
         is more of a target than a guarantee:
 
             d = maximum stack trace depth
-            for all S, depth(S) ≤ d + depth(s𝑘)
+            for all S, depth(S) ≤ d + depth(s푘)
 
         Because nodes can belong to multiple stack traces, it may be necessary
         to clone the tail of a stack trace being truncated to prevent other traces

Modified: trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h (213675 => 213676)


--- trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -36,6 +36,7 @@
     macro(BYTES_PER_ELEMENT) \
     macro(Boolean) \
     macro(Collator) \
+    macro(Credential) \
     macro(CustomElementRegistry) \
     macro(Date) \
     macro(DateTimeFormat) \
@@ -85,6 +86,7 @@
     macro(Number) \
     macro(NumberFormat) \
     macro(Object) \
+    macro(PasswordCredential) \
     macro(PerformanceEntry) \
     macro(PerformanceEntryList) \
     macro(PerformanceMark) \
@@ -112,6 +114,7 @@
     macro(SetIterator)\
     macro(ShadowRoot) \
     macro(SharedArrayBuffer) \
+    macro(SiteBoundCredential) \
     macro(StaticRange) \
     macro(String) \
     macro(Symbol) \

Modified: trunk/Source/WebCore/ChangeLog (213675 => 213676)


--- trunk/Source/WebCore/ChangeLog	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebCore/ChangeLog	2017-03-09 22:40:25 UTC (rev 213676)
@@ -1,3 +1,23 @@
+2017-03-09  Daniel Bates  <[email protected]>
+
+        Guard Credential Management implementation behind a runtime enabled feature flag
+        https://bugs.webkit.org/show_bug.cgi?id=169364
+        <rdar://problem/30957425>
+
+        Reviewed by Brent Fulgham.
+
+        Add a runtime enabled feature flag for Credential Management (disabled by default).
+        Once we are happy with this feature we can enable the feature by default or remove the
+        the runtime enabled feature flag so as to enable it by default.
+
+        * Modules/credentials/BasicCredential.idl: Enable only if the runtime enabled feature flag is
+         enabled.
+        * Modules/credentials/PasswordCredential.idl: Ditto.
+        * Modules/credentials/SiteBoundCredential.idl: Ditto.
+        * page/RuntimeEnabledFeatures.h:
+        (WebCore::RuntimeEnabledFeatures::setCredentialManagementEnabled): Added.
+        (WebCore::RuntimeEnabledFeatures::credentialManagementEnabled): Added.
+
 2017-03-09  Anders Carlsson  <[email protected]>
 
         Add delegate support to WebCore

Modified: trunk/Source/WebCore/Modules/credentials/BasicCredential.idl (213675 => 213676)


--- trunk/Source/WebCore/Modules/credentials/BasicCredential.idl	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebCore/Modules/credentials/BasicCredential.idl	2017-03-09 22:40:25 UTC (rev 213676)
@@ -25,6 +25,7 @@
 
 [
     InterfaceName=Credential,
+    EnabledAtRuntime=CredentialManagement,
 ] interface BasicCredential {
     readonly attribute USVString id;
     readonly attribute DOMString type;

Modified: trunk/Source/WebCore/Modules/credentials/PasswordCredential.idl (213675 => 213676)


--- trunk/Source/WebCore/Modules/credentials/PasswordCredential.idl	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebCore/Modules/credentials/PasswordCredential.idl	2017-03-09 22:40:25 UTC (rev 213676)
@@ -26,6 +26,7 @@
 typedef (DOMFormData or URLSearchParams) CredentialBodyType;
 
 [
+    EnabledAtRuntime=CredentialManagement,
     Constructor(PasswordCredentialData data),
     Constructor(HTMLFormElement form),
     Exposed=Window,

Modified: trunk/Source/WebCore/Modules/credentials/SiteBoundCredential.idl (213675 => 213676)


--- trunk/Source/WebCore/Modules/credentials/SiteBoundCredential.idl	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebCore/Modules/credentials/SiteBoundCredential.idl	2017-03-09 22:40:25 UTC (rev 213676)
@@ -23,7 +23,9 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SiteBoundCredential : BasicCredential {
+[
+    EnabledAtRuntime=CredentialManagement,
+] interface SiteBoundCredential : BasicCredential {
     readonly attribute USVString name;
     readonly attribute USVString iconURL;
 };

Modified: trunk/Source/WebCore/page/RuntimeEnabledFeatures.h (213675 => 213676)


--- trunk/Source/WebCore/page/RuntimeEnabledFeatures.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebCore/page/RuntimeEnabledFeatures.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -75,6 +75,9 @@
     void setModernMediaControlsEnabled(bool areEnabled) { m_areModernMediaControlsEnabled = areEnabled; }
     bool modernMediaControlsEnabled() const { return m_areModernMediaControlsEnabled; }
 
+    void setCredentialManagementEnabled(bool isEnabled) { m_isCredentialManagementEnabled = isEnabled; }
+    bool credentialManagementEnabled() const { return m_isCredentialManagementEnabled; }
+
 #if ENABLE(INDEXED_DATABASE_IN_WORKERS)
     void setIndexedDBWorkersEnabled(bool isEnabled) { m_isIndexedDBWorkersEnabled = isEnabled; }
     bool indexedDBWorkersEnabled() const { return m_isIndexedDBWorkersEnabled; }
@@ -210,6 +213,7 @@
     bool m_isResourceTimingEnabled { false };
     bool m_isUserTimingEnabled { false };
     bool m_isInteractiveFormValidationEnabled { false };
+    bool m_isCredentialManagementEnabled { false };
 
     bool m_isDOMIteratorEnabled { true };
     bool m_isGeolocationEnabled { true };

Modified: trunk/Source/WebKit/mac/ChangeLog (213675 => 213676)


--- trunk/Source/WebKit/mac/ChangeLog	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit/mac/ChangeLog	2017-03-09 22:40:25 UTC (rev 213676)
@@ -1,3 +1,22 @@
+2017-03-09  Daniel Bates  <[email protected]>
+
+        Guard Credential Management implementation behind a runtime enabled feature flag
+        https://bugs.webkit.org/show_bug.cgi?id=169364
+        <rdar://problem/30957425>
+
+        Reviewed by Brent Fulgham.
+
+        Add WebKit preference for Credential Management (disabled by default).
+
+        * WebView/WebPreferenceKeysPrivate.h:
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences credentialManagementEnabled]): Added.
+        (-[WebPreferences setCredentialManagementEnabled:]): Added.
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChanged:]):
+
 2017-03-09  Anders Carlsson  <[email protected]>
 
         Add delegate support to WebCore

Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (213675 => 213676)


--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -178,6 +178,7 @@
 #define WebKitMediaStreamEnabledPreferenceKey @"WebKitMediaStreamEnabled"
 #define WebKitPeerConnectionEnabledPreferenceKey @"WebKitPeerConnectionEnabled"
 #define WebKitLinkPreloadEnabledPreferenceKey @"WebKitLinkPreloadEnabled"
+#define WebKitCredentialManagementEnabledPreferenceKey @"WebKitCredentialManagementEnabled"
 
 #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 (213675 => 213676)


--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2017-03-09 22:40:25 UTC (rev 213676)
@@ -661,6 +661,7 @@
 #endif
         @NO, WebKitUserTimingEnabledPreferenceKey,
         @NO, WebKitResourceTimingEnabledPreferenceKey,
+        @NO, WebKitCredentialManagementEnabledPreferenceKey,
         nil];
 
 #if !PLATFORM(IOS)
@@ -2994,6 +2995,16 @@
     [self _setBoolValue:flag forKey:WebKitResourceTimingEnabledPreferenceKey];
 }
 
+- (BOOL)credentialManagementEnabled
+{
+    return [self _boolValueForKey:WebKitCredentialManagementEnabledPreferenceKey];
+}
+
+- (void)setCredentialManagementEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitCredentialManagementEnabledPreferenceKey];
+}
+
 #if PLATFORM(IOS)
 - (BOOL)quickLookDocumentSavingEnabled
 {

Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (213675 => 213676)


--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -529,6 +529,9 @@
 - (void)setModernMediaControlsEnabled:(BOOL)flag;
 - (BOOL)modernMediaControlsEnabled;
 
+- (void)setCredentialManagementEnabled:(BOOL)flag;
+- (BOOL)credentialManagementEnabled;
+
 @property (nonatomic) BOOL visualViewportEnabled;
 @property (nonatomic) BOOL largeImageAsyncDecodingEnabled;
 @property (nonatomic) BOOL animatedImageAsyncDecodingEnabled;
@@ -540,6 +543,7 @@
 @property (nonatomic) BOOL userTimingEnabled;
 @property (nonatomic) BOOL resourceTimingEnabled;
 @property (nonatomic) BOOL linkPreloadEnabled;
+@property (nonatomic) BOOL credentialManagementEnabled;
 
 #if TARGET_OS_IPHONE
 @property (nonatomic) BOOL quickLookDocumentSavingEnabled;

Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (213675 => 213676)


--- trunk/Source/WebKit/mac/WebView/WebView.mm	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm	2017-03-09 22:40:25 UTC (rev 213676)
@@ -2928,6 +2928,7 @@
     RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(preferences.userTimingEnabled);
     RuntimeEnabledFeatures::sharedFeatures().setResourceTimingEnabled(preferences.resourceTimingEnabled);
     RuntimeEnabledFeatures::sharedFeatures().setLinkPreloadEnabled(preferences.linkPreloadEnabled);
+    RuntimeEnabledFeatures::sharedFeatures().setCredentialManagementEnabled(preferences.credentialManagementEnabled);
 
     NSTimeInterval timeout = [preferences incrementalRenderingSuppressionTimeoutInSeconds];
     if (timeout > 0)

Modified: trunk/Source/WebKit2/ChangeLog (213675 => 213676)


--- trunk/Source/WebKit2/ChangeLog	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit2/ChangeLog	2017-03-09 22:40:25 UTC (rev 213676)
@@ -1,3 +1,21 @@
+2017-03-09  Daniel Bates  <[email protected]>
+
+        Guard Credential Management implementation behind a runtime enabled feature flag
+        https://bugs.webkit.org/show_bug.cgi?id=169364
+        <rdar://problem/30957425>
+
+        Reviewed by Brent Fulgham.
+
+        Add WebKit2 preference for Credential Management (disabled by default).
+
+        * Shared/WebPreferencesDefinitions.h:
+        * UIProcess/API/C/WKPreferences.cpp:
+        (WKPreferencesSetCredentialManagementEnabled): Added.
+        (WKPreferencesGetCredentialManagementEnabled): Added.
+        * UIProcess/API/C/WKPreferencesRefPrivate.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updatePreferences):
+
 2017-03-09  Andy Estes  <[email protected]>
 
         [iOS] Add SPI to print to a single tall PDF page

Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (213675 => 213676)


--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -251,6 +251,7 @@
     macro(CSSGridLayoutEnabled, cssGridLayoutEnabled, Bool, bool, true, "CSS Grid", "CSS Grid Layout Module support") \
     macro(GamepadsEnabled, gamepadsEnabled, Bool, bool, true, "Gamepads", "Web Gamepad API support") \
     macro(InputEventsEnabled, inputEventsEnabled, Bool, bool, true, "Input Events", "Enable InputEvents support") \
+    macro(CredentialManagementEnabled, credentialManagementEnabled, Bool, bool, false, "Credential Management", "Enable Credential Management support") \
     \
 
 #define FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \

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


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2017-03-09 22:40:25 UTC (rev 213676)
@@ -842,6 +842,16 @@
     return toImpl(preferencesRef)->modernMediaControlsEnabled();
 }
 
+void WKPreferencesSetCredentialManagementEnabled(WKPreferencesRef preferencesRef, bool flag)
+{
+    toImpl(preferencesRef)->setCredentialManagementEnabled(flag);
+}
+
+bool WKPreferencesGetCredentialManagementEnabled(WKPreferencesRef preferencesRef)
+{
+    return toImpl(preferencesRef)->credentialManagementEnabled();
+}
+
 void WKPreferencesSetShowsToolTipOverTruncatedText(WKPreferencesRef preferencesRef, bool flag)
 {
     toImpl(preferencesRef)->setShowsToolTipOverTruncatedText(flag);

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


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -481,6 +481,10 @@
 WK_EXPORT void WKPreferencesSetLinkPreloadEnabled(WKPreferencesRef, bool flag);
 WK_EXPORT bool WKPreferencesGetLinkPreloadEnabled(WKPreferencesRef);
 
+// Defaults to false
+WK_EXPORT void WKPreferencesSetCredentialManagementEnabled(WKPreferencesRef, bool flag);
+WK_EXPORT bool WKPreferencesGetCredentialManagementEnabled(WKPreferencesRef);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (213675 => 213676)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2017-03-09 22:40:25 UTC (rev 213676)
@@ -3262,6 +3262,7 @@
     RuntimeEnabledFeatures::sharedFeatures().setUserTimingEnabled(store.getBoolValueForKey(WebPreferencesKey::userTimingEnabledKey()));
     RuntimeEnabledFeatures::sharedFeatures().setResourceTimingEnabled(store.getBoolValueForKey(WebPreferencesKey::resourceTimingEnabledKey()));
     RuntimeEnabledFeatures::sharedFeatures().setLinkPreloadEnabled(store.getBoolValueForKey(WebPreferencesKey::linkPreloadEnabledKey()));
+    RuntimeEnabledFeatures::sharedFeatures().setCredentialManagementEnabled(store.getBoolValueForKey(WebPreferencesKey::credentialManagementEnabledKey()));
 
     bool processSuppressionEnabled = store.getBoolValueForKey(WebPreferencesKey::pageVisibilityBasedProcessSuppressionEnabledKey());
     if (m_processSuppressionEnabled != processSuppressionEnabled) {

Modified: trunk/Tools/ChangeLog (213675 => 213676)


--- trunk/Tools/ChangeLog	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Tools/ChangeLog	2017-03-09 22:40:25 UTC (rev 213676)
@@ -1,3 +1,25 @@
+2017-03-09  Daniel Bates  <[email protected]>
+
+        Guard Credential Management implementation behind a runtime enabled feature flag
+        https://bugs.webkit.org/show_bug.cgi?id=169364
+        <rdar://problem/30957425>
+
+        Reviewed by Brent Fulgham.
+
+        Add a new test option header, enableCredentialManagement, to DumpRenderTree/WebKitTestRunner
+        to enable Credential Management.
+
+        * DumpRenderTree/TestOptions.h:
+        * DumpRenderTree/TestOptions.mm:
+        (TestOptions::TestOptions):
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (enableExperimentalFeatures):
+        (setWebPreferencesForTestOptions):
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::resetPreferencesToConsistentValues):
+        (WTR::updateTestOptionsFromTestHeader):
+        * WebKitTestRunner/TestOptions.h:
+
 2017-03-09  Anders Carlsson  <[email protected]>
 
         Add delegate support to WebCore

Modified: trunk/Tools/DumpRenderTree/TestOptions.h (213675 => 213676)


--- trunk/Tools/DumpRenderTree/TestOptions.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Tools/DumpRenderTree/TestOptions.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -32,6 +32,7 @@
     bool enableIntersectionObserver { false };
     bool enableModernMediaControls { true };
     bool enablePointerLock { false };
+    bool enableCredentialManagement { false };
 
     TestOptions(NSURL*, const TestCommand&);
 };

Modified: trunk/Tools/DumpRenderTree/TestOptions.mm (213675 => 213676)


--- trunk/Tools/DumpRenderTree/TestOptions.mm	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Tools/DumpRenderTree/TestOptions.mm	2017-03-09 22:40:25 UTC (rev 213676)
@@ -86,6 +86,8 @@
             this->enableModernMediaControls = parseBooleanTestHeaderValue(value);
         else if (key == "enablePointerLock")
             this->enablePointerLock = parseBooleanTestHeaderValue(value);
+        else if (key == "enableCredentialManagement")
+            this->enableCredentialManagement = parseBooleanTestHeaderValue(value);
         pairStart = pairEnd + 1;
     }
 }

Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (213675 => 213676)


--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2017-03-09 22:40:25 UTC (rev 213676)
@@ -849,6 +849,7 @@
     [preferences setWebGL2Enabled:YES];
     [preferences setWebGPUEnabled:YES];
     [preferences setPeerConnectionEnabled:YES];
+    [preferences setCredentialManagementEnabled:YES];
 }
 
 // Called before each test.
@@ -968,6 +969,7 @@
 
     preferences.intersectionObserverEnabled = options.enableIntersectionObserver;
     preferences.modernMediaControlsEnabled = options.enableModernMediaControls;
+    preferences.credentialManagementEnabled = options.enableCredentialManagement;
 }
 
 // Called once on DumpRenderTree startup.

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (213675 => 213676)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2017-03-09 22:40:25 UTC (rev 213676)
@@ -678,6 +678,7 @@
     WKPreferencesSetNeedsSiteSpecificQuirks(preferences, options.needsSiteSpecificQuirks);
     WKPreferencesSetIntersectionObserverEnabled(preferences, options.enableIntersectionObserver);
     WKPreferencesSetModernMediaControlsEnabled(preferences, options.enableModernMediaControls);
+    WKPreferencesSetCredentialManagementEnabled(preferences, options.enableCredentialManagement);
 
     static WKStringRef defaultTextEncoding = WKStringCreateWithUTF8CString("ISO-8859-1");
     WKPreferencesSetDefaultTextEncodingName(preferences, defaultTextEncoding);
@@ -1005,6 +1006,8 @@
             testOptions.enableModernMediaControls = parseBooleanTestHeaderValue(value);
         if (key == "enablePointerLock")
             testOptions.enablePointerLock = parseBooleanTestHeaderValue(value);
+        if (key == "enableCredentialManagement")
+            testOptions.enableCredentialManagement = parseBooleanTestHeaderValue(value);
         pairStart = pairEnd + 1;
     }
 }

Modified: trunk/Tools/WebKitTestRunner/TestOptions.h (213675 => 213676)


--- trunk/Tools/WebKitTestRunner/TestOptions.h	2017-03-09 22:39:09 UTC (rev 213675)
+++ trunk/Tools/WebKitTestRunner/TestOptions.h	2017-03-09 22:40:25 UTC (rev 213676)
@@ -46,6 +46,7 @@
     bool enableIntersectionObserver { false };
     bool enableModernMediaControls { true };
     bool enablePointerLock { false };
+    bool enableCredentialManagement { false };
 
     float deviceScaleFactor { 1 };
     Vector<String> overrideLanguages;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to