Chromium Code Reviews| 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 6f4679211b96f2f43f81cf2a6c306da8046f6278..244dffbe44cc2d7366f6e70c2242d3f3b3977309 100644 |
| --- a/extensions/renderer/user_script_set_manager.cc |
| +++ b/extensions/renderer/user_script_set_manager.cc |
| @@ -31,6 +31,26 @@ void UserScriptSetManager::RemoveObserver(Observer* observer) { |
| observers_.RemoveObserver(observer); |
| } |
| +scoped_ptr<ScriptInjection> |
| +UserScriptSetManager::GetInjectionForDeclarativeScript( |
| + int64 script_id, |
| + blink::WebFrame* web_frame, |
| + int tab_id, |
| + 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, |
| + UserScript::BROWSER_DRIVEN, |
| + url, |
| + extension); |
| +} |
| + |
| bool UserScriptSetManager::OnControlMessageReceived( |
| const IPC::Message& message) { |
| bool handled = true; |
| @@ -41,13 +61,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, |
| @@ -72,6 +85,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, |
| @@ -92,10 +112,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 && |
|
Devlin
2014/08/25 22:31:06
We can still have a check that the size is <= 1, r
Mark Dittmer
2014/08/26 17:53:58
Sure.
|
| - changed_extensions.find(extension_id) != changed_extensions.end()); |
| if (programmatic_scripts_.find(extension_id) == |
| programmatic_scripts_.end()) { |
| scripts = new UserScriptSet(extensions_); |
| @@ -114,7 +130,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; |
| } |