Add a runtime setting for media in the GPU process
https://bugs.webkit.org/show_bug.cgi?id=204801
<rdar://problem/57596199>
Reviewed by Jer Noble.
Source/WebCore:
* page/Settings.yaml:
Source/WebKit:
* Shared/WebPreferences.yaml:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
Source/WebKitLegacy/mac:
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences outOfProcessMediaEnabled]):
(-[WebPreferences setOutOfProcessMediaEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@253063 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index f9089c8..5ba0e01 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,13 @@
+2019-12-03 Eric Carlson <eric.carlson@apple.com>
+
+ Add a runtime setting for media in the GPU process
+ https://bugs.webkit.org/show_bug.cgi?id=204801
+ <rdar://problem/57596199>
+
+ Reviewed by Jer Noble.
+
+ * page/Settings.yaml:
+
2019-12-03 Jer Noble <jer.noble@apple.com>
Experimental support for HDR media query
diff --git a/Source/WebCore/page/Settings.yaml b/Source/WebCore/page/Settings.yaml
index a01d2f6..29b4d8c 100644
--- a/Source/WebCore/page/Settings.yaml
+++ b/Source/WebCore/page/Settings.yaml
@@ -320,6 +320,9 @@
genericCueAPIEnabled:
initial: false
conditional: VIDEO_TRACK
+outOfProcessMediaEnabled:
+ initial: false
+ conditional: VIDEO
scrollingCoordinatorEnabled:
initial: false
scrollingTreeIncludesFrames:
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index 93076d7..6d59f5f 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,15 @@
+2019-12-03 Eric Carlson <eric.carlson@apple.com>
+
+ Add a runtime setting for media in the GPU process
+ https://bugs.webkit.org/show_bug.cgi?id=204801
+ <rdar://problem/57596199>
+
+ Reviewed by Jer Noble.
+
+ * Shared/WebPreferences.yaml:
+ * WebProcess/InjectedBundle/InjectedBundle.cpp:
+ (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
+
2019-12-03 Per Arne Vollan <pvollan@apple.com>
Unreviewed assertion fix for older macOS versions after r253011.
diff --git a/Source/WebKit/Shared/WebPreferences.yaml b/Source/WebKit/Shared/WebPreferences.yaml
index cbb8f56..485e851 100644
--- a/Source/WebKit/Shared/WebPreferences.yaml
+++ b/Source/WebKit/Shared/WebPreferences.yaml
@@ -1837,6 +1837,15 @@
humanReadableName: "Remote Playback API"
humanReadableDescription: "Enable Remote Playback API"
+OutOfProcessMediaEnabled:
+ type: bool
+ defaultValue: false
+ condition: ENABLE(VIDEO)
+ humanReadableName: "Media in GPU process"
+ humanReadableDescription: "Do all media loading and playback in the GPU process"
+ category: experimental
+ webcoreName: outOfProcessMediaEnabled
+
# Deprecated
ICECandidateFilteringEnabled:
diff --git a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp
index f3c800c..083ae74 100644
--- a/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp
+++ b/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp
@@ -247,6 +247,15 @@
}
#endif
+#if ENABLE(VIDEO)
+ if (preference == "WebKitOutOfProcessMediaEnabled") {
+ WebPreferencesStore::overrideBoolValueForKey(WebPreferencesKey::imageControlsEnabledKey(), enabled);
+ for (auto* page : pages)
+ page->settings().setOutOfProcessMediaEnabled(enabled);
+ return;
+ }
+#endif
+
if (preference == "WebKitIsSecureContextAttributeEnabled") {
WebPreferencesStore::overrideBoolValueForKey(WebPreferencesKey::isSecureContextAttributeEnabledKey(), enabled);
RuntimeEnabledFeatures::sharedFeatures().setIsSecureContextAttributeEnabled(enabled);
diff --git a/Source/WebKitLegacy/mac/ChangeLog b/Source/WebKitLegacy/mac/ChangeLog
index ce5b163..817d969 100644
--- a/Source/WebKitLegacy/mac/ChangeLog
+++ b/Source/WebKitLegacy/mac/ChangeLog
@@ -1,3 +1,20 @@
+2019-12-03 Eric Carlson <eric.carlson@apple.com>
+
+ Add a runtime setting for media in the GPU process
+ https://bugs.webkit.org/show_bug.cgi?id=204801
+ <rdar://problem/57596199>
+
+ Reviewed by Jer Noble.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences outOfProcessMediaEnabled]):
+ (-[WebPreferences setOutOfProcessMediaEnabled:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
2019-12-03 Antoine Quint <graouts@apple.com>
[Web Animations] Add a runtime flag for Web Animations composite operations
diff --git a/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h b/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h
index 8181ef5..2afca77 100644
--- a/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h
+++ b/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h
@@ -263,6 +263,7 @@
#define WebKitEncryptedMediaAPIEnabledKey @"WebKitEncryptedMediaAPIEnabled"
#define WebKitPictureInPictureAPIEnabledKey @"WebKitPictureInPictureAPIEnabled"
#define WebKitGenericCueAPIEnabledKey @"WebKitGenericCueAPIEnabled"
+#define WebKitOutOfProcessMediaEnabledKey @"WebKitOutOfProcessMediaEnabled"
#define WebKitAllowMediaContentTypesRequiringHardwareSupportAsFallbackKey @"WebKitAllowMediaContentTypesRequiringHardwareSupportAsFallback"
#define WebKitInspectorAdditionsEnabledPreferenceKey @"WebKitInspectorAdditionsEnabled"
#define WebKitAccessibilityObjectModelEnabledPreferenceKey @"WebKitAccessibilityObjectModelEnabled"
diff --git a/Source/WebKitLegacy/mac/WebView/WebPreferences.mm b/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
index 4ec3aaf..a859f4c 100644
--- a/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebPreferences.mm
@@ -617,6 +617,10 @@
@NO, WebKitGenericCueAPIEnabledKey,
#endif
+#if ENABLE(VIDEO)
+ @NO, WebKitOutOfProcessMediaEnabledKey,
+#endif
+
#if ENABLE(MEDIA_STREAM)
@NO, WebKitMockCaptureDevicesEnabledPreferenceKey,
@YES, WebKitMockCaptureDevicesPromptEnabledPreferenceKey,
@@ -3368,6 +3372,16 @@
[self _setBoolValue:flag forKey:WebKitGenericCueAPIEnabledKey];
}
+- (BOOL)outOfProcessMediaEnabled
+{
+ return [self _boolValueForKey:WebKitOutOfProcessMediaEnabledKey];
+}
+
+- (void)setOutOfProcessMediaEnabled:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitOutOfProcessMediaEnabledKey];
+}
+
- (BOOL)viewportFitEnabled
{
return [self _boolValueForKey:WebKitViewportFitEnabledPreferenceKey];
diff --git a/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h b/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h
index 5815cb0..a20cc60 100644
--- a/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h
+++ b/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h
@@ -649,6 +649,7 @@
@property (nonatomic) BOOL encryptedMediaAPIEnabled;
@property (nonatomic) BOOL pictureInPictureAPIEnabled;
@property (nonatomic) BOOL genericCueAPIEnabled;
+@property (nonatomic) BOOL outOfProcessMediaEnabled;
@property (nonatomic) BOOL viewportFitEnabled;
@property (nonatomic) BOOL constantPropertiesEnabled;
@property (nonatomic) BOOL colorFilterEnabled;
diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm
index 4fd9a3d..bdddfe49 100644
--- a/Source/WebKitLegacy/mac/WebView/WebView.mm
+++ b/Source/WebKitLegacy/mac/WebView/WebView.mm
@@ -3209,6 +3209,10 @@
settings.setGenericCueAPIEnabled(preferences.genericCueAPIEnabled);
#endif
+#if ENABLE(VIDEO)
+ settings.setOutOfProcessMediaEnabled(preferences.outOfProcessMediaEnabled);
+#endif
+
RuntimeEnabledFeatures::sharedFeatures().setInspectorAdditionsEnabled(preferences.inspectorAdditionsEnabled);
settings.setAllowMediaContentTypesRequiringHardwareSupportAsFallback(preferences.allowMediaContentTypesRequiringHardwareSupportAsFallback);