Title: [209643] trunk
Revision
209643
Author
eric.carl...@apple.com
Date
2016-12-09 18:46:31 -0800 (Fri, 09 Dec 2016)

Log Message

Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
https://bugs.webkit.org/show_bug.cgi?id=165251

Reviewed by Dean Jackson.

Based on a patch by Dr Alex Gouaillard <agouaill...@gmail.com>
Source/_javascript_Core:

* runtime/CommonIdentifiers.h: Add WebRTC and MediaStream identifiers.

Source/WebCore:

No new tests, covered by existing tests.

* Modules/mediastream/MediaStreamEvent.idl: Add "EnabledAtRuntime".
* Modules/mediastream/NavigatorMediaDevices.idl: Ditto.
* Modules/mediastream/NavigatorUserMedia.idl: Ditto.
* Modules/mediastream/RTCDTMFToneChangeEvent.idl: Ditto.
* Modules/mediastream/RTCIceCandidate.idl: Ditto.
* Modules/mediastream/RTCPeerConnection.idl: Ditto.
* Modules/mediastream/RTCRtpReceiver.idl: Ditto.
* Modules/mediastream/RTCRtpSender.idl: Ditto.
* Modules/mediastream/RTCRtpTransceiver.idl: Ditto.
* Modules/mediastream/RTCSessionDescription.idl: Ditto.
* Modules/mediastream/RTCTrackEvent.idl: Ditto.

* bindings/generic/RuntimeEnabledFeatures.cpp:
(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures): Set m_isMediaStreamEnabled in the
  constructor instead of in reset() because the later is called by the Internals constructor,
  making it impossible to override the runtime flag from WTR or DRT.
(WebCore::RuntimeEnabledFeatures::reset): Don't set m_isMediaStreamEnabled.
* page/Settings.in: Add peerConnectionEnabled.

Source/WebKit/mac:

* WebView/WebPreferenceKeysPrivate.h: Add MediaStream and PeerConnection preferences.
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences mediaStreamEnabled]):
(-[WebPreferences setMediaStreamEnabled:]):
(-[WebPreferences peerConnectionEnabled]):
(-[WebPreferences setPeerConnectionEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h: Add peerConnectionEnabled.

* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetPeerConnectionEnabled): Added.
(WKPreferencesGetPeerConnectionEnabled): Added.
* UIProcess/API/C/WKPreferencesRef.h:

* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Add WebKitMediaStreamEnabled
  and WebKitPeerConnectionEnabled.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Initialize the peerConnection preference.

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues): Enable MediaStream and PeerConnection.

* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting): Ditto.

* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setMediaStreamEnabled): New.
(WTR::TestRunner::setPeerConnectionEnabled): New.
* WebKitTestRunner/InjectedBundle/TestRunner.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (209642 => 209643)


--- trunk/Source/_javascript_Core/ChangeLog	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-12-10 02:46:31 UTC (rev 209643)
@@ -1,3 +1,14 @@
+2016-12-09  Eric Carlson  <eric.carl...@apple.com>
+
+        Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
+        https://bugs.webkit.org/show_bug.cgi?id=165251
+
+        Reviewed by Dean Jackson.
+
+        Based on a patch by Dr Alex Gouaillard <agouaill...@gmail.com>
+
+        * runtime/CommonIdentifiers.h: Add WebRTC and MediaStream identifiers.
+
 2016-12-09  JF Bastien  <jfbast...@apple.com>
 
         WebAssembly JS API: implement start function

Modified: trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h (209642 => 209643)


--- trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/_javascript_Core/runtime/CommonIdentifiers.h	2016-12-10 02:46:31 UTC (rev 209643)
@@ -78,8 +78,11 @@
     macro(MediaKeyStatusMap) \
     macro(MediaKeySystemAccess) \
     macro(MediaKeys) \
+    macro(MediaStreamEvent) \
     macro(ModernMediaControls) \
     macro(NaN) \
+    macro(NavigatorMediaDevices) \
+    macro(NavigatorUserMedia) \
     macro(Number) \
     macro(NumberFormat) \
     macro(Object) \
@@ -94,6 +97,14 @@
     macro(RegExp) \
     macro(Response) \
     macro(Request) \
+    macro(RTCDTMFToneChangeEvent) \
+    macro(RTCIceCandidate) \
+    macro(RTCPeerConnection) \
+    macro(RTCRtpReceiver) \
+    macro(RTCRtpSender) \
+    macro(RTCRtpTransceiver) \
+    macro(RTCSessionDescription) \
+    macro(RTCTrackEvent) \
     macro(Set)\
     macro(SetIterator)\
     macro(ShadowRoot) \

