summaryrefslogtreecommitdiffstats
path: root/webkit/glue/devtools
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 /webkit/glue/devtools
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 'webkit/glue/devtools')
-rw-r--r--webkit/glue/devtools/devtools_message_data.cc31
-rw-r--r--webkit/glue/devtools/devtools_message_data.h25
-rw-r--r--webkit/glue/devtools/devtools_rpc.h80
-rw-r--r--webkit/glue/devtools/devtools_rpc_js.h39
4 files changed, 117 insertions, 58 deletions
diff --git a/webkit/glue/devtools/devtools_message_data.cc b/webkit/glue/devtools/devtools_message_data.cc
new file mode 100644
index 0000000..68280fb
--- /dev/null
+++ b/webkit/glue/devtools/devtools_message_data.cc
@@ -0,0 +1,31 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+
+#undef LOG
+
+#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsMessageData.h"
+#include "webkit/glue/devtools/devtools_message_data.h"
+#include "webkit/glue/glue_util.h"
+
+DevToolsMessageData::DevToolsMessageData(
+ const WebKit::WebDevToolsMessageData& data)
+ : class_name(webkit_glue::WebStringToStdString(data.className)),
+ method_name(webkit_glue::WebStringToStdString(data.methodName)) {
+ for (size_t i = 0; i < data.arguments.size(); i++)
+ arguments.push_back(webkit_glue::WebStringToStdString(data.arguments[i]));
+}
+
+WebKit::WebDevToolsMessageData
+ DevToolsMessageData::ToWebDevToolsMessageData() const {
+ WebKit::WebDevToolsMessageData result;
+ result.className = webkit_glue::StdStringToWebString(class_name);
+ result.methodName = webkit_glue::StdStringToWebString(method_name);
+ WebKit::WebVector<WebKit::WebString> web_args(arguments.size());
+ for (size_t i = 0; i < arguments.size(); i++)
+ web_args[i] = webkit_glue::StdStringToWebString(arguments[i]);
+ result.arguments.swap(web_args);
+ return result;
+} \ No newline at end of file
diff --git a/webkit/glue/devtools/devtools_message_data.h b/webkit/glue/devtools/devtools_message_data.h
new file mode 100644
index 0000000..4d28b84
--- /dev/null
+++ b/webkit/glue/devtools/devtools_message_data.h
@@ -0,0 +1,25 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_MESSAGE_DATA_H_
+#define WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_MESSAGE_DATA_H_
+
+#include <string>
+#include <vector>
+
+namespace WebKit {
+struct WebDevToolsMessageData;
+}
+
+struct DevToolsMessageData {
+ DevToolsMessageData() {}
+ explicit DevToolsMessageData(const WebKit::WebDevToolsMessageData&);
+ WebKit::WebDevToolsMessageData ToWebDevToolsMessageData() const;
+
+ std::string class_name;
+ std::string method_name;
+ std::vector<std::string> arguments;
+};
+
+#endif // WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_MESSAGE_DATA_H_
diff --git a/webkit/glue/devtools/devtools_rpc.h b/webkit/glue/devtools/devtools_rpc.h
index 819bd79..c41497f 100644
--- a/webkit/glue/devtools/devtools_rpc.h
+++ b/webkit/glue/devtools/devtools_rpc.h
@@ -51,14 +51,19 @@
#define WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_H_
#include "PlatformString.h"
+#include "Vector.h"
#include <wtf/Noncopyable.h>
+#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsMessageData.h"
+#include "webkit/glue/glue_util.h"
+
namespace WebCore {
class String;
}
using WebCore::String;
+using WTF::Vector;
///////////////////////////////////////////////////////
// RPC dispatch macro
@@ -130,37 +135,35 @@ struct RpcTypeTrait<String> {
#define TOOLS_RPC_STUB_METHOD0(Method) \
virtual void Method() { \
- this->delegate_->SendRpcMessage(class_name, #Method); \
+ Vector<String> args; \
+ this->SendRpcMessage(class_name, #Method, args); \
}
#define TOOLS_RPC_STUB_METHOD1(Method, T1) \
virtual void Method(RpcTypeTrait<T1>::ApiType t1) { \
- this->delegate_->SendRpcMessage( \
- class_name, \
- #Method, \
- RpcTypeTrait<T1>::ToString(t1)); \
+ Vector<String> args(1); \
+ args[0].swap(RpcTypeTrait<T1>::ToString(t1)); \
+ this->SendRpcMessage(class_name, #Method, args); \
}
#define TOOLS_RPC_STUB_METHOD2(Method, T1, T2) \
virtual void Method(RpcTypeTrait<T1>::ApiType t1, \
RpcTypeTrait<T2>::ApiType t2) { \
- this->delegate_->SendRpcMessage( \
- class_name, \
- #Method, \
- RpcTypeTrait<T1>::ToString(t1), \
- RpcTypeTrait<T2>::ToString(t2)); \
+ Vector<String> args(2); \
+ args[0].swap(RpcTypeTrait<T1>::ToString(t1)); \
+ args[1].swap(RpcTypeTrait<T2>::ToString(t2)); \
+ this->SendRpcMessage(class_name, #Method, args); \
}
#define TOOLS_RPC_STUB_METHOD3(Method, T1, T2, T3) \
virtual void Method(RpcTypeTrait<T1>::ApiType t1, \
RpcTypeTrait<T2>::ApiType t2, \
RpcTypeTrait<T3>::ApiType t3) { \
- this->delegate_->SendRpcMessage( \
- class_name, \
- #Method, \
- RpcTypeTrait<T1>::ToString(t1), \
- RpcTypeTrait<T2>::ToString(t2), \
- RpcTypeTrait<T3>::ToString(t3)); \
+ Vector<String> args(3); \
+ args[0].swap(RpcTypeTrait<T1>::ToString(t1)); \
+ args[1].swap(RpcTypeTrait<T2>::ToString(t2)); \
+ args[2].swap(RpcTypeTrait<T3>::ToString(t3)); \
+ this->SendRpcMessage(class_name, #Method, args); \
}
///////////////////////////////////////////////////////
@@ -174,15 +177,15 @@ if (method_name == #Method) { \
#define TOOLS_RPC_DISPATCH1(Method, T1) \
if (method_name == #Method) { \
- delegate->Method(RpcTypeTrait<T1>::Parse(p1)); \
+ delegate->Method(RpcTypeTrait<T1>::Parse(args[0])); \
return true; \
}
#define TOOLS_RPC_DISPATCH2(Method, T1, T2) \
if (method_name == #Method) { \
delegate->Method( \
- RpcTypeTrait<T1>::Parse(p1), \
- RpcTypeTrait<T2>::Parse(p2) \
+ RpcTypeTrait<T1>::Parse(args[0]), \
+ RpcTypeTrait<T2>::Parse(args[1]) \
); \
return true; \
}
@@ -190,9 +193,9 @@ if (method_name == #Method) { \
#define TOOLS_RPC_DISPATCH3(Method, T1, T2, T3) \
if (method_name == #Method) { \
delegate->Method( \
- RpcTypeTrait<T1>::Parse(p1), \
- RpcTypeTrait<T2>::Parse(p2), \
- RpcTypeTrait<T3>::Parse(p3) \
+ RpcTypeTrait<T1>::Parse(args[0]), \
+ RpcTypeTrait<T2>::Parse(args[1]), \
+ RpcTypeTrait<T3>::Parse(args[2]) \
); \
return true; \
}
@@ -239,14 +242,16 @@ class Class##Dispatch : public Noncopyable { \
virtual ~Class##Dispatch() {} \
\
static bool Dispatch(Class* delegate, \
- const WebCore::String& class_name, \
- const WebCore::String& method_name, \
- const WebCore::String& p1, \
- const WebCore::String& p2, \
- const WebCore::String& p3) { \
+ const WebKit::WebDevToolsMessageData& data) { \
+ String class_name = webkit_glue::WebStringToString(data.className); \
if (class_name != #Class) { \
return false; \
} \
+ String method_name = webkit_glue::WebStringToString(data.methodName); \
+ Vector<String> args; \
+ for (size_t i = 0; i < data.arguments.size(); i++) { \
+ args.append(webkit_glue::WebStringToString(data.arguments[i])); \
+ } \
typedef Class CLASS; \
STRUCT( \
TOOLS_RPC_DISPATCH0, \
@@ -265,11 +270,8 @@ class DevToolsRpc {
public:
Delegate() {}
virtual ~Delegate() {}
- virtual void SendRpcMessage(const WebCore::String& class_name,
- const WebCore::String& method_name,
- const WebCore::String& p1 = "",
- const WebCore::String& p2 = "",
- const WebCore::String& p3 = "") = 0;
+ virtual void SendRpcMessage(
+ const WebKit::WebDevToolsMessageData& data) = 0;
};
explicit DevToolsRpc(Delegate* delegate)
@@ -277,6 +279,20 @@ class DevToolsRpc {
virtual ~DevToolsRpc() {};
protected:
+ void SendRpcMessage(const String& class_name,
+ const String& method_name,
+ const Vector<String>& args) {
+ WebKit::WebVector<WebKit::WebString> web_args(args.size());
+ for (size_t i = 0; i < args.size(); i++) {
+ web_args[i] = webkit_glue::StringToWebString(args[i]);
+ }
+ WebKit::WebDevToolsMessageData data;
+ data.className = webkit_glue::StringToWebString(class_name);
+ data.methodName = webkit_glue::StringToWebString(method_name);
+ data.arguments.swap(web_args);
+ this->delegate_->SendRpcMessage(data);
+ }
+
Delegate* delegate_;
};
diff --git a/webkit/glue/devtools/devtools_rpc_js.h b/webkit/glue/devtools/devtools_rpc_js.h
index c4cfc47..761f590 100644
--- a/webkit/glue/devtools/devtools_rpc_js.h
+++ b/webkit/glue/devtools/devtools_rpc_js.h
@@ -33,36 +33,25 @@
#define TOOLS_RPC_JS_STUB_METHOD0(Method) \
static v8::Handle<v8::Value> Js##Method(const v8::Arguments& args) { \
- SendRpcMessage(v8::External::Cast(*args.Data())->Value(), \
- #Method, "", "", ""); \
+ SendRpcMessageFromJs(#Method, args, 0); \
return v8::Undefined(); \
}
#define TOOLS_RPC_JS_STUB_METHOD1(Method, T1) \
static v8::Handle<v8::Value> Js##Method(const v8::Arguments& args) { \
- SendRpcMessage(v8::External::Cast(*args.Data())->Value(), \
- #Method, \
- WebCore::toWebCoreStringWithNullCheck(args[0]), "", ""); \
+ SendRpcMessageFromJs(#Method, args, 1); \
return v8::Undefined(); \
}
#define TOOLS_RPC_JS_STUB_METHOD2(Method, T1, T2) \
static v8::Handle<v8::Value> Js##Method(const v8::Arguments& args) { \
- SendRpcMessage(v8::External::Cast(*args.Data())->Value(), \
- #Method, \
- WebCore::toWebCoreStringWithNullCheck(args[0]), \
- WebCore::toWebCoreStringWithNullCheck(args[1]), \
- ""); \
+ SendRpcMessageFromJs(#Method, args, 2); \
return v8::Undefined(); \
}
#define TOOLS_RPC_JS_STUB_METHOD3(Method, T1, T2, T3) \
static v8::Handle<v8::Value> Js##Method(const v8::Arguments& args) { \
- SendRpcMessage(v8::External::Cast(*args.Data())->Value(), \
- #Method, \
- WebCore::toWebCoreStringWithNullCheck(args[0]), \
- WebCore::toWebCoreStringWithNullCheck(args[1]), \
- WebCore::toWebCoreStringWithNullCheck(args[2])); \
+ SendRpcMessageFromJs(#Method, args, 3); \
return v8::Undefined(); \
}
@@ -92,18 +81,16 @@ class Js##Class##BoundObj : public Class##Stub { \
TOOLS_RPC_JS_STUB_METHOD2, \
TOOLS_RPC_JS_STUB_METHOD3) \
private: \
- static void SendRpcMessage(void* self_ptr, \
- const char* method, \
- const String& param1, \
- const String& param2, \
- const String& param3) { \
+ static void SendRpcMessageFromJs(const char* method, \
+ const v8::Arguments& js_arguments, \
+ size_t args_count) { \
+ Vector<String> args(args_count); \
+ for (size_t i = 0; i < args_count; i++) { \
+ args[i].swap(WebCore::toWebCoreStringWithNullCheck(js_arguments[i])); \
+ } \
+ void* self_ptr = v8::External::Cast(*js_arguments.Data())->Value(); \
Js##Class##BoundObj* self = static_cast<Js##Class##BoundObj*>(self_ptr); \
- self->delegate_->SendRpcMessage( \
- #Class, \
- method, \
- param1, \
- param2, \
- param3); \
+ self->SendRpcMessage(#Class, method, args); \
} \
};