Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Unified Diff: extensions/renderer/user_script_set.cc

Issue 492133002: Renderer changes for wiring up shared memory with declarative injection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add browsertests Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 */);
Devlin 2014/08/25 22:31:06 We should either pass this in as a param or rename
Mark Dittmer 2014/08/27 21:21:48 Done.
+ }
+ }
+ 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,

Powered by Google App Engine
This is Rietveld 408576698