Title: [233786] trunk
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;
+    }
 };
 
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to