I've failed to fix WPE_RENDERER in F32 (bug #209118) and failed to fix WaylandCompositor to work with PSON (bug #209345). We should disable PSON when using WaylandCompositor until bug #209345 is fixed.
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.
:)