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

Side by Side Diff: chrome/renderer/extensions/extension_dispatcher.cc

Issue 7888064: Only deliver extension messages to contexts that care. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nail down a bit further. Only poke relevant RenderView in the case of chrome.tabs.connect(). Created 9 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/extensions/extension_dispatcher.h" 5 #include "chrome/renderer/extensions/extension_dispatcher.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "chrome/common/child_process_logging.h" 8 #include "chrome/common/child_process_logging.h"
9 #include "chrome/common/chrome_switches.h" 9 #include "chrome/common/chrome_switches.h"
10 #include "chrome/common/extensions/extension.h" 10 #include "chrome/common/extensions/extension.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 } 53 }
54 54
55 ExtensionDispatcher::~ExtensionDispatcher() { 55 ExtensionDispatcher::~ExtensionDispatcher() {
56 } 56 }
57 57
58 bool ExtensionDispatcher::OnControlMessageReceived( 58 bool ExtensionDispatcher::OnControlMessageReceived(
59 const IPC::Message& message) { 59 const IPC::Message& message) {
60 bool handled = true; 60 bool handled = true;
61 IPC_BEGIN_MESSAGE_MAP(ExtensionDispatcher, message) 61 IPC_BEGIN_MESSAGE_MAP(ExtensionDispatcher, message)
62 IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnMessageInvoke) 62 IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnMessageInvoke)
63 IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage)
63 IPC_MESSAGE_HANDLER(ExtensionMsg_SetFunctionNames, OnSetFunctionNames) 64 IPC_MESSAGE_HANDLER(ExtensionMsg_SetFunctionNames, OnSetFunctionNames)
64 IPC_MESSAGE_HANDLER(ExtensionMsg_Loaded, OnLoaded) 65 IPC_MESSAGE_HANDLER(ExtensionMsg_Loaded, OnLoaded)
65 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded) 66 IPC_MESSAGE_HANDLER(ExtensionMsg_Unloaded, OnUnloaded)
66 IPC_MESSAGE_HANDLER(ExtensionMsg_SetScriptingWhitelist, 67 IPC_MESSAGE_HANDLER(ExtensionMsg_SetScriptingWhitelist,
67 OnSetScriptingWhitelist) 68 OnSetScriptingWhitelist)
68 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension) 69 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateExtension, OnActivateExtension)
69 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateApplication, OnActivateApplication) 70 IPC_MESSAGE_HANDLER(ExtensionMsg_ActivateApplication, OnActivateApplication)
70 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions) 71 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdatePermissions, OnUpdatePermissions)
71 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateUserScripts, OnUpdateUserScripts) 72 IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateUserScripts, OnUpdateUserScripts)
72 IPC_MESSAGE_UNHANDLED(handled = false) 73 IPC_MESSAGE_UNHANDLED(handled = false)
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 extension_id, function_name, args, NULL, event_url); 136 extension_id, function_name, args, NULL, event_url);
136 137
137 // Reset the idle handler each time there's any activity like event or message 138 // Reset the idle handler each time there's any activity like event or message
138 // dispatch, for which Invoke is the chokepoint. 139 // dispatch, for which Invoke is the chokepoint.
139 if (is_extension_process_) { 140 if (is_extension_process_) {
140 RenderThread::current()->ScheduleIdleHandler( 141 RenderThread::current()->ScheduleIdleHandler(
141 kInitialExtensionIdleHandlerDelayS); 142 kInitialExtensionIdleHandlerDelayS);
142 } 143 }
143 } 144 }
144 145
146 void ExtensionDispatcher::OnDeliverMessage(int target_port_id,
147 const std::string& message) {
148 RendererExtensionBindings::DeliverMessage(target_port_id,
149 message,
150 NULL); // All render views.
151 }
152
145 void ExtensionDispatcher::OnLoaded(const ExtensionMsg_Loaded_Params& params) { 153 void ExtensionDispatcher::OnLoaded(const ExtensionMsg_Loaded_Params& params) {
146 scoped_refptr<const Extension> extension(params.ConvertToExtension()); 154 scoped_refptr<const Extension> extension(params.ConvertToExtension());
147 if (!extension) { 155 if (!extension) {
148 // This can happen if extension parsing fails for any reason. One reason 156 // This can happen if extension parsing fails for any reason. One reason
149 // this can legitimately happen is if the 157 // this can legitimately happen is if the
150 // --enable-experimental-extension-apis changes at runtime, which happens 158 // --enable-experimental-extension-apis changes at runtime, which happens
151 // during browser tests. Existing renderers won't know about the change. 159 // during browser tests. Existing renderers won't know about the change.
152 return; 160 return;
153 } 161 }
154 162
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 child_process_logging::SetActiveExtensions(active_extensions); 335 child_process_logging::SetActiveExtensions(active_extensions);
328 } 336 }
329 337
330 void ExtensionDispatcher::RegisterExtension(v8::Extension* extension, 338 void ExtensionDispatcher::RegisterExtension(v8::Extension* extension,
331 bool restrict_to_extensions) { 339 bool restrict_to_extensions) {
332 if (restrict_to_extensions) 340 if (restrict_to_extensions)
333 restricted_v8_extensions_.insert(extension->name()); 341 restricted_v8_extensions_.insert(extension->name());
334 342
335 RenderThread::current()->RegisterExtension(extension); 343 RenderThread::current()->RegisterExtension(extension);
336 } 344 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698