- Revision
- 233786
- Author
- [email protected]
- Date
- 2018-07-12 16:37:10 -0700 (Thu, 12 Jul 2018)
Log Message
Make process-swap-on-navigation an experimental feature.
<rdar://problem/41995053> and https://bugs.webkit.org/show_bug.cgi?id=187558
Reviewed by Chris Dumez.
Source/WebKit:
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetProcessSwapOnNavigationEnabled):
(WKPreferencesGetProcessSwapOnNavigationEnabled):
* UIProcess/API/C/WKPreferencesRef.h:
* UIProcess/WebPreferences.cpp:
(WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createWebPage): If the new web page has PSON enabled via WebPreferences,
absorb that setting into this process pool's configuration.
Tools:
Make sure WKTR doesn't enable ProcessSwapOnNavigation by default simply because it's an experimental feature.
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::resetPreferencesToConsistentValues):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::shouldEnableProcessSwapOnNavigation const):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (233785 => 233786)
--- trunk/Source/WebKit/ChangeLog 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Source/WebKit/ChangeLog 2018-07-12 23:37:10 UTC (rev 233786)
@@ -1,3 +1,24 @@
+2018-07-12 Brady Eidson <[email protected]>
+
+ Make process-swap-on-navigation an experimental feature.
+ <rdar://problem/41995053> and https://bugs.webkit.org/show_bug.cgi?id=187558
+
+ Reviewed by Chris Dumez.
+
+ * Shared/WebPreferences.yaml:
+
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetProcessSwapOnNavigationEnabled):
+ (WKPreferencesGetProcessSwapOnNavigationEnabled):
+ * UIProcess/API/C/WKPreferencesRef.h:
+
+ * UIProcess/WebPreferences.cpp:
+ (WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey):
+
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::createWebPage): If the new web page has PSON enabled via WebPreferences,
+ absorb that setting into this process pool's configuration.
+
2018-07-12 Chris Dumez <[email protected]>
Simplify code in NetworkConnectionToWebProcess::didReceiveMessage()
Modified: trunk/Source/WebKit/Shared/WebPreferences.yaml (233785 => 233786)
--- trunk/Source/WebKit/Shared/WebPreferences.yaml 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Source/WebKit/Shared/WebPreferences.yaml 2018-07-12 23:37:10 UTC (rev 233786)
@@ -1283,3 +1283,12 @@
webcoreBinding: RuntimeEnabledFeatures
category: experimental
condition: ENABLE(ENCRYPTED_MEDIA)
+
+ProcessSwapOnNavigationEnabled:
+ type: bool
+ defaultValue: false
+ humanReadableName: "Swap Processes on Navigation"
+ humanReadableDescription: "Swap WebContent processes on cross-origin navigations"
+ category: experimental
+ webcoreBinding: none
+
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPreferences.cpp (233785 => 233786)
--- trunk/Source/WebKit/UIProcess/API/C/WKPreferences.cpp 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPreferences.cpp 2018-07-12 23:37:10 UTC (rev 233786)
@@ -2023,3 +2023,13 @@
{
return toImpl(preferencesRef)->colorFilterEnabled();
}
+
+void WKPreferencesSetProcessSwapOnNavigationEnabled(WKPreferencesRef preferencesRef, bool flag)
+{
+ toImpl(preferencesRef)->setProcessSwapOnNavigationEnabled(flag);
+}
+
+bool WKPreferencesGetProcessSwapOnNavigationEnabled(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->processSwapOnNavigationEnabled();
+}
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRef.h (233785 => 233786)
--- trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRef.h 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRef.h 2018-07-12 23:37:10 UTC (rev 233786)
@@ -327,6 +327,10 @@
WK_EXPORT bool WKPreferencesGetCrossOriginWindowPolicyEnabled(WKPreferencesRef preferencesRef);
WK_EXPORT void WKPreferencesSetCrossOriginWindowPolicyEnabled(WKPreferencesRef preferencesRef, bool enabled);
+// Defaults to false.
+WK_EXPORT bool WKPreferencesGetProcessSwapOnNavigationEnabled(WKPreferencesRef preferencesRef);
+WK_EXPORT void WKPreferencesSetProcessSwapOnNavigationEnabled(WKPreferencesRef preferencesRef, bool enabled);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit/UIProcess/WebPreferences.cpp (233785 => 233786)
--- trunk/Source/WebKit/UIProcess/WebPreferences.cpp 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Source/WebKit/UIProcess/WebPreferences.cpp 2018-07-12 23:37:10 UTC (rev 233786)
@@ -133,6 +133,13 @@
void WebPreferences::updateBoolValueForExperimentalFeatureKey(const String& key, bool value)
{
+ if (key == WebPreferencesKey::processSwapOnNavigationEnabledKey()) {
+ for (auto* page : m_pages)
+ page->process().processPool().configuration().setProcessSwapsOnNavigation(value);
+
+ return;
+ }
+
update(); // FIXME: Only send over the changed key and value.
}
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (233785 => 233786)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2018-07-12 23:37:10 UTC (rev 233786)
@@ -1149,7 +1149,11 @@
ASSERT(!is<ServiceWorkerProcessProxy>(*process));
#endif
- return process->createWebPage(pageClient, WTFMove(pageConfiguration));
+ auto page = process->createWebPage(pageClient, WTFMove(pageConfiguration));
+ if (page->preferences().processSwapOnNavigationEnabled())
+ m_configuration->setProcessSwapsOnNavigation(true);
+
+ return page;
}
#if ENABLE(SERVICE_WORKER)
Modified: trunk/Tools/ChangeLog (233785 => 233786)
--- trunk/Tools/ChangeLog 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Tools/ChangeLog 2018-07-12 23:37:10 UTC (rev 233786)
@@ -1,3 +1,19 @@
+2018-07-12 Brady Eidson <[email protected]>
+
+ Make process-swap-on-navigation an experimental feature.
+ <rdar://problem/41995053> and https://bugs.webkit.org/show_bug.cgi?id=187558
+
+ Reviewed by Chris Dumez.
+
+ Make sure WKTR doesn't enable ProcessSwapOnNavigation by default simply because it's an experimental feature.
+
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::createWebViewWithOptions):
+ (WTR::TestController::resetPreferencesToConsistentValues):
+
+ * WebKitTestRunner/TestOptions.h:
+ (WTR::TestOptions::shouldEnableProcessSwapOnNavigation const):
+
2018-07-12 Youenn Fablet <[email protected]>
Add a FrameLoaderClient willInjectUserScriptForFrame callback
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (233785 => 233786)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2018-07-12 23:37:10 UTC (rev 233786)
@@ -507,7 +507,7 @@
WKArrayAppendItem(overrideLanguages.get(), adoptWK(WKStringCreateWithUTF8CString(language.utf8().data())).get());
WKContextConfigurationSetOverrideLanguages(contextConfiguration.get(), overrideLanguages.get());
- if (options.enableProcessSwapOnNavigation || options.enableProcessSwapOnWindowOpen) {
+ if (options.shouldEnableProcessSwapOnNavigation()) {
WKContextConfigurationSetProcessSwapsOnNavigation(contextConfiguration.get(), true);
if (options.enableProcessSwapOnWindowOpen)
WKContextConfigurationSetProcessSwapsOnWindowOpenWithOpener(contextConfiguration.get(), true);
@@ -679,6 +679,7 @@
WKPreferencesRef preferences = platformPreferences();
WKPreferencesResetTestRunnerOverrides(preferences);
WKPreferencesEnableAllExperimentalFeatures(preferences);
+ WKPreferencesSetProcessSwapOnNavigationEnabled(preferences, options.shouldEnableProcessSwapOnNavigation());
WKPreferencesSetPageVisibilityBasedProcessSuppressionEnabled(preferences, false);
WKPreferencesSetOfflineWebApplicationCacheEnabled(preferences, true);
WKPreferencesSetFontSmoothingLevel(preferences, kWKFontSmoothingLevelNoSubpixelAntiAliasing);
Modified: trunk/Tools/WebKitTestRunner/TestOptions.h (233785 => 233786)
--- trunk/Tools/WebKitTestRunner/TestOptions.h 2018-07-12 23:29:44 UTC (rev 233785)
+++ trunk/Tools/WebKitTestRunner/TestOptions.h 2018-07-12 23:37:10 UTC (rev 233786)
@@ -101,6 +101,11 @@
return true;
}
+
+ bool shouldEnableProcessSwapOnNavigation() const
+ {
+ return enableProcessSwapOnNavigation || enableProcessSwapOnWindowOpen;
+ }
};
}