| 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;
|
| }
|
|
|
|
|