Bug 186610 - [WPE][GTK] Enable process swap on navigation to new origin
Summary: [WPE][GTK] Enable process swap on navigation to new origin
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Nightly Build
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-06-13 15:41 PDT by Michael Catanzaro
Modified: 2019-06-23 10:55 PDT (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.