Index: extensions/renderer/user_script_set_manager.cc |
diff --git a/extensions/renderer/user_script_set_manager.cc b/extensions/renderer/user_script_set_manager.cc |
index 6aa22d91dc8351ceac92d7d4889790c521eb0163..b0fac93df528de94b45e12da8d350d3d30ae4503 100644 |
--- a/extensions/renderer/user_script_set_manager.cc |
+++ b/extensions/renderer/user_script_set_manager.cc |
@@ -30,6 +30,26 @@ void UserScriptSetManager::RemoveObserver(Observer* observer) { |
observers_.RemoveObserver(observer); |
} |
+scoped_ptr<ScriptInjection> UserScriptSetManager::GetInjectionForScript( |
+ int64 script_id, |
+ blink::WebFrame* web_frame, |
+ int tab_id, |
+ UserScript::RunLocation run_location, |
+ const GURL& url, |
+ const Extension* extension) { |
+ UserScriptSet* user_script_set = |
+ GetProgrammaticScriptsByExtension(extension->id()); |
+ if (!user_script_set) |
+ return scoped_ptr<ScriptInjection>(); |
+ |
+ return user_script_set->GetInjectionByScriptID(script_id, |
+ web_frame, |
+ tab_id, |
+ run_location, |
+ url, |
+ extension); |
+} |
+ |
bool UserScriptSetManager::OnControlMessageReceived( |
const IPC::Message& message) { |
bool handled = true; |
@@ -40,13 +60,6 @@ bool UserScriptSetManager::OnControlMessageReceived( |
return handled; |
} |
-const UserScriptSet* UserScriptSetManager::GetProgrammaticScriptsByExtension( |
- const ExtensionId& extension_id) { |
- UserScriptSetMap::const_iterator it = |
- programmatic_scripts_.find(extension_id); |
- return it != programmatic_scripts_.end() ? it->second.get() : NULL; |
-} |
- |
void UserScriptSetManager::GetAllInjections( |
ScopedVector<ScriptInjection>* injections, |
blink::WebFrame* web_frame, |
@@ -71,6 +84,13 @@ void UserScriptSetManager::GetAllActiveExtensionIds( |
} |
} |
+UserScriptSet* UserScriptSetManager::GetProgrammaticScriptsByExtension( |
+ const ExtensionId& extension_id) { |
+ UserScriptSetMap::const_iterator it = |
+ programmatic_scripts_.find(extension_id); |
+ return it != programmatic_scripts_.end() ? it->second.get() : NULL; |
+} |
+ |
void UserScriptSetManager::OnUpdateUserScripts( |
base::SharedMemoryHandle shared_memory, |
const ExtensionId& extension_id, |
@@ -91,10 +111,6 @@ void UserScriptSetManager::OnUpdateUserScripts( |
UserScriptSet* scripts = NULL; |
if (!extension_id.empty()) { |
- // The expectation when there is an extensions that "owns" this shared |
- // memory region is that it will list itself as the only changed extension. |
- CHECK(changed_extensions.size() == 1 && |
- changed_extensions.find(extension_id) != changed_extensions.end()); |
if (programmatic_scripts_.find(extension_id) == |
programmatic_scripts_.end()) { |
scripts = new UserScriptSet(extensions_); |
@@ -113,7 +129,14 @@ void UserScriptSetManager::OnUpdateUserScripts( |
const std::set<std::string>* effective_extensions = &changed_extensions; |
std::set<std::string> all_extensions; |
if (changed_extensions.empty()) { |
- all_extensions = extensions_->GetIDs(); |
+ // The meaning of "all extensions" varies, depending on whether some |
+ // extension "owns" this shared memory region. |
+ // No owner => all known extensions. |
+ // Owner => just the owner extension. |
+ if (extension_id.empty()) |
+ all_extensions = extensions_->GetIDs(); |
+ else |
+ all_extensions.insert(extension_id); |
effective_extensions = &all_extensions; |
} |