summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authormpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-01 21:17:49 +0000
committermpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-01 21:17:49 +0000
commit4b5d64ff3d7d95247ed4f078d8bf585a1726794d (patch)
tree050a523a5bbccf28ade0814b38bcc9bee187cd04 /chrome/browser/renderer_host
parent912445b6db66140aecb3bc822075a6e9bb9d7e33 (diff)
downloadchromium_src-4b5d64ff3d7d95247ed4f078d8bf585a1726794d.zip
chromium_src-4b5d64ff3d7d95247ed4f078d8bf585a1726794d.tar.gz
chromium_src-4b5d64ff3d7d95247ed4f078d8bf585a1726794d.tar.bz2
Pass down the opener tab when a message channel is opened to an extension.
Also did a bunch of cleanup of ExtensionMessageService. I converted it to primarily UI-thread habitation, with one function that needs to be on the IO thread so it can handle a synchronous IPC message. TEST=N/A Review URL: http://codereview.chromium.org/99261 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15097 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc18
-rw-r--r--chrome/browser/renderer_host/render_view_host.h1
-rw-r--r--chrome/browser/renderer_host/resource_message_filter.cc16
-rw-r--r--chrome/browser/renderer_host/resource_message_filter.h4
4 files changed, 19 insertions, 20 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 3646358..c3d7aeb 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -15,8 +15,9 @@
#include "chrome/browser/cross_site_request_manager.h"
#include "chrome/browser/debugger/debugger_wrapper.h"
#include "chrome/browser/debugger/devtools_manager.h"
-#include "chrome/browser/profile.h"
+#include "chrome/browser/extensions/extension_message_service.h"
#include "chrome/browser/metrics/user_metrics.h"
+#include "chrome/browser/profile.h"
#include "chrome/browser/renderer_host/renderer_security_policy.h"
#include "chrome/browser/renderer_host/render_process_host.h"
#include "chrome/browser/renderer_host/render_view_host_delegate.h"
@@ -26,13 +27,13 @@
#include "chrome/browser/tab_contents/site_instance.h"
#include "chrome/browser/tab_contents/web_contents.h"
#include "chrome/common/bindings_policy.h"
-#include "chrome/common/render_messages.h"
-#include "chrome/common/resource_bundle.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
+#include "chrome/common/render_messages.h"
+#include "chrome/common/resource_bundle.h"
#include "chrome/common/result_codes.h"
-#include "chrome/common/url_constants.h"
#include "chrome/common/thumbnail_score.h"
+#include "chrome/common/url_constants.h"
#include "net/base/net_util.h"
#include "skia/include/SkBitmap.h"
#include "third_party/WebKit/WebKit/chromium/public/WebFindOptions.h"
@@ -775,6 +776,8 @@ void RenderViewHost::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(ViewHostMsg_SelectionChanged, OnMsgSelectionChanged)
IPC_MESSAGE_HANDLER(ViewHostMsg_PasteFromSelectionClipboard,
OnMsgPasteFromSelectionClipboard)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_ExtensionPostMessage,
+ OnExtensionPostMessage)
// Have the super handle all other messages.
IPC_MESSAGE_UNHANDLED(RenderWidgetHost::OnMessageReceived(msg))
IPC_END_MESSAGE_MAP_EX()
@@ -1368,3 +1371,10 @@ void RenderViewHost::SendExtensionResponse(int callback_id,
const std::string& response) {
Send(new ViewMsg_ExtensionResponse(routing_id(), callback_id, response));
}
+
+void RenderViewHost::OnExtensionPostMessage(
+ int port_id, const std::string& message) {
+ URLRequestContext* context = process()->profile()->GetRequestContext();
+ ExtensionMessageService::GetInstance(context)->
+ PostMessageFromRenderer(port_id, message);
+}
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 0125b50..b86b5f5 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -543,6 +543,7 @@ class RenderViewHost : public RenderWidgetHost {
void OnExtensionRequest(const std::string& name, const std::string& args,
int callback_id);
+ void OnExtensionPostMessage(int port_id, const std::string& message);
// Helper function to send a navigation message. If a cross-site request is
// in progress, we may be suspended while waiting for the onbeforeunload
diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc
index 804042f..3fc0602 100644
--- a/chrome/browser/renderer_host/resource_message_filter.cc
+++ b/chrome/browser/renderer_host/resource_message_filter.cc
@@ -193,10 +193,6 @@ void ResourceMessageFilter::OnChannelConnected(int32 peer_pid) {
// Hook AudioRendererHost to this object after channel is connected so it can
// this object for sending messages.
audio_renderer_host_->IPCChannelConnected(render_process_id_, handle(), this);
-
- // Ditto for the ExtensionMessageService.
- ExtensionMessageService::GetInstance(request_context_.get())->
- RendererReady(this);
}
// Called on the IPC thread:
@@ -299,8 +295,6 @@ bool ResourceMessageFilter::OnMessageReceived(const IPC::Message& message) {
#endif
IPC_MESSAGE_HANDLER(ViewHostMsg_OpenChannelToExtension,
OnOpenChannelToExtension)
- IPC_MESSAGE_HANDLER(ViewHostMsg_ExtensionPostMessage,
- OnExtensionPostMessage)
IPC_MESSAGE_UNHANDLED(
handled = false)
IPC_END_MESSAGE_MAP_EX()
@@ -829,13 +823,7 @@ void ResourceMessageFilter::OnFreeTransportDIB(
#endif
void ResourceMessageFilter::OnOpenChannelToExtension(
- const std::string& extension_id, int* port_id) {
+ int routing_id, const std::string& extension_id, int* port_id) {
*port_id = ExtensionMessageService::GetInstance(request_context_.get())->
- OpenChannelToExtension(extension_id, this);
-}
-
-void ResourceMessageFilter::OnExtensionPostMessage(
- int port_id, const std::string& message) {
- ExtensionMessageService::GetInstance(request_context_.get())->
- PostMessageFromRenderer(port_id, message, this);
+ OpenChannelToExtension(routing_id, extension_id, this);
}
diff --git a/chrome/browser/renderer_host/resource_message_filter.h b/chrome/browser/renderer_host/resource_message_filter.h
index 74181bf..e16ac8d 100644
--- a/chrome/browser/renderer_host/resource_message_filter.h
+++ b/chrome/browser/renderer_host/resource_message_filter.h
@@ -202,8 +202,8 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
TransportDIB::Handle* result);
void OnFreeTransportDIB(TransportDIB::Id dib_id);
- void OnOpenChannelToExtension(const std::string& extension_id, int* port_id);
- void OnExtensionPostMessage(int port_id, const std::string& message);
+ void OnOpenChannelToExtension(int routing_id,
+ const std::string& extension_id, int* port_id);
#if defined(OS_LINUX)
void SendDelayedReply(IPC::Message* reply_msg);