summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc21
-rw-r--r--chrome/renderer/extensions/chrome_v8_context.cc1
-rw-r--r--chrome/renderer/extensions/dispatcher.cc27
-rw-r--r--chrome/renderer/extensions/dispatcher.h2
4 files changed, 13 insertions, 38 deletions
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 72e04f0..2fa016e 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -991,22 +991,11 @@ bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() {
bool ChromeContentRendererClient::AllowPopup() {
extensions::ChromeV8Context* current_context =
extension_dispatcher_->v8_context_set().GetCurrent();
- if (!current_context || !current_context->extension())
- return false;
- // See http://crbug.com/117446 for the subtlety of this check.
- switch (current_context->context_type()) {
- case extensions::Feature::UNSPECIFIED_CONTEXT:
- case extensions::Feature::WEB_PAGE_CONTEXT:
- case extensions::Feature::UNBLESSED_EXTENSION_CONTEXT:
- return false;
- case extensions::Feature::BLESSED_EXTENSION_CONTEXT:
- case extensions::Feature::CONTENT_SCRIPT_CONTEXT:
- return true;
- case extensions::Feature::BLESSED_WEB_PAGE_CONTEXT:
- return !current_context->web_frame()->parent();
- }
- NOTREACHED();
- return false;
+ return current_context && current_context->extension() &&
+ (current_context->context_type() ==
+ extensions::Feature::BLESSED_EXTENSION_CONTEXT ||
+ current_context->context_type() ==
+ extensions::Feature::CONTENT_SCRIPT_CONTEXT);
}
bool ChromeContentRendererClient::ShouldFork(WebFrame* frame,
diff --git a/chrome/renderer/extensions/chrome_v8_context.cc b/chrome/renderer/extensions/chrome_v8_context.cc
index e6e8d18..bdeebd1 100644
--- a/chrome/renderer/extensions/chrome_v8_context.cc
+++ b/chrome/renderer/extensions/chrome_v8_context.cc
@@ -123,7 +123,6 @@ std::string ChromeV8Context::GetContextTypeDescription() {
case Feature::UNBLESSED_EXTENSION_CONTEXT: return "UNBLESSED_EXTENSION";
case Feature::CONTENT_SCRIPT_CONTEXT: return "CONTENT_SCRIPT";
case Feature::WEB_PAGE_CONTEXT: return "WEB_PAGE";
- case Feature::BLESSED_WEB_PAGE_CONTEXT: return "BLESSED_WEB_PAGE";
}
NOTREACHED();
return std::string();
diff --git a/chrome/renderer/extensions/dispatcher.cc b/chrome/renderer/extensions/dispatcher.cc
index bc3aad0..3a21e8e 100644
--- a/chrome/renderer/extensions/dispatcher.cc
+++ b/chrome/renderer/extensions/dispatcher.cc
@@ -732,7 +732,6 @@ void Dispatcher::AddOrRemoveBindingsForContext(ChromeV8Context* context) {
}
case Feature::BLESSED_EXTENSION_CONTEXT:
- case Feature::BLESSED_WEB_PAGE_CONTEXT:
case Feature::UNBLESSED_EXTENSION_CONTEXT:
case Feature::CONTENT_SCRIPT_CONTEXT: {
// Extension context; iterate through all the APIs and bind the available
@@ -1114,8 +1113,7 @@ void Dispatcher::DidCreateScriptContext(
}
Feature::Context context_type = ClassifyJavaScriptContext(
- extension,
- extension_group,
+ extension_id, extension_group,
UserScriptSlave::GetDataSourceURLForFrame(frame),
frame->document().securityOrigin());
@@ -1530,13 +1528,13 @@ bool Dispatcher::IsSandboxedPage(const GURL& url) const {
}
Feature::Context Dispatcher::ClassifyJavaScriptContext(
- const Extension* extension,
+ const std::string& extension_id,
int extension_group,
const GURL& url,
const blink::WebSecurityOrigin& origin) {
DCHECK_GE(extension_group, 0);
if (extension_group == EXTENSION_GROUP_CONTENT_SCRIPTS) {
- return extension ? // TODO(kalman): when does this happen?
+ return extensions_.Contains(extension_id) ?
Feature::CONTENT_SCRIPT_CONTEXT : Feature::UNSPECIFIED_CONTEXT;
}
@@ -1551,25 +1549,14 @@ Feature::Context Dispatcher::ClassifyJavaScriptContext(
if (IsSandboxedPage(url))
return Feature::WEB_PAGE_CONTEXT;
- if (extension && IsExtensionActive(extension->id())) {
- // |extension| is active in this process, but it could be either a true
- // extension process or within the extent of a hosted app. In the latter
- // case this would usually be considered a (blessed) web page context,
- // unless the extension in question is a component extension, in which case
- // we cheat and call it blessed.
- return (extension->is_hosted_app() &&
- extension->location() != Manifest::COMPONENT) ?
- Feature::BLESSED_WEB_PAGE_CONTEXT : Feature::BLESSED_EXTENSION_CONTEXT;
- }
+ if (IsExtensionActive(extension_id))
+ return Feature::BLESSED_EXTENSION_CONTEXT;
// TODO(kalman): This isUnique() check is wrong, it should be performed as
// part of IsSandboxedPage().
if (!origin.isUnique() && extensions_.ExtensionBindingsAllowed(url)) {
- if (!extension) // TODO(kalman): when does this happen?
- return Feature::UNSPECIFIED_CONTEXT;
- return extension->is_hosted_app() ?
- Feature::BLESSED_WEB_PAGE_CONTEXT :
- Feature::UNBLESSED_EXTENSION_CONTEXT;
+ return extensions_.Contains(extension_id) ?
+ Feature::UNBLESSED_EXTENSION_CONTEXT : Feature::UNSPECIFIED_CONTEXT;
}
if (url.is_valid())
diff --git a/chrome/renderer/extensions/dispatcher.h b/chrome/renderer/extensions/dispatcher.h
index a111805..c0cf115 100644
--- a/chrome/renderer/extensions/dispatcher.h
+++ b/chrome/renderer/extensions/dispatcher.h
@@ -243,7 +243,7 @@ class Dispatcher : public content::RenderProcessObserver {
// Returns the Feature::Context type of context for a JavaScript context.
Feature::Context ClassifyJavaScriptContext(
- const Extension* extension,
+ const std::string& extension_id,
int extension_group,
const GURL& url,
const blink::WebSecurityOrigin& origin);