Index: chrome/renderer/render_thread.cc |
diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc |
index a80fc7bd707f18a8789eb3e84c7fa7c55299765e..2af7579a159def8f21371e96b1f5fee6004f2aab 100644 |
--- a/chrome/renderer/render_thread.cc |
+++ b/chrome/renderer/render_thread.cc |
@@ -278,7 +278,7 @@ void RenderThread::Init() { |
callback_factory_.reset(new base::ScopedCallbackFactory<RenderThread>(this)); |
visited_link_slave_.reset(new VisitedLinkSlave()); |
- user_script_slave_.reset(new UserScriptSlave()); |
+ user_script_slave_.reset(new UserScriptSlave(&extensions_)); |
renderer_net_predictor_.reset(new RendererNetPredictor()); |
histogram_snapshots_.reset(new RendererHistogramSnapshots()); |
appcache_dispatcher_.reset(new AppCacheDispatcher(this)); |
@@ -350,6 +350,10 @@ int32 RenderThread::RoutingIDForCurrentContext() { |
return routing_id; |
} |
+const ExtensionRendererInfo* RenderThread::GetExtensions() const { |
+ return &extensions_; |
+} |
+ |
bool RenderThread::Send(IPC::Message* msg) { |
// Certain synchronous messages cannot always be processed synchronously by |
// the browser, e.g., Chrome frame communicating with the embedding browser. |
@@ -536,9 +540,15 @@ void RenderThread::OnSetExtensionFunctionNames( |
ExtensionProcessBindings::SetFunctionNames(names); |
} |
-void RenderThread::OnExtensionsUpdated( |
- const ViewMsg_ExtensionsUpdated_Params& params) { |
- ExtensionRendererInfo::UpdateExtensions(params); |
+void RenderThread::OnExtensionLoaded( |
+ const ViewMsg_ExtensionLoaded_Params& params) { |
+ scoped_refptr<const Extension> extension(params.ConvertToExtension()); |
+ CHECK(extension); |
+ extensions_.Update(extension); |
+} |
+ |
+void RenderThread::OnExtensionUnloaded(const std::string& id) { |
+ extensions_.Remove(id); |
} |
void RenderThread::OnPageActionsUpdated( |
@@ -614,8 +624,10 @@ bool RenderThread::OnControlMessageReceived(const IPC::Message& msg) { |
OnExtensionMessageInvoke) |
IPC_MESSAGE_HANDLER(ViewMsg_Extension_SetFunctionNames, |
OnSetExtensionFunctionNames) |
- IPC_MESSAGE_HANDLER(ViewMsg_ExtensionsUpdated, |
- OnExtensionsUpdated) |
+ IPC_MESSAGE_HANDLER(ViewMsg_ExtensionLoaded, |
+ OnExtensionLoaded) |
+ IPC_MESSAGE_HANDLER(ViewMsg_ExtensionUnloaded, |
+ OnExtensionUnloaded) |
IPC_MESSAGE_HANDLER(ViewMsg_PurgeMemory, OnPurgeMemory) |
IPC_MESSAGE_HANDLER(ViewMsg_PurgePluginListCache, |
OnPurgePluginListCache) |
@@ -1132,7 +1144,7 @@ bool RenderThread::AllowScriptExtension(const std::string& v8_extension_name, |
// Extension-only bindings should be restricted to content scripts and |
// extension-blessed URLs. |
if (extension_group == EXTENSION_GROUP_CONTENT_SCRIPTS || |
- ExtensionRendererInfo::ExtensionBindingsAllowed(url)) { |
+ extensions_.ExtensionBindingsAllowed(url)) { |
return true; |
} |