| Index: extensions/renderer/user_script_set.cc
|
| diff --git a/extensions/renderer/user_script_set.cc b/extensions/renderer/user_script_set.cc
|
| index 8582184bbb68a0a703b40c5934e7da5065b076fb..0326e100e140ecce2f554d218841e2266e46bdd1 100644
|
| --- a/extensions/renderer/user_script_set.cc
|
| +++ b/extensions/renderer/user_script_set.cc
|
| @@ -72,7 +72,13 @@ void UserScriptSet::GetInjections(
|
| if (!extension)
|
| continue;
|
| scoped_ptr<ScriptInjection> injection = GetInjectionForScript(
|
| - *iter, web_frame, tab_id, run_location, document_url, extension);
|
| + *iter,
|
| + web_frame,
|
| + tab_id,
|
| + run_location,
|
| + document_url,
|
| + extension,
|
| + false /* is_declarative */);
|
| if (injection.get())
|
| injections->push_back(injection.release());
|
| }
|
| @@ -143,13 +149,37 @@ bool UserScriptSet::UpdateUserScripts(
|
| return true;
|
| }
|
|
|
| +scoped_ptr<ScriptInjection> UserScriptSet::GetInjectionByScriptID(
|
| + int script_id,
|
| + blink::WebFrame* web_frame,
|
| + int tab_id,
|
| + UserScript::RunLocation run_location,
|
| + const GURL& document_url,
|
| + const Extension* extension) {
|
| + for (ScopedVector<UserScript>::const_iterator it = scripts_.begin();
|
| + it != scripts_.end();
|
| + ++it) {
|
| + if ((*it)->id() == script_id) {
|
| + return GetInjectionForScript(*it,
|
| + web_frame,
|
| + tab_id,
|
| + run_location,
|
| + document_url,
|
| + extension,
|
| + true /* is_declarative */);
|
| + }
|
| + }
|
| + return scoped_ptr<ScriptInjection>();
|
| +}
|
| +
|
| scoped_ptr<ScriptInjection> UserScriptSet::GetInjectionForScript(
|
| UserScript* script,
|
| blink::WebFrame* web_frame,
|
| int tab_id,
|
| UserScript::RunLocation run_location,
|
| const GURL& document_url,
|
| - const Extension* extension) {
|
| + const Extension* extension,
|
| + bool is_declarative) {
|
| scoped_ptr<ScriptInjection> injection;
|
| if (web_frame->parent() && !script->match_all_frames())
|
| return injection.Pass(); // Only match subframes if the script declared it.
|
| @@ -160,13 +190,15 @@ scoped_ptr<ScriptInjection> UserScriptSet::GetInjectionForScript(
|
| if (!script->MatchesURL(effective_document_url))
|
| return injection.Pass();
|
|
|
| - if (extension->permissions_data()->GetContentScriptAccess(
|
| + scoped_ptr<ScriptInjector> injector(new UserScriptInjector(script,
|
| + this,
|
| + is_declarative));
|
| + if (injector->CanExecuteOnFrame(
|
| extension,
|
| - effective_document_url,
|
| - web_frame->top()->document().url(),
|
| + web_frame,
|
| -1, // Content scripts are not tab-specific.
|
| - -1, // We don't have a process id in this context.
|
| - NULL /* ignore error */) == PermissionsData::ACCESS_DENIED) {
|
| + web_frame->top()->document().url()) ==
|
| + PermissionsData::ACCESS_DENIED) {
|
| return injection.Pass();
|
| }
|
|
|
| @@ -176,7 +208,7 @@ scoped_ptr<ScriptInjection> UserScriptSet::GetInjectionForScript(
|
| !script->js_scripts().empty() && script->run_location() == run_location;
|
| if (inject_css || inject_js) {
|
| injection.reset(new ScriptInjection(
|
| - scoped_ptr<ScriptInjector>(new UserScriptInjector(script, this)),
|
| + injector.Pass(),
|
| web_frame,
|
| extension->id(),
|
| run_location,
|
|
|