Index: extensions/renderer/user_script_injector.cc |
diff --git a/extensions/renderer/user_script_injector.cc b/extensions/renderer/user_script_injector.cc |
index 79361557d869f80a3bbc25321d039f8a4f696cab..200e069efb67f1349d342a5af41f939381e02f41 100644 |
--- a/extensions/renderer/user_script_injector.cc |
+++ b/extensions/renderer/user_script_injector.cc |
@@ -56,10 +56,12 @@ base::LazyInstance<GreasemonkeyApiJsString> g_greasemonkey_api = |
UserScriptInjector::UserScriptInjector( |
const UserScript* script, |
- UserScriptSet* script_list) |
+ UserScriptSet* script_list, |
+ bool is_declarative) |
: script_(script), |
script_id_(script_->id()), |
extension_id_(script_->extension_id()), |
+ is_declarative_(is_declarative), |
user_script_set_observer_(this) { |
user_script_set_observer_.Add(script_list); |
} |
@@ -132,13 +134,26 @@ PermissionsData::AccessType UserScriptInjector::CanExecuteOnFrame( |
GURL effective_document_url = ScriptContext::GetEffectiveDocumentURL( |
web_frame, web_frame->document().url(), script_->match_about_blank()); |
- return extension->permissions_data()->GetContentScriptAccess( |
- extension, |
- effective_document_url, |
- top_url, |
- tab_id, |
- -1, // no process id |
- NULL /* ignore error */); |
+ // Declarative scripts use "page access" (from "permissions" section in |
+ // manifest) whereas non-declarative scripts use custom |
Devlin
2014/08/25 22:31:06
nit: "user scripts" (not to be mistaken with, e.g.
Mark Dittmer
2014/08/26 17:53:58
Done.
|
+ // "content script access" logic. |
+ if (is_declarative_) { |
+ return extension->permissions_data()->GetPageAccess( |
+ extension, |
+ effective_document_url, |
+ top_url, |
+ tab_id, |
+ -1, // no process id |
+ NULL /* ignore error */); |
+ } else { |
+ return extension->permissions_data()->GetContentScriptAccess( |
+ extension, |
+ effective_document_url, |
+ top_url, |
+ tab_id, |
+ -1, // no process id |
+ NULL /* ignore error */); |
+ } |
} |
std::vector<blink::WebScriptSource> UserScriptInjector::GetJsSources( |