diff options
author | kmarshall <kmarshall@chromium.org> | 2015-04-03 15:29:43 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-03 22:30:28 +0000 |
commit | 166e5b457da60fa11992b2e7efe3444f3875a465 (patch) | |
tree | 3ab1a5101b8d4ceaf2554c888c4a6fa3e1768eea /extensions/browser/extension_web_contents_observer.cc | |
parent | d9c7f49d8d037e4a5df1793897b6274bb2cbfc90 (diff) | |
download | chromium_src-166e5b457da60fa11992b2e7efe3444f3875a465.zip chromium_src-166e5b457da60fa11992b2e7efe3444f3875a465.tar.gz chromium_src-166e5b457da60fa11992b2e7efe3444f3875a465.tar.bz2 |
Add service registration for Mojo services defined under chrome/
to chrome_web_contents_observer.
Add RegisterMojoServices virtual method to
extension_web_contents_observer.
BUG=
Review URL: https://codereview.chromium.org/1035263002
Cr-Commit-Position: refs/heads/master@{#323836}
Diffstat (limited to 'extensions/browser/extension_web_contents_observer.cc')
-rw-r--r-- | extensions/browser/extension_web_contents_observer.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/extensions/browser/extension_web_contents_observer.cc b/extensions/browser/extension_web_contents_observer.cc index dd0a628..5ba2ebb 100644 --- a/extensions/browser/extension_web_contents_observer.cc +++ b/extensions/browser/extension_web_contents_observer.cc @@ -13,6 +13,7 @@ #include "content/public/common/url_constants.h" #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_registry.h" +#include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/mojo/service_registration.h" #include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" @@ -20,6 +21,28 @@ #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 ExtensionWebContentsObserver::ExtensionWebContentsObserver( content::WebContents* web_contents) @@ -98,7 +121,11 @@ void ExtensionWebContentsObserver::RenderViewCreated( void ExtensionWebContentsObserver::RenderFrameCreated( content::RenderFrameHost* render_frame_host) { - RegisterCoreExtensionServices(render_frame_host); + const Extension* extension = GetExtensionForRenderFrame(render_frame_host); + if (extension) { + ExtensionsBrowserClient::Get()->RegisterMojoServices(render_frame_host, + extension); + } } void ExtensionWebContentsObserver::FrameDeleted( |