diff options
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/chrome_content_renderer_client.cc | 21 | ||||
-rw-r--r-- | chrome/renderer/extensions/chrome_v8_context.cc | 1 | ||||
-rw-r--r-- | chrome/renderer/extensions/dispatcher.cc | 27 | ||||
-rw-r--r-- | chrome/renderer/extensions/dispatcher.h | 2 |
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); |