summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-11 06:37:15 +0000
committeryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-11 06:37:15 +0000
commitd7cd453d824f825f1f55abf93c7bedef4bf05fcf (patch)
treea3728a054a74b279b80ded75ce647ff32b1761c8 /chrome
parenteabfdae9101aa33a212fdaf240d8e0af70874e16 (diff)
downloadchromium_src-d7cd453d824f825f1f55abf93c7bedef4bf05fcf.zip
chromium_src-d7cd453d824f825f1f55abf93c7bedef4bf05fcf.tar.gz
chromium_src-d7cd453d824f825f1f55abf93c7bedef4bf05fcf.tar.bz2
DevTools: use WebDevToolsMessageData for devtools rpc messages
Review URL: http://codereview.chromium.org/463065 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34333 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/debugger/inspectable_tab_proxy.cc17
-rw-r--r--chrome/browser/debugger/inspectable_tab_proxy.h7
-rw-r--r--chrome/browser/extensions/extension_devtools_bridge.cc12
-rw-r--r--chrome/browser/extensions/extension_devtools_bridge.h7
-rw-r--r--chrome/common/devtools_messages.h27
-rw-r--r--chrome/common/devtools_messages_internal.h17
-rw-r--r--chrome/renderer/devtools_agent.cc43
-rw-r--r--chrome/renderer/devtools_agent.h15
-rw-r--r--chrome/renderer/devtools_agent_filter.cc27
-rw-r--r--chrome/renderer/devtools_agent_filter.h14
-rw-r--r--chrome/renderer/devtools_client.cc27
-rw-r--r--chrome/renderer/devtools_client.h15
12 files changed, 83 insertions, 145 deletions
diff --git a/chrome/browser/debugger/inspectable_tab_proxy.cc b/chrome/browser/debugger/inspectable_tab_proxy.cc
index 29e5d32..159be0b 100644
--- a/chrome/browser/debugger/inspectable_tab_proxy.cc
+++ b/chrome/browser/debugger/inspectable_tab_proxy.cc
@@ -34,21 +34,18 @@ void DevToolsClientHostImpl::SendMessageToClient(
IPC_END_MESSAGE_MAP()
}
-void DevToolsClientHostImpl::OnRpcMessage(const std::string& class_name,
- const std::string& message_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3) {
+void DevToolsClientHostImpl::OnRpcMessage(const DevToolsMessageData& data) {
static const std::string kDebuggerAgentDelegate = "DebuggerAgentDelegate";
static const std::string kToolsAgentDelegate = "ToolsAgentDelegate";
static const std::string kDebuggerOutput = "DebuggerOutput";
static const std::string kFrameNavigate = "FrameNavigate";
- if (class_name == kDebuggerAgentDelegate && message_name == kDebuggerOutput) {
- DebuggerOutput(param1);
- } else if (class_name == kToolsAgentDelegate &&
- message_name == kFrameNavigate) {
- FrameNavigate(param1);
+ if (data.class_name == kDebuggerAgentDelegate &&
+ data.method_name == kDebuggerOutput) {
+ DebuggerOutput(data.arguments[0]);
+ } else if (data.class_name == kToolsAgentDelegate &&
+ data.method_name == kFrameNavigate) {
+ FrameNavigate(data.arguments[0]);
}
}
diff --git a/chrome/browser/debugger/inspectable_tab_proxy.h b/chrome/browser/debugger/inspectable_tab_proxy.h
index 13da2ec..67b5952 100644
--- a/chrome/browser/debugger/inspectable_tab_proxy.h
+++ b/chrome/browser/debugger/inspectable_tab_proxy.h
@@ -15,6 +15,7 @@ class DebuggerRemoteService;
class DevToolsClientHost;
class DevToolsClientHostImpl;
class NavigationController;
+struct DevToolsMessageData;
// Proxies debugged tabs' NavigationControllers using their UIDs.
// Keeps track of tabs being debugged so that we can detach from
@@ -81,11 +82,7 @@ class DevToolsClientHostImpl : public DevToolsClientHost {
private:
// Message handling routines
- void OnRpcMessage(const std::string& class_name,
- const std::string& message_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3);
+ void OnRpcMessage(const DevToolsMessageData& data);
void DebuggerOutput(const std::string& msg);
void FrameNavigate(const std::string& url);
void TabClosed();
diff --git a/chrome/browser/extensions/extension_devtools_bridge.cc b/chrome/browser/extensions/extension_devtools_bridge.cc
index 99f515b..dcf6375 100644
--- a/chrome/browser/extensions/extension_devtools_bridge.cc
+++ b/chrome/browser/extensions/extension_devtools_bridge.cc
@@ -80,16 +80,12 @@ void ExtensionDevToolsBridge::SendMessageToClient(const IPC::Message& msg) {
static const char kApuAgentClassName[] = "ApuAgentDelegate";
static const char kApuPageEventMessageName[] = "DispatchToApu";
-void ExtensionDevToolsBridge::OnRpcMessage(const std::string& class_name,
- const std::string& message_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3) {
+void ExtensionDevToolsBridge::OnRpcMessage(const DevToolsMessageData& data) {
DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI);
- if (class_name == kApuAgentClassName
- && message_name == kApuPageEventMessageName) {
- std::string json = StringPrintf("[%s]", param1.c_str());
+ if (data.class_name == kApuAgentClassName
+ && data.method_name == kApuPageEventMessageName) {
+ std::string json = StringPrintf("[%s]", data.arguments[0].c_str());
profile_->GetExtensionMessageService()->DispatchEventToRenderers(
on_page_event_name_, json);
}
diff --git a/chrome/browser/extensions/extension_devtools_bridge.h b/chrome/browser/extensions/extension_devtools_bridge.h
index 1745ef7..5543b97 100644
--- a/chrome/browser/extensions/extension_devtools_bridge.h
+++ b/chrome/browser/extensions/extension_devtools_bridge.h
@@ -13,6 +13,7 @@
#include "chrome/browser/extensions/extension_message_service.h"
class Profile;
+struct DevToolsMessageData;
// This class is a DevToolsClientHost that fires extension events.
class ExtensionDevToolsBridge : public DevToolsClientHost {
@@ -31,11 +32,7 @@ class ExtensionDevToolsBridge : public DevToolsClientHost {
virtual void SendMessageToClient(const IPC::Message& msg);
private:
- void OnRpcMessage(const std::string& class_name,
- const std::string& message_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3);
+ void OnRpcMessage(const DevToolsMessageData& data);
// ID of the tab we are monitoring.
int tab_id_;
diff --git a/chrome/common/devtools_messages.h b/chrome/common/devtools_messages.h
index abb740d..6c095f4 100644
--- a/chrome/common/devtools_messages.h
+++ b/chrome/common/devtools_messages.h
@@ -5,6 +5,33 @@
#ifndef CHROME_COMMON_DEVTOOLS_MESSAGES_H_
#define CHROME_COMMON_DEVTOOLS_MESSAGES_H_
+#include "ipc/ipc_message_utils.h"
+#include "webkit/glue/devtools/devtools_message_data.h"
+
+namespace IPC {
+
+// Traits for DevToolsMessageData structure to pack/unpack.
+template <>
+struct ParamTraits<DevToolsMessageData> {
+ typedef DevToolsMessageData param_type;
+ static void Write(Message* m, const param_type& p) {
+ WriteParam(m, p.class_name);
+ WriteParam(m, p.method_name);
+ WriteParam(m, p.arguments);
+ }
+ static bool Read(const Message* m, void** iter, param_type* p) {
+ return
+ ReadParam(m, iter, &p->class_name) &&
+ ReadParam(m, iter, &p->method_name) &&
+ ReadParam(m, iter, &p->arguments);
+ }
+ static void Log(const param_type& p, std::wstring* l) {
+ l->append(L"<DevToolsMessageData>");
+ }
+};
+
+} // namespace IPC
+
#define MESSAGES_INTERNAL_FILE "chrome/common/devtools_messages_internal.h"
#include "ipc/ipc_message_macros.h"
diff --git a/chrome/common/devtools_messages_internal.h b/chrome/common/devtools_messages_internal.h
index d80c0ed..d48ec09 100644
--- a/chrome/common/devtools_messages_internal.h
+++ b/chrome/common/devtools_messages_internal.h
@@ -43,18 +43,15 @@
// This file describes developer tools message types.
#include "ipc/ipc_message_macros.h"
+#include "webkit/glue/devtools/devtools_message_data.h"
// These are messages sent from DevToolsAgent to DevToolsClient through the
// browser.
IPC_BEGIN_MESSAGES(DevToolsClient)
// Sends glue-level Rpc message to the client.
- IPC_MESSAGE_CONTROL5(DevToolsClientMsg_RpcMessage,
- std::string /* class_name */,
- std::string /* method_name */,
- std::string /* p1 */,
- std::string /* p2 */,
- std::string /* p3 */)
+ IPC_MESSAGE_CONTROL1(DevToolsClientMsg_RpcMessage,
+ DevToolsMessageData /* message data */)
IPC_END_MESSAGES(DevToolsClient)
@@ -72,12 +69,8 @@ IPC_BEGIN_MESSAGES(DevToolsAgent)
IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_Detach)
// Sends glue-level Rpc message to the agent.
- IPC_MESSAGE_CONTROL5(DevToolsAgentMsg_RpcMessage,
- std::string /* class_name */,
- std::string /* method_name */,
- std::string /* p1 */,
- std::string /* p2 */,
- std::string /* p3 */)
+ IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_RpcMessage,
+ DevToolsMessageData /* message data */)
// Send debugger command to the debugger agent. Debugger commands should
// be handled on IO thread(while all other devtools messages are handled in
diff --git a/chrome/renderer/devtools_agent.cc b/chrome/renderer/devtools_agent.cc
index d1e81e2..11211fd 100644
--- a/chrome/renderer/devtools_agent.cc
+++ b/chrome/renderer/devtools_agent.cc
@@ -9,13 +9,16 @@
#include "chrome/renderer/devtools_agent_filter.h"
#include "chrome/renderer/render_view.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsMessageData.h"
#include "third_party/WebKit/WebKit/chromium/public/WebPoint.h"
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
+#include "webkit/glue/devtools/devtools_message_data.h"
#include "webkit/glue/glue_util.h"
using WebKit::WebDevToolsAgent;
using WebKit::WebPoint;
using WebKit::WebString;
+using WebKit::WebVector;
using WebKit::WebView;
// static
@@ -53,19 +56,11 @@ bool DevToolsAgent::OnMessageReceived(const IPC::Message& message) {
return handled;
}
-void DevToolsAgent::sendMessageToFrontend(const WebString& class_name,
- const WebString& method_name,
- const WebString& param1,
- const WebString& param2,
- const WebString& param3) {
+void DevToolsAgent::sendMessageToFrontend(
+ const WebKit::WebDevToolsMessageData& data) {
IPC::Message* m = new ViewHostMsg_ForwardToDevToolsClient(
routing_id_,
- DevToolsClientMsg_RpcMessage(
- class_name.utf8(),
- method_name.utf8(),
- param1.utf8(),
- param2.utf8(),
- param3.utf8()));
+ DevToolsClientMsg_RpcMessage(DevToolsMessageData(data)));
render_view_->Send(m);
}
@@ -113,19 +108,10 @@ void DevToolsAgent::OnDetach() {
}
}
-void DevToolsAgent::OnRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3) {
+void DevToolsAgent::OnRpcMessage(const DevToolsMessageData& data) {
WebDevToolsAgent* web_agent = GetWebAgent();
if (web_agent) {
- web_agent->dispatchMessageFromFrontend(
- WebString::fromUTF8(class_name),
- WebString::fromUTF8(method_name),
- WebString::fromUTF8(param1),
- WebString::fromUTF8(param2),
- WebString::fromUTF8(param3));
+ web_agent->dispatchMessageFromFrontend(data.ToWebDevToolsMessageData());
}
}
@@ -155,15 +141,6 @@ WebDevToolsAgent* DevToolsAgent::GetWebAgent() {
// static
void WebKit::WebDevToolsAgentClient::sendMessageToFrontendOnIOThread(
- const WebString& class_name,
- const WebString& method_name,
- const WebString& param1,
- const WebString& param2,
- const WebString& param3) {
- DevToolsAgentFilter::SendRpcMessage(
- class_name.utf8(),
- method_name.utf8(),
- param1.utf8(),
- param2.utf8(),
- param3.utf8());
+ const WebDevToolsMessageData& data) {
+ DevToolsAgentFilter::SendRpcMessage(DevToolsMessageData(data));
}
diff --git a/chrome/renderer/devtools_agent.h b/chrome/renderer/devtools_agent.h
index 26a6297..4d05fe0 100644
--- a/chrome/renderer/devtools_agent.h
+++ b/chrome/renderer/devtools_agent.h
@@ -21,6 +21,7 @@ class WebDevToolsAgent;
}
class RenderView;
+struct DevToolsMessageData;
// DevToolsAgent belongs to the inspectable RenderView and provides Glue's
// agents with the communication capabilities. All messages from/to Glue's
@@ -37,11 +38,9 @@ class DevToolsAgent : public WebKit::WebDevToolsAgentClient {
virtual bool OnMessageReceived(const IPC::Message& message);
// WebDevToolsAgentClient implementation
- virtual void sendMessageToFrontend(const WebKit::WebString& class_name,
- const WebKit::WebString& method_name,
- const WebKit::WebString& param1,
- const WebKit::WebString& param2,
- const WebKit::WebString& param3);
+ virtual void sendMessageToFrontend(
+ const WebKit::WebDevToolsMessageData& data);
+
virtual int hostIdentifier();
virtual void forceRepaint();
virtual void runtimeFeatureStateChanged(const WebKit::WebString& feature,
@@ -59,11 +58,7 @@ class DevToolsAgent : public WebKit::WebDevToolsAgentClient {
void OnAttach(const std::vector<std::string>& runtime_features);
void OnDetach();
- void OnRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3);
+ void OnRpcMessage(const DevToolsMessageData& data);
void OnInspectElement(int x, int y);
void OnSetApuAgentEnabled(bool enabled);
diff --git a/chrome/renderer/devtools_agent_filter.cc b/chrome/renderer/devtools_agent_filter.cc
index 375c743..d3a8289 100644
--- a/chrome/renderer/devtools_agent_filter.cc
+++ b/chrome/renderer/devtools_agent_filter.cc
@@ -11,7 +11,9 @@
#include "chrome/renderer/plugin_channel_host.h"
#include "chrome/renderer/render_view.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgent.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsMessageData.h"
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
+#include "webkit/glue/devtools/devtools_message_data.h"
using WebKit::WebDevToolsAgent;
using WebKit::WebString;
@@ -62,32 +64,15 @@ void DevToolsAgentFilter::OnDebuggerPauseScript() {
WebDevToolsAgent::debuggerPauseScript();
}
-void DevToolsAgentFilter::OnRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3) {
+void DevToolsAgentFilter::OnRpcMessage(const DevToolsMessageData& data) {
message_handled_ = WebDevToolsAgent::dispatchMessageFromFrontendOnIOThread(
- WebString::fromUTF8(class_name),
- WebString::fromUTF8(method_name),
- WebString::fromUTF8(param1),
- WebString::fromUTF8(param2),
- WebString::fromUTF8(param3));
+ data.ToWebDevToolsMessageData());
}
// static
-void DevToolsAgentFilter::SendRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3) {
+void DevToolsAgentFilter::SendRpcMessage(const DevToolsMessageData& data) {
IPC::Message* m = new ViewHostMsg_ForwardToDevToolsClient(
current_routing_id_,
- DevToolsClientMsg_RpcMessage(
- class_name,
- method_name,
- param1,
- param2,
- param3));
+ DevToolsClientMsg_RpcMessage(data));
channel_->Send(m);
}
diff --git a/chrome/renderer/devtools_agent_filter.h b/chrome/renderer/devtools_agent_filter.h
index ac5fd0c..8d23918 100644
--- a/chrome/renderer/devtools_agent_filter.h
+++ b/chrome/renderer/devtools_agent_filter.h
@@ -10,6 +10,8 @@
#include "ipc/ipc_channel_proxy.h"
+struct DevToolsMessageData;
+
// DevToolsAgentFilter is registered as an IPC filter in order to be able to
// dispatch messages while on the IO thread. The reason for that is that while
// debugging, Render thread is being held by the v8 and hence no messages
@@ -22,11 +24,7 @@ class DevToolsAgentFilter : public IPC::ChannelProxy::MessageFilter {
DevToolsAgentFilter();
virtual ~DevToolsAgentFilter();
- static void SendRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3);
+ static void SendRpcMessage(const DevToolsMessageData& data);
private:
// IPC::ChannelProxy::MessageFilter override. Called on IO thread.
@@ -40,11 +38,7 @@ class DevToolsAgentFilter : public IPC::ChannelProxy::MessageFilter {
// handle debug messages even when v8 is stopped.
void OnDebuggerCommand(const std::string& command);
void OnDebuggerPauseScript();
- void OnRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3);
+ void OnRpcMessage(const DevToolsMessageData& data);
bool message_handled_;
diff --git a/chrome/renderer/devtools_client.cc b/chrome/renderer/devtools_client.cc
index 8083288..2ab162e 100644
--- a/chrome/renderer/devtools_client.cc
+++ b/chrome/renderer/devtools_client.cc
@@ -11,6 +11,7 @@
#include "chrome/renderer/render_thread.h"
#include "chrome/renderer/render_view.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsFrontend.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsMessageData.h"
#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
using WebKit::WebDevToolsFrontend;
@@ -47,17 +48,9 @@ bool DevToolsClient::OnMessageReceived(const IPC::Message& message) {
return handled;
}
-void DevToolsClient::sendMessageToAgent(const WebString& class_name,
- const WebString& method_name,
- const WebString& param1,
- const WebString& param2,
- const WebString& param3) {
- Send(DevToolsAgentMsg_RpcMessage(
- class_name.utf8(),
- method_name.utf8(),
- param1.utf8(),
- param2.utf8(),
- param3.utf8()));
+void DevToolsClient::sendMessageToAgent(
+ const WebKit::WebDevToolsMessageData& data) {
+ Send(DevToolsAgentMsg_RpcMessage(DevToolsMessageData(data)));
}
void DevToolsClient::sendDebuggerCommandToAgent(const WebString& command) {
@@ -88,15 +81,7 @@ void DevToolsClient::undockWindow() {
render_view_->routing_id()));
}
-void DevToolsClient::OnRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3) {
+void DevToolsClient::OnRpcMessage(const DevToolsMessageData& data) {
web_tools_frontend_->dispatchMessageFromAgent(
- WebString::fromUTF8(class_name),
- WebString::fromUTF8(method_name),
- WebString::fromUTF8(param1),
- WebString::fromUTF8(param2),
- WebString::fromUTF8(param3));
+ data.ToWebDevToolsMessageData());
}
diff --git a/chrome/renderer/devtools_client.h b/chrome/renderer/devtools_client.h
index aad5c09..c8eba9f 100644
--- a/chrome/renderer/devtools_client.h
+++ b/chrome/renderer/devtools_client.h
@@ -21,6 +21,8 @@ namespace WebKit {
class WebDevToolsFrontend;
}
+struct DevToolsMessageData;
+
// Developer tools UI end of communication channel between the render process of
// the page being inspected and tools UI renderer process. All messages will
// go through browser process. On the side of the inspected page there's
@@ -37,11 +39,8 @@ class DevToolsClient : public WebKit::WebDevToolsFrontendClient {
bool OnMessageReceived(const IPC::Message& message);
// WebDevToolsFrontendClient implementation
- virtual void sendMessageToAgent(const WebKit::WebString& class_name,
- const WebKit::WebString& method_name,
- const WebKit::WebString& param1,
- const WebKit::WebString& param2,
- const WebKit::WebString& param3);
+ virtual void sendMessageToAgent(
+ const WebKit::WebDevToolsMessageData& data);
virtual void sendDebuggerCommandToAgent(const WebKit::WebString& command);
virtual void sendDebuggerPauseScript();
@@ -51,11 +50,7 @@ class DevToolsClient : public WebKit::WebDevToolsFrontendClient {
virtual void undockWindow();
private:
- void OnRpcMessage(const std::string& class_name,
- const std::string& method_name,
- const std::string& param1,
- const std::string& param2,
- const std::string& param3);
+ void OnRpcMessage(const DevToolsMessageData& data);
// Sends message to DevToolsAgent.
void Send(const IPC::Message& tools_agent_message);