summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authoryurys@google.com <yurys@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-26 09:13:01 +0000
committeryurys@google.com <yurys@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-26 09:13:01 +0000
commit503683f23ea6fe3eb728f2d09f81f2603ffc7d6f (patch)
treef9bb89d453f8d1dbd4689f0d14c477ca10e2356f /chrome/browser/renderer_host
parentc8c4f954af8b55d12a3d76a0ef41def31594aceb (diff)
downloadchromium_src-503683f23ea6fe3eb728f2d09f81f2603ffc7d6f.zip
chromium_src-503683f23ea6fe3eb728f2d09f81f2603ffc7d6f.tar.gz
chromium_src-503683f23ea6fe3eb728f2d09f81f2603ffc7d6f.tar.bz2
Developer tools messages are forwarded as wrapped IPC::Messages(previously they were represented as int type+string body).
I stole IPC::Message serialization code from jam's CL(http://codereview.chromium.org/20413). jam: please look at message forwarding code. When tools messages are send from browser to renderer they are also wrapped(unlike worker messages which are unwrapped and sent as is). It allows to describe developer tools messages in its own file instead of putting all of them into render_messages_internal.h brettw: please check if it's OK to have ForwardMessageToToolsClient in WebContentsView Review URL: http://codereview.chromium.org/21540 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10455 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc30
-rw-r--r--chrome/browser/renderer_host/render_view_host.h13
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h5
3 files changed, 47 insertions, 1 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 5e644c2..35fd1fd 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -97,7 +97,9 @@ RenderViewHost::RenderViewHost(SiteInstance* instance,
run_modal_reply_msg_(NULL),
has_unload_listener_(false),
is_waiting_for_unload_ack_(false),
- are_javascript_messages_suppressed_(false) {
+ are_javascript_messages_suppressed_(false),
+ inspected_process_id_(-1),
+ inspected_view_id_(-1) {
DCHECK(instance_);
DCHECK(delegate_);
if (modal_dialog_event == NULL)
@@ -733,6 +735,10 @@ void RenderViewHost::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(ViewHostMsg_AddMessageToConsole, OnAddMessageToConsole)
IPC_MESSAGE_HANDLER(ViewHostMsg_DebuggerOutput, OnDebuggerOutput);
IPC_MESSAGE_HANDLER(ViewHostMsg_DidDebugAttach, DidDebugAttach);
+ IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToDevToolsAgent,
+ OnForwardToDevToolsAgent);
+ IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToDevToolsClient,
+ OnForwardToDevToolsClient);
IPC_MESSAGE_HANDLER(ViewHostMsg_UserMetricsRecordAction,
OnUserMetricsRecordAction)
IPC_MESSAGE_HANDLER(ViewHostMsg_MissingPluginStatus, OnMissingPluginStatus);
@@ -1168,6 +1174,28 @@ void RenderViewHost::DidDebugAttach() {
}
}
+void RenderViewHost::SetInspectedView(int inspected_process_id,
+ int inspected_view_id) {
+ inspected_process_id_ = inspected_process_id;
+ inspected_view_id_ = inspected_view_id;
+}
+
+void RenderViewHost::OnForwardToDevToolsAgent(const IPC::Message& message) {
+ RenderViewHost* host = RenderViewHost::FromID(inspected_process_id_,
+ inspected_view_id_);
+ if (!host)
+ return;
+ IPC::Message* m = new IPC::Message(message);
+ m->set_routing_id(inspected_view_id_);
+ host->Send(m);
+}
+
+void RenderViewHost::OnForwardToDevToolsClient(const IPC::Message& message) {
+ RenderViewHostDelegate::View* view = delegate_->GetViewDelegate();
+ if (view)
+ view->ForwardMessageToDevToolsClient(message);
+}
+
void RenderViewHost::OnUserMetricsRecordAction(const std::wstring& action) {
UserMetrics::RecordComputedAction(action.c_str(), process()->profile());
}
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index daf6044..812851c 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -320,6 +320,11 @@ class RenderViewHost : public RenderWidgetHost {
// Must be called before CreateRenderView().
void AllowDOMUIBindings();
+ // Tells the renderer which render view should be inspected by developer
+ // tools loaded in it. This method should be called before renderer is
+ // created.
+ void SetInspectedView(int inspected_process_id, int inspected_view_id);
+
// Sets a property with the given name and value on the DOM UI binding object.
// Must call AllowDOMUIBindings() on this renderer first.
void SetDOMUIProperty(const std::string& name, const std::string& value);
@@ -509,6 +514,8 @@ class RenderViewHost : public RenderWidgetHost {
const std::wstring& source_id);
void OnDebuggerOutput(const std::wstring& output);
void DidDebugAttach();
+ void OnForwardToDevToolsAgent(const IPC::Message& message);
+ void OnForwardToDevToolsClient(const IPC::Message& message);
void OnUserMetricsRecordAction(const std::wstring& action);
void OnMissingPluginStatus(int status);
void OnMessageReceived(IPC::Message* msg) { }
@@ -613,6 +620,12 @@ class RenderViewHost : public RenderWidgetHost {
bool are_javascript_messages_suppressed_;
+ // When this renderer hosts developer tools this two fields contain rerndeder
+ // process id and render view id of the page being inspected. Both fieldes
+ // are -1 if the content of this renderer is not developer tools frontend.
+ int inspected_process_id_;
+ int inspected_view_id_;
+
DISALLOW_EVIL_CONSTRUCTORS(RenderViewHost);
};
diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h
index 5a70c78..cf78cf4 100644
--- a/chrome/browser/renderer_host/render_view_host_delegate.h
+++ b/chrome/browser/renderer_host/render_view_host_delegate.h
@@ -112,6 +112,11 @@ class RenderViewHostDelegate {
// specified events. This gives an opportunity to the browser to process the
// event (used for keyboard shortcuts).
virtual void HandleKeyboardEvent(const WebKeyboardEvent& event) = 0;
+
+ // Forwards message to DevToolsClient in developer tools window open for
+ // this page.
+ virtual void ForwardMessageToDevToolsClient(
+ const IPC::Message& message) = 0;
};
// Interface for saving web pages.