Modified: trunk/Source/WebCore/ChangeLog (209642 => 209643)


--- trunk/Source/WebCore/ChangeLog	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/ChangeLog	2016-12-10 02:46:31 UTC (rev 209643)
@@ -1,3 +1,32 @@
+2016-12-09  Eric Carlson  <eric.carl...@apple.com>
+
+        Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
+        https://bugs.webkit.org/show_bug.cgi?id=165251
+
+        Reviewed by Dean Jackson.
+
+        Based on a patch by Dr Alex Gouaillard <agouaill...@gmail.com>
+        No new tests, covered by existing tests.
+
+        * Modules/mediastream/MediaStreamEvent.idl: Add "EnabledAtRuntime".
+        * Modules/mediastream/NavigatorMediaDevices.idl: Ditto.
+        * Modules/mediastream/NavigatorUserMedia.idl: Ditto.
+        * Modules/mediastream/RTCDTMFToneChangeEvent.idl: Ditto.
+        * Modules/mediastream/RTCIceCandidate.idl: Ditto.
+        * Modules/mediastream/RTCPeerConnection.idl: Ditto.
+        * Modules/mediastream/RTCRtpReceiver.idl: Ditto.
+        * Modules/mediastream/RTCRtpSender.idl: Ditto.
+        * Modules/mediastream/RTCRtpTransceiver.idl: Ditto.
+        * Modules/mediastream/RTCSessionDescription.idl: Ditto.
+        * Modules/mediastream/RTCTrackEvent.idl: Ditto.
+
+        * bindings/generic/RuntimeEnabledFeatures.cpp:
+        (WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures): Set m_isMediaStreamEnabled in the
+          constructor instead of in reset() because the later is called by the Internals constructor,
+          making it impossible to override the runtime flag from WTR or DRT.
+        (WebCore::RuntimeEnabledFeatures::reset): Don't set m_isMediaStreamEnabled.
+        * page/Settings.in: Add peerConnectionEnabled.
+
 2016-12-09  Daniel Bates  <daba...@apple.com>
 
         Remove QuickLook scheme from the list of secure schemes

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamEvent.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamEvent.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamEvent.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -25,6 +25,7 @@
 [
     Conditional=WEB_RTC,
     Constructor(DOMString type, MediaStreamEventInit eventInitDict),
+    EnabledAtRuntime=mediaStream,
 ] interface MediaStreamEvent : Event {
     readonly attribute MediaStream? stream;
 };

Modified: trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -30,6 +30,7 @@
 
 [
     Conditional=MEDIA_STREAM,
+    EnabledAtRuntime=mediaStream,
 ] partial interface Navigator {
     readonly attribute MediaDevices mediaDevices;
 };

Modified: trunk/Source/WebCore/Modules/mediastream/NavigatorUserMedia.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorUserMedia.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorUserMedia.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -19,6 +19,7 @@
 
 [
     Conditional=MEDIA_STREAM,
+    EnabledAtRuntime=mediaStream,
 ] partial interface Navigator {
     [JSBuiltin] void webkitGetUserMedia(MediaStreamConstraints constraints, NavigatorUserMediaSuccessCallback successCallback, NavigatorUserMediaErrorCallback errorCallback);
 };

Modified: trunk/Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -26,6 +26,7 @@
 [
     Conditional=WEB_RTC,
     Constructor(DOMString type, optional RTCDTMFToneChangeEventInit eventInitDict),
+    EnabledAtRuntime=peerConnection,
 ] interface RTCDTMFToneChangeEvent : Event {
     readonly attribute DOMString tone;
 };

Modified: trunk/Source/WebCore/Modules/mediastream/RTCIceCandidate.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCIceCandidate.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCIceCandidate.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -33,6 +33,7 @@
     Conditional=WEB_RTC,
     Constructor(Dictionary dictionary),
     ConstructorMayThrowException,
+    EnabledAtRuntime=peerConnection,
     ImplementationLacksVTable,
     PrivateIdentifier,
     PublicIdentifier

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -54,6 +54,7 @@
     ActiveDOMObject,
     Conditional=WEB_RTC,
     ConstructorCallWith=ScriptExecutionContext,
