diff options
author | jyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-03 19:03:45 +0000 |
---|---|---|
committer | jyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-03 19:03:45 +0000 |
commit | 6703c15da1473dad187f80e3613ab4cd389de001 (patch) | |
tree | 7591261ba9eacb445ce899bae5f1f1487a1118a6 /extensions/browser/process_manager.cc | |
parent | df978442ba4e0629dc7f406729b25cae54fc9461 (diff) | |
download | chromium_src-6703c15da1473dad187f80e3613ab4cd389de001.zip chromium_src-6703c15da1473dad187f80e3613ab4cd389de001.tar.gz chromium_src-6703c15da1473dad187f80e3613ab4cd389de001.tar.bz2 |
Check the scheme of a RenderViewHost before assuming it contains an extension.
Thanks to ncarter for the test!
BUG=357382
Review URL: https://codereview.chromium.org/216113007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@261496 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/process_manager.cc')
-rw-r--r-- | extensions/browser/process_manager.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc index a33a948..f97a722 100644 --- a/extensions/browser/process_manager.cc +++ b/extensions/browser/process_manager.cc @@ -28,12 +28,14 @@ #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" #include "content/public/common/renderer_preferences.h" +#include "content/public/common/url_constants.h" #include "extensions/browser/extension_host.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/process_manager_observer.h" #include "extensions/browser/view_type_utils.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_messages.h" #include "extensions/common/manifest_handlers/background_info.h" @@ -58,11 +60,18 @@ namespace { std::string GetExtensionID(RenderViewHost* render_view_host) { // This works for both apps and extensions because the site has been - // normalized to the extension URL for apps. - if (!render_view_host->GetSiteInstance()) + // normalized to the extension URL for hosted apps. + content::SiteInstance* site_instance = render_view_host->GetSiteInstance(); + if (!site_instance) + return std::string(); + + const GURL& site_url = site_instance->GetSiteURL(); + + if (!site_url.SchemeIs(kExtensionScheme) && + !site_url.SchemeIs(content::kGuestScheme)) return std::string(); - return render_view_host->GetSiteInstance()->GetSiteURL().host(); + return site_url.host(); } std::string GetExtensionIDFromFrame( |