diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-12-03 13:08:47 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-12-03 14:41:08 +0100 |
commit | 55ba42566069d271af75545bc7175cfe5dc95904 (patch) | |
tree | b4c0b9f31376899f950be8116a3ee5dee5446f62 /src/core/extensions | |
parent | e5d1ae64fd61d41cf8f26de81cf75e8050f8ecbb (diff) |
Fix extensions after IsHandledURL() was implemented
With IsHandledURL() implemented extensions were blocked from loading
resources, becauset their rights were not correctly granted by the
extension webcontents observer, which failed beause we were using
process-per-site instead of site-per-process.
Change-Id: Iee9b97fda39b4307a9cb4f63f11cbdef0bcc2660
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to 'src/core/extensions')
-rw-r--r-- | src/core/extensions/extension_web_contents_observer_qt.cpp | 36 | ||||
-rw-r--r-- | src/core/extensions/extension_web_contents_observer_qt.h | 3 |
2 files changed, 0 insertions, 39 deletions
diff --git a/src/core/extensions/extension_web_contents_observer_qt.cpp b/src/core/extensions/extension_web_contents_observer_qt.cpp index 365f04e46..5b1514bb4 100644 --- a/src/core/extensions/extension_web_contents_observer_qt.cpp +++ b/src/core/extensions/extension_web_contents_observer_qt.cpp @@ -70,42 +70,6 @@ void ExtensionWebContentsObserverQt::CreateForWebContents(content::WebContents * FromWebContents(web_contents)->Initialize(); } -std::string ExtensionWebContentsObserverQt::GetExtensionIdFromFrame(content::RenderFrameHost *render_frame_host) const -{ - const GURL &site = render_frame_host->GetSiteInstance()->GetSiteURL(); - if (!site.SchemeIs(kExtensionScheme)) - return std::string(); - - return site.host(); -} - -const Extension *ExtensionWebContentsObserverQt::GetExtensionFromFrame(content::RenderFrameHost *render_frame_host, bool verify_url) const -{ - std::string extension_id = GetExtensionIdFromFrame(render_frame_host); - if (extension_id.empty()) - return nullptr; - - content::BrowserContext *browser_context = - render_frame_host->GetProcess()->GetBrowserContext(); - const Extension *extension = ExtensionRegistry::Get(browser_context) - ->enabled_extensions() - .GetByID(extension_id); - if (!extension) - return nullptr; - - if (verify_url) { - const url::Origin &origin(render_frame_host->GetLastCommittedOrigin()); - // Without site isolation, this check is needed to eliminate non-extension - // schemes. With site isolation, this is still needed to exclude sandboxed - // extension frames with a unique origin. - const GURL site_url(render_frame_host->GetSiteInstance()->GetSiteURL()); - if (origin.opaque() || site_url != content::SiteInstance::GetSiteForURL(browser_context, origin.GetURL())) - return nullptr; - } - - return extension; -} - void ExtensionWebContentsObserverQt::RenderFrameCreated(content::RenderFrameHost *render_frame_host) { ExtensionWebContentsObserver::RenderFrameCreated(render_frame_host); diff --git a/src/core/extensions/extension_web_contents_observer_qt.h b/src/core/extensions/extension_web_contents_observer_qt.h index a528b3856..658966b31 100644 --- a/src/core/extensions/extension_web_contents_observer_qt.h +++ b/src/core/extensions/extension_web_contents_observer_qt.h @@ -59,9 +59,6 @@ public: static void CreateForWebContents(content::WebContents *web_contents); - std::string GetExtensionIdFromFrame(content::RenderFrameHost *) const; - const Extension *GetExtensionFromFrame(content::RenderFrameHost *, bool) const; - // content::WebContentsObserver overrides. void RenderFrameCreated(content::RenderFrameHost *render_frame_host) override; |