+    EnabledAtRuntime=peerConnection,
     ExportMacro=WEBCORE_EXPORT,
     JSBuiltinConstructor,
 ] interface RTCPeerConnection : EventTarget {

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpReceiver.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpReceiver.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpReceiver.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -29,7 +29,8 @@
  */
 
 [
-    Conditional=WEB_RTC
+    Conditional=WEB_RTC,
+    EnabledAtRuntime=peerConnection,
 ] interface RTCRtpReceiver {
     readonly attribute MediaStreamTrack track;
 };

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpSender.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -30,6 +30,7 @@
 
 [
     Conditional=WEB_RTC,
+    EnabledAtRuntime=peerConnection,
 ] interface RTCRtpSender {
     readonly attribute MediaStreamTrack? track;
 

Modified: trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCRtpTransceiver.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -29,7 +29,8 @@
  */
 
 [
-    Conditional=WEB_RTC
+    Conditional=WEB_RTC,
+    EnabledAtRuntime=peerConnection,
 ] interface RTCRtpTransceiver {
     readonly attribute DOMString? mid;
     readonly attribute RTCRtpSender sender;

Modified: trunk/Source/WebCore/Modules/mediastream/RTCSessionDescription.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCSessionDescription.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSessionDescription.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -33,6 +33,7 @@
     Conditional=WEB_RTC,
     Constructor(Dictionary dictionary),
     ConstructorMayThrowException,
+    EnabledAtRuntime=peerConnection,
     ImplementationLacksVTable,
     PrivateIdentifier,
     PublicIdentifier,

Modified: trunk/Source/WebCore/Modules/mediastream/RTCTrackEvent.idl (209642 => 209643)


--- trunk/Source/WebCore/Modules/mediastream/RTCTrackEvent.idl	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/Modules/mediastream/RTCTrackEvent.idl	2016-12-10 02:46:31 UTC (rev 209643)
@@ -31,6 +31,7 @@
 [
     Conditional=WEB_RTC,
     Constructor(DOMString type, RTCTrackEventInit eventInitDict),
+    EnabledAtRuntime=peerConnection,
 ] interface RTCTrackEvent : Event {
     readonly attribute RTCRtpReceiver receiver;
     readonly attribute MediaStreamTrack track;

Modified: trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp (209642 => 209643)


--- trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp	2016-12-10 02:46:31 UTC (rev 209643)
@@ -42,6 +42,9 @@
 RuntimeEnabledFeatures::RuntimeEnabledFeatures()
 {
     reset();
+#if ENABLE(MEDIA_STREAM) && PLATFORM(COCOA)
+    m_isMediaStreamEnabled = false;
+#endif
 }
 
 void RuntimeEnabledFeatures::reset()
@@ -64,9 +67,6 @@
 #if ENABLE(INDEXED_DATABASE_IN_WORKERS)
     m_isIndexedDBWorkersEnabled = true;
 #endif
-#if ENABLE(MEDIA_STREAM) && PLATFORM(COCOA)
-    m_isMediaStreamEnabled = false;
-#endif
 #if ENABLE(WEB_RTC)
     m_isPeerConnectionEnabled = true;
 #endif

Modified: trunk/Source/WebCore/page/Settings.in (209642 => 209643)


--- trunk/Source/WebCore/page/Settings.in	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebCore/page/Settings.in	2016-12-10 02:46:31 UTC (rev 209643)
@@ -116,6 +116,7 @@
 fullScreenEnabled initial=false, conditional=FULLSCREEN_API
 asynchronousSpellCheckingEnabled initial=false
 mediaStreamEnabled initial=false
+peerConnectionEnabled initial=false
 
 # This feature requires an implementation of ValidationMessageClient.
 interactiveFormValidationEnabled initial=false

Modified: trunk/Source/WebKit/mac/ChangeLog (209642 => 209643)


--- trunk/Source/WebKit/mac/ChangeLog	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit/mac/ChangeLog	2016-12-10 02:46:31 UTC (rev 209643)
@@ -1,3 +1,23 @@
+2016-12-09  Eric Carlson  <eric.carl...@apple.com>
+
+        Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
+        https://bugs.webkit.org/show_bug.cgi?id=165251
+
+        Reviewed by Dean Jackson.
+
+        Based on a patch by Dr Alex Gouaillard <agouaill...@gmail.com>
+
+        * WebView/WebPreferenceKeysPrivate.h: Add MediaStream and PeerConnection preferences.
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        (-[WebPreferences mediaStreamEnabled]):
+        (-[WebPreferences setMediaStreamEnabled:]):
+        (-[WebPreferences peerConnectionEnabled]):
+        (-[WebPreferences setPeerConnectionEnabled:]):
+        * WebView/WebPreferencesPrivate.h:
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChanged:]):
+
 2016-12-09  Ryosuke Niwa  <rn...@webkit.org>
 
         Don’t expose pointer lock in WebKit1 Objective-C API

Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (209642 => 209643)


--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2016-12-10 02:46:31 UTC (rev 209643)
@@ -173,6 +173,8 @@
 #define WebKitVisualViewportEnabledPreferenceKey @"WebKitVisualViewportEnabled"
 #define WebKitModernMediaControlsEnabledPreferenceKey @"WebKitModernMediaControlsEnabled"
 #define WebKitSubtleCryptoEnabledPreferenceKey @"WebKitSubtleCryptoEnabled"
+#define WebKitMediaStreamEnabledPreferenceKey @"WebKitMediaStreamEnabled"
+#define WebKitPeerConnectionEnabledPreferenceKey @"WebKitPeerConnectionEnabled"
 
 #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 (209642 => 209643)


--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2016-12-10 02:46:31 UTC (rev 209643)
@@ -639,6 +639,15 @@
 #if ENABLE(SUBTLE_CRYPTO)
         [NSNumber numberWithBool:YES], WebKitSubtleCryptoEnabledPreferenceKey,
 #endif
+
+#if ENABLE(MEDIA_STREAM)
+        [NSNumber numberWithBool:NO], WebKitMediaStreamEnabledPreferenceKey,
+#endif
+
+#if ENABLE(WEB_RTC)
+        [NSNumber numberWithBool:NO], WebKitPeerConnectionEnabledPreferenceKey,
+#endif
+
         nil];
 
 #if !PLATFORM(IOS)
@@ -2689,7 +2698,26 @@
     [self _setBoolValue:flag forKey:WebKitSubtleCryptoEnabledPreferenceKey];
 }
 
