Bug 186610

Summary: [WPE][GTK] Enable process swap on navigation to new origin
Product: WebKit Reporter: Michael Catanzaro <mcatanzaro>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: beidson, bugs-noreply, calvaris, cdumez, mcatanzaro
Priority: P2    
Version: WebKit Nightly Build   
Hardware: PC   
OS: Linux   
See Also: https://bugs.webkit.org/show_bug.cgi?id=186542

Description Michael Catanzaro 2018-06-13 15:41:09 PDT
We should probably enable process swap on navigation to new origin for WPE/GTK. (...right?)

Hey Brady, could you help us understand:

 * Is there any reason we would NOT want to do this unconditionally? (It doesn't seem like something to expose public GTK/WPE API for.)
 * This is important because it's required for site isolation slash Spectre mitigation... right?
Comment 1 Michael Catanzaro 2018-06-13 15:44:41 PDT
Patch is trivial:

diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
index b52591d625e..829734126bc 100644
--- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
+++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
@@ -335,6 +335,7 @@ static void webkitWebContextConstructed(GObject* object)
     configuration.setInjectedBundlePath(WebCore::FileSystem::stringFromFileSystemRepresentation(bundleFilename.get()));
     configuration.setMaximumProcessCount(1);
     configuration.setDiskCacheSpeculativeValidationEnabled(true);
+    configuration.setProcessSwapsOnNavigation(true);
 
     WebKitWebContext* webContext = WEBKIT_WEB_CONTEXT(object);
     WebKitWebContextPrivate* priv = webContext->priv;

I tested this out and it sort of works. The navigation swap seems to occur as expected. However, back/forward list is broken: trying to navigate back past a process swap does not work properly.
Comment 2 Chris Dumez 2018-06-13 15:46:15 PDT
It is not enabled by default for COCOA yet. We are still working on layout test failures and then we'll have to work on performance. There is a cost to launching new processes (launch time and losing caches for e.g.).
Comment 3 Michael Catanzaro 2018-06-13 16:10:09 PDT
OK, let's definitely delay until you think it's ready for Cocoa.
Comment 4 Michael Catanzaro 2019-06-23 10:55:31 PDT
Enabled in r246148.