Index: extensions/browser/user_script_loader.cc |
diff --git a/extensions/browser/user_script_loader.cc b/extensions/browser/user_script_loader.cc |
index 2b836332feba5479d89b2d0b271eeab152d76386..cc0ce00cf82f4c2d9a8e0122ca8f6b1d082207c6 100644 |
--- a/extensions/browser/user_script_loader.cc |
+++ b/extensions/browser/user_script_loader.cc |
@@ -444,11 +444,24 @@ void UserScriptLoader::OnScriptsLoaded( |
// We've got scripts ready to go. |
shared_memory_.reset(shared_memory.release()); |
- for (content::RenderProcessHost::iterator i( |
- content::RenderProcessHost::AllHostsIterator()); |
- !i.IsAtEnd(); |
- i.Advance()) { |
- SendUpdate(i.GetCurrentValue(), shared_memory_.get(), changed_hosts_); |
+ // If user scripts are comming from a <webview>, will only notify the |
Nico
2015/03/05 00:40:11
nit: "coming"
|
+ // RenderProcessHost of that <webview>; otherwise will notify all of the |
+ // RenderProcessHosts. |
+ if (user_scripts && !user_scripts->empty() && |
+ (*user_scripts)[0].consumer_instance_type() == |
+ UserScript::ConsumerInstanceType::WEBVIEW) { |
+ DCHECK_EQ(1u, user_scripts->size()); |
+ int render_process_id = (*user_scripts)[0].routing_info().render_process_id; |
+ content::RenderProcessHost* host = |
+ content::RenderProcessHost::FromID(render_process_id); |
+ if (host) |
+ SendUpdate(host, shared_memory_.get(), changed_hosts_); |
+ } else { |
+ for (content::RenderProcessHost::iterator i( |
+ content::RenderProcessHost::AllHostsIterator()); |
+ !i.IsAtEnd(); i.Advance()) { |
+ SendUpdate(i.GetCurrentValue(), shared_memory_.get(), changed_hosts_); |
+ } |
} |
changed_hosts_.clear(); |