+- (BOOL)mediaStreamEnabled
+{
+    return [self _boolValueForKey:WebKitMediaStreamEnabledPreferenceKey];
+}
 
+- (void)setMediaStreamEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitMediaStreamEnabledPreferenceKey];
+}
+
+- (BOOL)peerConnectionEnabled
+{
+    return [self _boolValueForKey:WebKitPeerConnectionEnabledPreferenceKey];
+}
+
+- (void)setPeerConnectionEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitPeerConnectionEnabledPreferenceKey];
+}
+
 - (void)setMetaRefreshEnabled:(BOOL)enabled
 {
     [self setHTTPEquivEnabled:enabled];

Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (209642 => 209643)


--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2016-12-10 02:46:31 UTC (rev 209643)
@@ -162,6 +162,12 @@
 - (void)setSubtleCryptoEnabled:(BOOL)flag;
 - (BOOL)subtleCryptoEnabled;
 
+- (void)setMediaStreamEnabled:(BOOL)flag;
+- (BOOL)mediaStreamEnabled;
+
+- (void)setPeerConnectionEnabled:(BOOL)flag;
+- (BOOL)peerConnectionEnabled;
+
 #if !TARGET_OS_IPHONE
 // zero means do AutoScale
 - (float)PDFScaleFactor;

Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (209642 => 209643)


--- trunk/Source/WebKit/mac/WebView/WebView.mm	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm	2016-12-10 02:46:31 UTC (rev 209643)
@@ -2808,8 +2808,13 @@
 #if ENABLE(MEDIA_STREAM)
     settings.setMockCaptureDevicesEnabled([preferences mockCaptureDevicesEnabled]);
     settings.setMediaCaptureRequiresSecureConnection([preferences mediaCaptureRequiresSecureConnection]);
+    RuntimeEnabledFeatures::sharedFeatures().setMediaStreamEnabled([preferences mediaStreamEnabled]);
 #endif
 
+#if ENABLE(WEB_RTC)
+    RuntimeEnabledFeatures::sharedFeatures().setPeerConnectionEnabled([preferences peerConnectionEnabled]);
+#endif
+
 #if ENABLE(WEB_AUDIO)
     settings.setWebAudioEnabled([preferences webAudioEnabled]);
 #endif

Modified: trunk/Source/WebKit2/ChangeLog (209642 => 209643)


--- trunk/Source/WebKit2/ChangeLog	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit2/ChangeLog	2016-12-10 02:46:31 UTC (rev 209643)
@@ -1,3 +1,26 @@
+2016-12-09  Eric Carlson  <eric.carl...@apple.com>
+
+        Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
+        https://bugs.webkit.org/show_bug.cgi?id=165251
+
+        Reviewed by Dean Jackson.
+
+        Based on a patch by Dr Alex Gouaillard <agouaill...@gmail.com>
+
+        * Shared/WebPreferencesDefinitions.h: Add peerConnectionEnabled.
+
+        * UIProcess/API/C/WKPreferences.cpp:
+        (WKPreferencesSetPeerConnectionEnabled): Added.
+        (WKPreferencesGetPeerConnectionEnabled): Added.
+        * UIProcess/API/C/WKPreferencesRef.h:
+
+        * WebProcess/InjectedBundle/InjectedBundle.cpp:
+        (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Add WebKitMediaStreamEnabled
+          and WebKitPeerConnectionEnabled.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updatePreferences): Initialize the peerConnection preference.
+
 2016-12-09  Brady Eidson  <beid...@apple.com>
 
         Re-landing:

Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (209642 => 209643)


--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h	2016-12-10 02:46:31 UTC (rev 209643)
@@ -213,6 +213,7 @@
     macro(SubpixelCSSOMElementMetricsEnabled, subpixelCSSOMElementMetricsEnabled, Bool, bool, false, "", "") \
     macro(UseGiantTiles, useGiantTiles, Bool, bool, false, "", "") \
     macro(MediaStreamEnabled, mediaStreamEnabled, Bool, bool, false, "", "") \
+    macro(PeerConnectionEnabled, peerConnectionEnabled, Bool, bool, false, "", "") \
     macro(UseLegacyTextAlignPositionedElementBehavior, useLegacyTextAlignPositionedElementBehavior, Bool, bool, false, "", "") \
     macro(SpatialNavigationEnabled, spatialNavigationEnabled, Bool, bool, false, "", "") \
     macro(MediaSourceEnabled, mediaSourceEnabled, Bool, bool, true, "", "") \

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


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2016-12-10 02:46:31 UTC (rev 209643)
@@ -1321,6 +1321,16 @@
     return toImpl(preferencesRef)->mediaStreamEnabled();
 }
 
