summaryrefslogtreecommitdiffstats
path: root/extensions/browser/extension_web_contents_observer.cc
diff options
context:
space:
mode:
authorrdevlin.cronin <rdevlin.cronin@chromium.org>2015-06-24 11:49:17 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-24 18:49:50 +0000
commit86f5b7023f3c39cd38f571f923f1f780231853ed (patch)
tree00475d22a658cddcabd7ccf3ecf12171c02e6ba9 /extensions/browser/extension_web_contents_observer.cc
parente4e5667ec6977d81c5acc1e6b9787d28b9514e5d (diff)
downloadchromium_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.cc49
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);