| Index: extensions/renderer/user_script_set.cc
|
| diff --git a/extensions/renderer/user_script_set.cc b/extensions/renderer/user_script_set.cc
|
| index 1d66aaa1e9660c7f6f5d7dcd27cefa9cb6d9f4ea..df7c7c954d5249eed7dbabeceafaa27c080c4c68 100644
|
| --- a/extensions/renderer/user_script_set.cc
|
| +++ b/extensions/renderer/user_script_set.cc
|
| @@ -12,9 +12,11 @@
|
| #include "extensions/common/permissions/permissions_data.h"
|
| #include "extensions/renderer/extension_injection_host.h"
|
| #include "extensions/renderer/extensions_renderer_client.h"
|
| +#include "extensions/renderer/injection_host.h"
|
| #include "extensions/renderer/script_context.h"
|
| #include "extensions/renderer/script_injection.h"
|
| #include "extensions/renderer/user_script_injector.h"
|
| +#include "extensions/renderer/web_ui_injection_host.h"
|
| #include "third_party/WebKit/public/web/WebDocument.h"
|
| #include "third_party/WebKit/public/web/WebFrame.h"
|
| #include "url/gurl.h"
|
| @@ -55,6 +57,8 @@ void UserScriptSet::GetActiveExtensionIds(
|
| for (ScopedVector<UserScript>::const_iterator iter = scripts_.begin();
|
| iter != scripts_.end();
|
| ++iter) {
|
| + if ((*iter)->host_id().type() != HostID::EXTENSIONS)
|
| + continue;
|
| DCHECK(!(*iter)->extension_id().empty());
|
| ids->insert((*iter)->extension_id());
|
| }
|
| @@ -69,16 +73,12 @@ void UserScriptSet::GetInjections(
|
| for (ScopedVector<UserScript>::const_iterator iter = scripts_.begin();
|
| iter != scripts_.end();
|
| ++iter) {
|
| - const Extension* extension = extensions_->GetByID((*iter)->extension_id());
|
| - if (!extension)
|
| - continue;
|
| scoped_ptr<ScriptInjection> injection = GetInjectionForScript(
|
| *iter,
|
| web_frame,
|
| tab_id,
|
| run_location,
|
| document_url,
|
| - extension,
|
| false /* is_declarative */);
|
| if (injection.get())
|
| injections->push_back(injection.release());
|
| @@ -155,8 +155,7 @@ scoped_ptr<ScriptInjection> UserScriptSet::GetDeclarativeScriptInjection(
|
| blink::WebFrame* web_frame,
|
| int tab_id,
|
| UserScript::RunLocation run_location,
|
| - const GURL& document_url,
|
| - const Extension* extension) {
|
| + const GURL& document_url) {
|
| for (ScopedVector<UserScript>::const_iterator it = scripts_.begin();
|
| it != scripts_.end();
|
| ++it) {
|
| @@ -166,7 +165,6 @@ scoped_ptr<ScriptInjection> UserScriptSet::GetDeclarativeScriptInjection(
|
| tab_id,
|
| run_location,
|
| document_url,
|
| - extension,
|
| true /* is_declarative */);
|
| }
|
| }
|
| @@ -181,9 +179,20 @@ scoped_ptr<ScriptInjection> UserScriptSet::GetInjectionForScript(
|
| int tab_id,
|
| UserScript::RunLocation run_location,
|
| const GURL& document_url,
|
| - const Extension* extension,
|
| bool is_declarative) {
|
| scoped_ptr<ScriptInjection> injection;
|
| + scoped_ptr<const InjectionHost> injection_host;
|
| +
|
| + const HostID& host_id = script->host_id();
|
| + if (host_id.type() == HostID::EXTENSIONS) {
|
| + injection_host = ExtensionInjectionHost::Create(host_id.id(), extensions_);
|
| + if (!injection_host)
|
| + return injection.Pass();
|
| + } else {
|
| + DCHECK_EQ(host_id.type(), HostID::WEBUI);
|
| + injection_host.reset(new WebUIInjectionHost(host_id));
|
| + }
|
| +
|
| if (web_frame->parent() && !script->match_all_frames())
|
| return injection.Pass(); // Only match subframes if the script declared it.
|
|
|
| @@ -196,11 +205,8 @@ scoped_ptr<ScriptInjection> UserScriptSet::GetInjectionForScript(
|
| scoped_ptr<ScriptInjector> injector(new UserScriptInjector(script,
|
| this,
|
| is_declarative));
|
| - HostID host_id(HostID::EXTENSIONS, extension->id());
|
| - ExtensionInjectionHost extension_injection_host(
|
| - make_scoped_refptr<const Extension>(extension));
|
| if (injector->CanExecuteOnFrame(
|
| - &extension_injection_host,
|
| + injection_host.get(),
|
| web_frame,
|
| -1, // Content scripts are not tab-specific.
|
| web_frame->top()->document().url()) ==
|
| @@ -216,7 +222,7 @@ scoped_ptr<ScriptInjection> UserScriptSet::GetInjectionForScript(
|
| injection.reset(new ScriptInjection(
|
| injector.Pass(),
|
| web_frame->toWebLocalFrame(),
|
| - host_id,
|
| + injection_host.Pass(),
|
| run_location,
|
| tab_id));
|
| }
|
|
|