+void WKPreferencesSetPeerConnectionEnabled(WKPreferencesRef preferencesRef, bool enabled)
+{
+    toImpl(preferencesRef)->setPeerConnectionEnabled(enabled);
+}
+
+bool WKPreferencesGetPeerConnectionEnabled(WKPreferencesRef preferencesRef)
+{
+    return toImpl(preferencesRef)->peerConnectionEnabled();
+}
+
 void WKPreferencesSetSpatialNavigationEnabled(WKPreferencesRef preferencesRef, bool enabled)
 {
     toImpl(preferencesRef)->setSpatialNavigationEnabled(enabled);

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h (209642 => 209643)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h	2016-12-10 02:46:31 UTC (rev 209643)
@@ -256,6 +256,10 @@
 WK_EXPORT void WKPreferencesSetMediaStreamEnabled(WKPreferencesRef preferencesRef, bool enabled);
 WK_EXPORT bool WKPreferencesGetMediaStreamEnabled(WKPreferencesRef preferencesRef);
 
+// Defaults to false
+WK_EXPORT void WKPreferencesSetPeerConnectionEnabled(WKPreferencesRef preferencesRef, bool enabled);
+WK_EXPORT bool WKPreferencesGetPeerConnectionEnabled(WKPreferencesRef preferencesRef);
+
 // Defaults to false.
 WK_EXPORT void WKPreferencesSetSpatialNavigationEnabled(WKPreferencesRef preferencesRef, bool enabled);
 WK_EXPORT bool WKPreferencesGetSpatialNavigationEnabled(WKPreferencesRef preferencesRef);

Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp (209642 => 209643)


--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp	2016-12-10 02:46:31 UTC (rev 209643)
@@ -226,6 +226,16 @@
         RuntimeEnabledFeatures::sharedFeatures().setSubtleCryptoEnabled(enabled);
 #endif
 
+#if ENABLE(MEDIA_STREAM)
+    if (preference == "WebKitMediaStreamEnabled")
+        RuntimeEnabledFeatures::sharedFeatures().setMediaStreamEnabled(enabled);
+#endif
+
+#if ENABLE(WEB_RTC)
+    if (preference == "WebKitPeerConnectionEnabled")
+        RuntimeEnabledFeatures::sharedFeatures().setPeerConnectionEnabled(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) \
@@ -244,7 +254,6 @@
     macro(WebKitShouldRespectImageOrientation, ShouldRespectImageOrientation, shouldRespectImageOrientation) \
     macro(WebKitEnableCaretBrowsing, CaretBrowsingEnabled, caretBrowsingEnabled) \
     macro(WebKitDisplayImagesKey, LoadsImagesAutomatically, loadsImagesAutomatically) \
-    macro(WebKitMediaStreamEnabled, MediaStreamEnabled, mediaStreamEnabled) \
     macro(WebKitHTTPEquivEnabled, HttpEquivEnabled, httpEquivEnabled) \
     macro(WebKitVisualViewportEnabled, VisualViewportEnabled, visualViewportEnabled) \
     macro(WebKitLargeImageAsyncDecodingEnabled, LargeImageAsyncDecodingEnabled, largeImageAsyncDecodingEnabled) \

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (209642 => 209643)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2016-12-10 02:46:31 UTC (rev 209643)
@@ -3035,6 +3035,10 @@
     settings.setMediaStreamEnabled(store.getBoolValueForKey(WebPreferencesKey::mediaStreamEnabledKey()));
 #endif
 
+#if ENABLE(WEB_RTC)
+    settings.setPeerConnectionEnabled(store.getBoolValueForKey(WebPreferencesKey::peerConnectionEnabledKey()));
+#endif
+
 #if ENABLE(SERVICE_CONTROLS)
     settings.setImageControlsEnabled(store.getBoolValueForKey(WebPreferencesKey::imageControlsEnabledKey()));
 #endif

Modified: trunk/Tools/ChangeLog (209642 => 209643)


--- trunk/Tools/ChangeLog	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Tools/ChangeLog	2016-12-10 02:46:31 UTC (rev 209643)
@@ -1,3 +1,23 @@
+2016-12-09  Eric Carlson  <eric.carl...@apple.com>
+
+        Annotate MediaStream and WebRTC idl with EnabledAtRuntime flag
+        https://bugs.webkit.org/show_bug.cgi?id=165251
+
+        Reviewed by Dean Jackson.
+
+        Based on a patch by Dr Alex Gouaillard <agouaill...@gmail.com>
+
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (resetWebPreferencesToConsistentValues): Enable MediaStream and PeerConnection.
+
+        * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
+        (WTR::InjectedBundle::beginTesting): Ditto.
+
+        * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
+        (WTR::TestRunner::setMediaStreamEnabled): New.
+        (WTR::TestRunner::setPeerConnectionEnabled): New.
+        * WebKitTestRunner/InjectedBundle/TestRunner.h:
+
 2016-12-09  Brady Eidson  <beid...@apple.com> 
  
         Re-landing:

Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (209642 => 209643)


--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2016-12-10 02:46:31 UTC (rev 209643)
@@ -1002,6 +1002,9 @@
 
     [preferences setSubtleCryptoEnabled:YES];
 
+    [preferences setMediaStreamEnabled:YES];
+    [preferences setPeerConnectionEnabled:YES];
+
     [WebPreferences _clearNetworkLoaderSession];
     [WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];
 }

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp (209642 => 209643)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp	2016-12-10 02:46:31 UTC (rev 209643)
@@ -338,6 +338,9 @@
 
     m_testRunner->setSubtleCryptoEnabled(true);
 
+    m_testRunner->setMediaStreamEnabled(true);
+    m_testRunner->setPeerConnectionEnabled(true);
+
     if (m_timeout > 0)
         m_testRunner->setCustomTimeout(m_timeout);
 

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp (209642 => 209643)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp	2016-12-10 02:46:31 UTC (rev 209643)
@@ -361,6 +361,20 @@
     WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled);
 }
 
+void TestRunner::setMediaStreamEnabled(bool enabled)
+{
+    WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitMediaStreamEnabled"));
+    auto& injectedBundle = InjectedBundle::singleton();
+    WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled);
+}
+
+void TestRunner::setPeerConnectionEnabled(bool enabled)
+{
+    WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitPeerConnectionEnabled"));
+    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 (209642 => 209643)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h	2016-12-10 02:34:02 UTC (rev 209642)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h	2016-12-10 02:46:31 UTC (rev 209643)
@@ -130,6 +130,8 @@
     void setES6ModulesEnabled(bool);
     void setEncryptedMediaAPIEnabled(bool);
     void setSubtleCryptoEnabled(bool);
+    void setMediaStreamEnabled(bool);
+    void setPeerConnectionEnabled(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