Summary: | [GTK] Disable PSON unless WPE_RENDERER is enabled | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Michael Catanzaro <mcatanzaro> | ||||||
Component: | WebKitGTK | Assignee: | Michael Catanzaro <mcatanzaro> | ||||||
Status: | RESOLVED WONTFIX | ||||||||
Severity: | Normal | CC: | berto, bugs-noreply, cgarcia, dpa-webkit, ews-watchlist, gustavo, mcatanzaro | ||||||
Priority: | P2 | ||||||||
Version: | WebKit Nightly Build | ||||||||
Hardware: | PC | ||||||||
OS: | Linux | ||||||||
See Also: |
https://bugs.webkit.org/show_bug.cgi?id=209345 https://bugs.webkit.org/show_bug.cgi?id=208091 |
||||||||
Attachments: |
|
Description
Michael Catanzaro
2020-04-09 10:01:41 PDT
Created attachment 395970 [details]
Patch
Created attachment 395971 [details]
Patch
Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebContext.html#WebKitWebContext--process-swap-on-cross-site-navigation-enabled why does it say that by default PSON defaults to FALSE? Why do I need WPE (renderer)? (In reply to Дилян Палаузов from comment #4) > https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebContext. > html#WebKitWebContext--process-swap-on-cross-site-navigation-enabled > > why does it say that by default PSON defaults to FALSE? Because it breaks apps that aren't prepared for it. Epiphany enables it because it's an important security feature. (In reply to Дилян Палаузов from comment #5) > Why do I need WPE (renderer)? You don't. It's just faster. Backport for 2.28 branch: diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp index 33a9b7d5ad060f275dcf7156a8cff3f37644e736..70b485da05a92caa91bf91b9653740b8e93cf96c 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp @@ -376,6 +376,9 @@ static void webkitWebContextConstructed(GObject* object) API::ProcessPoolConfiguration configuration; configuration.setInjectedBundlePath(FileSystem::stringFromFileSystemRepresentation(bundleFilename.get())); #if PLATFORM(GTK) +// FIXME: PSON is currently broken unless WPE_RENDERER is enabled. +// https://bugs.webkit.org/show_bug.cgi?id=209345 +#if USE(WPE_RENDERER) configuration.setProcessSwapsOnNavigation(priv->psonEnabled); if (!priv->psonEnabled) { const char* useSingleWebProcess = getenv("WEBKIT_USE_SINGLE_WEB_PROCESS"); @@ -387,6 +390,8 @@ static void webkitWebContextConstructed(GObject* object) configuration.setUsesSingleWebProcess(true); } } +#else + configuration.setProcessSwapsOnNavigation(false); #endif if (!priv->websiteDataManager) Backport is busted, sorry.... Better backport: diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp index 33a9b7d5ad060f275dcf7156a8cff3f37644e736..70b485da05a92caa91bf91b9653740b8e93cf96c 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp @@ -376,7 +376,11 @@ static void webkitWebContextConstructed(GObject* object) API::ProcessPoolConfiguration configuration; configuration.setInjectedBundlePath(FileSystem::stringFromFileSystemRepresentation(bundleFilename.get())); #if PLATFORM(GTK) +#if USE(WPE_RENDERER) + configuration.setProcessSwapsOnNavigation(priv->psonEnabled); +#else configuration.setProcessSwapsOnNavigation(false); +#endif if (!priv->psonEnabled) { const char* useSingleWebProcess = getenv("WEBKIT_USE_SINGLE_WEB_PROCESS"); if (useSingleWebProcess && strcmp(useSingleWebProcess, "0")) Comment on attachment 395971 [details]
Patch
You know I prefer to fix bugs instead of disabling features to work around them.
:) |