summaryrefslogtreecommitdiffstats
path: root/extensions/browser/process_manager.cc
diff options
context:
space:
mode:
authorjyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-03 19:03:45 +0000
committerjyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-03 19:03:45 +0000
commit6703c15da1473dad187f80e3613ab4cd389de001 (patch)
tree7591261ba9eacb445ce899bae5f1f1487a1118a6 /extensions/browser/process_manager.cc
parentdf978442ba4e0629dc7f406729b25cae54fc9461 (diff)
downloadchromium_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.cc15
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(