diff options
author | rdevlin.cronin <rdevlin.cronin@chromium.org> | 2015-06-24 11:49:17 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-24 18:49:50 +0000 |
commit | 86f5b7023f3c39cd38f571f923f1f780231853ed (patch) | |
tree | 00475d22a658cddcabd7ccf3ecf12171c02e6ba9 /extensions/browser/extension_web_contents_observer.cc | |
parent | e4e5667ec6977d81c5acc1e6b9787d28b9514e5d (diff) | |
download | chromium_src-86f5b7023f3c39cd38f571f923f1f780231853ed.zip chromium_src-86f5b7023f3c39cd38f571f923f1f780231853ed.tar.gz chromium_src-86f5b7023f3c39cd38f571f923f1f780231853ed.tar.bz2 |
[Extensions OOPI] Update ErrorConsole and related to use RenderFrameHosts
Update ErrorConsole-related things, including adding runtime errors and the
developerPrivate API to use RenderFrameHosts.
Remove the message listener for console messages from TabHelper, since it should
be fully handled in ChromeExtensionWebContentsObserver.
Remove unneeded ExtensionError::ToValue code.
BUG=455776
BUG=503676
Review URL: https://codereview.chromium.org/1202753002
Cr-Commit-Position: refs/heads/master@{#335961}
Diffstat (limited to 'extensions/browser/extension_web_contents_observer.cc')
-rw-r--r-- | extensions/browser/extension_web_contents_observer.cc | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/extensions/browser/extension_web_contents_observer.cc b/extensions/browser/extension_web_contents_observer.cc index 2436fd0..a36661b 100644 --- a/extensions/browser/extension_web_contents_observer.cc +++ b/extensions/browser/extension_web_contents_observer.cc @@ -22,28 +22,6 @@ #include "extensions/common/extension_messages.h" namespace extensions { -namespace { - -const Extension* GetExtensionForRenderFrame( - content::RenderFrameHost* render_frame_host) { - content::SiteInstance* site_instance = render_frame_host->GetSiteInstance(); - GURL url = render_frame_host->GetLastCommittedURL(); - if (!url.is_empty()) { - if (site_instance->GetSiteURL().GetOrigin() != url.GetOrigin()) - return nullptr; - } else { - url = site_instance->GetSiteURL(); - } - content::BrowserContext* browser_context = site_instance->GetBrowserContext(); - if (!url.SchemeIs(kExtensionScheme)) - return nullptr; - - return ExtensionRegistry::Get(browser_context) - ->enabled_extensions() - .GetExtensionOrAppByURL(url); -} - -} // namespace // static ExtensionWebContentsObserver* ExtensionWebContentsObserver::GetForWebContents( @@ -75,8 +53,7 @@ void ExtensionWebContentsObserver::InitializeRenderFrame( render_frame_host->Send(new ExtensionMsg_NotifyRenderViewType( render_frame_host->GetRoutingID(), GetViewType(web_contents()))); - const Extension* frame_extension = - GetExtensionForRenderFrame(render_frame_host); + const Extension* frame_extension = GetExtensionFromFrame(render_frame_host); if (frame_extension) { ExtensionsBrowserClient::Get()->RegisterMojoServices(render_frame_host, frame_extension); @@ -88,7 +65,7 @@ void ExtensionWebContentsObserver::InitializeRenderFrame( // This can be different from |frame_extension| above in the case of, e.g., // a non-extension iframe hosted in a chrome-extension:// page. const Extension* main_frame_extension = - GetExtensionForRenderFrame(web_contents()->GetMainFrame()); + GetExtensionFromFrame(web_contents()->GetMainFrame()); // We notify the render frame that it's in an extension's tab, but not if this // is a hosted app (we don't mind scripting on hosted apps' pages). if (main_frame_extension && !main_frame_extension->is_hosted_app()) { @@ -183,6 +160,28 @@ void ExtensionWebContentsObserver::PepperInstanceDeleted() { process_manager->DecrementLazyKeepaliveCount(extension); } +std::string ExtensionWebContentsObserver::GetExtensionIdFromFrame( + content::RenderFrameHost* render_frame_host) const { + content::SiteInstance* site_instance = render_frame_host->GetSiteInstance(); + GURL url = render_frame_host->GetLastCommittedURL(); + if (!url.is_empty()) { + if (site_instance->GetSiteURL().GetOrigin() != url.GetOrigin()) + return std::string(); + } else { + url = site_instance->GetSiteURL(); + } + + return url.SchemeIs(kExtensionScheme) ? url.host() : std::string(); +} + +const Extension* ExtensionWebContentsObserver::GetExtensionFromFrame( + content::RenderFrameHost* render_frame_host) const { + return ExtensionRegistry::Get( + render_frame_host->GetProcess()->GetBrowserContext()) + ->enabled_extensions() + .GetByID(GetExtensionIdFromFrame(render_frame_host)); +} + const Extension* ExtensionWebContentsObserver::GetExtension( content::RenderViewHost* render_view_host) { std::string extension_id = GetExtensionId(render_view_host); |