Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(241)

Unified Diff: extensions/renderer/user_script_set_manager.cc

Issue 492133002: Renderer changes for wiring up shared memory with declarative injection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698