| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/renderer/user_script_injector.h" | 5 #include "extensions/renderer/user_script_injector.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "content/public/common/url_constants.h" | 10 #include "content/public/common/url_constants.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 | 49 |
| 50 blink::WebScriptSource GreasemonkeyApiJsString::GetSource() const { | 50 blink::WebScriptSource GreasemonkeyApiJsString::GetSource() const { |
| 51 return blink::WebScriptSource(blink::WebString::fromUTF8(source_)); | 51 return blink::WebScriptSource(blink::WebString::fromUTF8(source_)); |
| 52 } | 52 } |
| 53 | 53 |
| 54 base::LazyInstance<GreasemonkeyApiJsString> g_greasemonkey_api = | 54 base::LazyInstance<GreasemonkeyApiJsString> g_greasemonkey_api = |
| 55 LAZY_INSTANCE_INITIALIZER; | 55 LAZY_INSTANCE_INITIALIZER; |
| 56 | 56 |
| 57 } // namespace | 57 } // namespace |
| 58 | 58 |
| 59 UserScriptInjector::UserScriptInjector( | 59 UserScriptInjector::UserScriptInjector(const UserScript* script, |
| 60 const UserScript* script, | 60 UserScriptSet* script_list, |
| 61 UserScriptSet* script_list, | 61 bool is_declarative) |
| 62 bool is_declarative) | |
| 63 : script_(script), | 62 : script_(script), |
| 64 script_id_(script_->id()), | 63 script_id_(script_->id()), |
| 65 extension_id_(script_->extension_id()), | 64 host_id_(script_->host_id()), |
| 66 is_declarative_(is_declarative), | 65 is_declarative_(is_declarative), |
| 67 user_script_set_observer_(this) { | 66 user_script_set_observer_(this) { |
| 68 user_script_set_observer_.Add(script_list); | 67 user_script_set_observer_.Add(script_list); |
| 69 } | 68 } |
| 70 | 69 |
| 71 UserScriptInjector::~UserScriptInjector() { | 70 UserScriptInjector::~UserScriptInjector() { |
| 72 } | 71 } |
| 73 | 72 |
| 74 void UserScriptInjector::OnUserScriptsUpdated( | 73 void UserScriptInjector::OnUserScriptsUpdated( |
| 75 const std::set<std::string>& changed_extensions, | 74 const std::set<HostID>& changed_hosts, |
| 76 const std::vector<UserScript*>& scripts) { | 75 const std::vector<UserScript*>& scripts) { |
| 77 // If the extension causing this injection changed, then this injection | 76 // If the host causing this injection changed, then this injection |
| 78 // will be removed, and there's no guarantee the backing script still exists. | 77 // will be removed, and there's no guarantee the backing script still exists. |
| 79 if (changed_extensions.count(extension_id_) > 0) | 78 if (changed_hosts.count(host_id_) > 0) |
| 80 return; | 79 return; |
| 81 | 80 |
| 82 for (std::vector<UserScript*>::const_iterator iter = scripts.begin(); | 81 for (std::vector<UserScript*>::const_iterator iter = scripts.begin(); |
| 83 iter != scripts.end(); | 82 iter != scripts.end(); |
| 84 ++iter) { | 83 ++iter) { |
| 85 // We need to compare to |script_id_| (and not to script_->id()) because the | 84 // We need to compare to |script_id_| (and not to script_->id()) because the |
| 86 // old |script_| may be deleted by now. | 85 // old |script_| may be deleted by now. |
| 87 if ((*iter)->id() == script_id_) { | 86 if ((*iter)->id() == script_id_) { |
| 88 script_ = *iter; | 87 script_ = *iter; |
| 89 break; | 88 break; |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 | 194 |
| 196 void UserScriptInjector::GetRunInfo( | 195 void UserScriptInjector::GetRunInfo( |
| 197 ScriptsRunInfo* scripts_run_info, | 196 ScriptsRunInfo* scripts_run_info, |
| 198 UserScript::RunLocation run_location) const { | 197 UserScript::RunLocation run_location) const { |
| 199 if (ShouldInjectJs(run_location)) { | 198 if (ShouldInjectJs(run_location)) { |
| 200 const UserScript::FileList& js_scripts = script_->js_scripts(); | 199 const UserScript::FileList& js_scripts = script_->js_scripts(); |
| 201 scripts_run_info->num_js += js_scripts.size(); | 200 scripts_run_info->num_js += js_scripts.size(); |
| 202 for (UserScript::FileList::const_iterator iter = js_scripts.begin(); | 201 for (UserScript::FileList::const_iterator iter = js_scripts.begin(); |
| 203 iter != js_scripts.end(); | 202 iter != js_scripts.end(); |
| 204 ++iter) { | 203 ++iter) { |
| 205 scripts_run_info->executing_scripts[extension_id_].insert( | 204 scripts_run_info->executing_scripts[host_id_.id()].insert( |
| 206 iter->url().path()); | 205 iter->url().path()); |
| 207 } | 206 } |
| 208 } | 207 } |
| 209 | 208 |
| 210 if (ShouldInjectCss(run_location)) | 209 if (ShouldInjectCss(run_location)) |
| 211 scripts_run_info->num_css += script_->css_scripts().size(); | 210 scripts_run_info->num_css += script_->css_scripts().size(); |
| 212 } | 211 } |
| 213 | 212 |
| 214 void UserScriptInjector::OnInjectionComplete( | 213 void UserScriptInjector::OnInjectionComplete( |
| 215 scoped_ptr<base::ListValue> execution_results, | 214 scoped_ptr<base::ListValue> execution_results, |
| 216 UserScript::RunLocation run_location) { | 215 UserScript::RunLocation run_location) { |
| 217 } | 216 } |
| 218 | 217 |
| 219 void UserScriptInjector::OnWillNotInject(InjectFailureReason reason) { | 218 void UserScriptInjector::OnWillNotInject(InjectFailureReason reason) { |
| 220 } | 219 } |
| 221 | 220 |
| 222 } // namespace extensions | 221 } // namespace extensions |
| OLD | NEW |