From 174023dd235dacfd1a05d5c9cc509e678dc14960 Mon Sep 17 00:00:00 2001 From: Thami Memel Date: Tue, 26 May 2020 10:56:22 +0000 Subject: [PATCH 1/3] Enabling WebKitGTK sandboxing Changed to enable WebKitGTK sandboxing https://gitlab.gnome.org/GNOME/geary/-/issues/842 --- src/client/components/components-web-view.vala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala index f49ebb0a..749e6539 100644 --- a/src/client/components/components-web-view.vala +++ b/src/client/components/components-web-view.vala @@ -79,6 +79,8 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { File cache_dir) { WebsiteDataManager data_manager = new WebsiteDataManager(cache_dir.get_path()); WebKit.WebContext context = new WebKit.WebContext.with_website_data_manager(data_manager); + // Enable WebProcess sandboxing + context.set_sandbox_enabled(true); // Use the doc viewer model since each web view instance only // ever shows a single HTML document. context.set_cache_model(WebKit.CacheModel.DOCUMENT_VIEWER); From a63ede9eada4562f94cd6df523b56c2272a67de4 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Wed, 20 Jan 2021 22:57:21 +1100 Subject: [PATCH 2/3] Components.WebView: Ensure WebKitGTK sandbox can access web extension --- src/client/components/components-web-view.vala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala index 749e6539..0abc8c58 100644 --- a/src/client/components/components-web-view.vala +++ b/src/client/components/components-web-view.vala @@ -80,6 +80,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { WebsiteDataManager data_manager = new WebsiteDataManager(cache_dir.get_path()); WebKit.WebContext context = new WebKit.WebContext.with_website_data_manager(data_manager); // Enable WebProcess sandboxing + context.add_path_to_sandbox(web_extension_dir.get_path(), true); context.set_sandbox_enabled(true); // Use the doc viewer model since each web view instance only // ever shows a single HTML document. From 5421ea466231714cb3f9cfb3d858055bdbc63b27 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Wed, 20 Jan 2021 23:03:40 +1100 Subject: [PATCH 3/3] Components.WebView: Switch to WebProcess document browser cache model Now we're using a single long-lived WebProcess for displaying multiple email, it makes sense to enable some caching. --- src/client/components/components-web-view.vala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala index 0abc8c58..6896a6b8 100644 --- a/src/client/components/components-web-view.vala +++ b/src/client/components/components-web-view.vala @@ -82,9 +82,9 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface { // Enable WebProcess sandboxing context.add_path_to_sandbox(web_extension_dir.get_path(), true); context.set_sandbox_enabled(true); - // Use the doc viewer model since each web view instance only - // ever shows a single HTML document. - context.set_cache_model(WebKit.CacheModel.DOCUMENT_VIEWER); + // Use the doc browser model so that we get some caching of + // resources between email body loads. + context.set_cache_model(WebKit.CacheModel.DOCUMENT_BROWSER); context.register_uri_scheme("cid", (req) => { WebView? view = req.get_web_view() as WebView;