summaryrefslogtreecommitdiffstats
path: root/webkit/glue/devtools
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-18 12:56:04 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-18 12:56:04 +0000
commit9cedd561d1cdc80c8c2212e8c36e4dd6cb78c149 (patch)
tree5a47934e1498a5823c8c55a34d386c77a5697c29 /webkit/glue/devtools
parent59d9535e13048aacde05e4c50f1c97d5d3ecfcdf (diff)
downloadchromium_src-9cedd561d1cdc80c8c2212e8c36e4dd6cb78c149.zip
chromium_src-9cedd561d1cdc80c8c2212e8c36e4dd6cb78c149.tar.gz
chromium_src-9cedd561d1cdc80c8c2212e8c36e4dd6cb78c149.tar.bz2
Make Rpc dispatch in DevTools static, remove redundant JSON parsing.
Review URL: http://codereview.chromium.org/44007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11957 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/devtools')
-rw-r--r--webkit/glue/devtools/devtools_rpc.h26
-rw-r--r--webkit/glue/devtools/devtools_rpc_unittest.cc9
2 files changed, 19 insertions, 16 deletions
diff --git a/webkit/glue/devtools/devtools_rpc.h b/webkit/glue/devtools/devtools_rpc.h
index 97a23c5..c85b32a 100644
--- a/webkit/glue/devtools/devtools_rpc.h
+++ b/webkit/glue/devtools/devtools_rpc.h
@@ -44,8 +44,7 @@
// calls to the underlying MyApi methods:
//
// MyApi* real_object;
-// MyApiDispatch dispatch;
-// dispatch.Dispatch(real_object, raw_string_call_generated_by_stub);
+// MyApiDispatch::Dispatch(real_object, raw_string_call_generated_by_stub);
//
// will make corresponding calls to the real object.
@@ -158,7 +157,7 @@ case CLASS::METHOD_##Method: { \
#define TOOLS_RPC_DISPATCH1(Method, T1) \
case CLASS::METHOD_##Method: { \
RpcTypeTrait<T1>::DispatchType t1; \
- DevToolsRpc::GetListValue(*message.get(), 2, &t1); \
+ DevToolsRpc::GetListValue(message, 2, &t1); \
delegate->Method( \
RpcTypeTrait<T1>::Pass(t1)); \
return true; \
@@ -168,8 +167,8 @@ case CLASS::METHOD_##Method: { \
case CLASS::METHOD_##Method: { \
RpcTypeTrait<T1>::DispatchType t1; \
RpcTypeTrait<T2>::DispatchType t2; \
- DevToolsRpc::GetListValue(*message.get(), 2, &t1); \
- DevToolsRpc::GetListValue(*message.get(), 3, &t2); \
+ DevToolsRpc::GetListValue(message, 2, &t1); \
+ DevToolsRpc::GetListValue(message, 3, &t2); \
delegate->Method( \
RpcTypeTrait<T1>::Pass(t1), \
RpcTypeTrait<T2>::Pass(t2) \
@@ -182,9 +181,9 @@ case CLASS::METHOD_##Method: { \
RpcTypeTrait<T1>::DispatchType t1; \
RpcTypeTrait<T2>::DispatchType t2; \
RpcTypeTrait<T3>::DispatchType t3; \
- DevToolsRpc::GetListValue(*message.get(), 2, &t1); \
- DevToolsRpc::GetListValue(*message.get(), 3, &t2); \
- DevToolsRpc::GetListValue(*message.get(), 4, &t3); \
+ DevToolsRpc::GetListValue(message, 2, &t1); \
+ DevToolsRpc::GetListValue(message, 3, &t2); \
+ DevToolsRpc::GetListValue(message, 4, &t3); \
delegate->Method( \
RpcTypeTrait<T1>::Pass(t1), \
RpcTypeTrait<T2>::Pass(t2), \
@@ -237,16 +236,21 @@ class Class##Dispatch { \
public: \
Class##Dispatch() {} \
virtual ~Class##Dispatch() {} \
- bool Dispatch(Class* delegate, const std::string& raw_msg) { \
+ \
+ static bool Dispatch(Class* delegate, const std::string& raw_msg) { \
OwnPtr<ListValue> message( \
static_cast<ListValue*>(DevToolsRpc::ParseMessage(raw_msg))); \
+ return Dispatch(delegate, *message.get()); \
+ } \
+ \
+ static bool Dispatch(Class* delegate, const ListValue& message) { \
int class_id; \
- message->GetInteger(0, &class_id); \
+ message.GetInteger(0, &class_id); \
if (class_id != RpcTypeToNumber<Class>::number) { \
return false; \
} \
int method; \
- message->GetInteger(1, &method); \
+ message.GetInteger(1, &method); \
typedef Class CLASS; \
switch (method) { \
STRUCT( \
diff --git a/webkit/glue/devtools/devtools_rpc_unittest.cc b/webkit/glue/devtools/devtools_rpc_unittest.cc
index 282d511..30e9b00 100644
--- a/webkit/glue/devtools/devtools_rpc_unittest.cc
+++ b/webkit/glue/devtools/devtools_rpc_unittest.cc
@@ -74,7 +74,6 @@ TEST_F(DevToolsRpcTests, TestSerialize) {
TEST_F(DevToolsRpcTests, TestDispatch) {
MockTestRpcClass local;
MockTestRpcClass remote;
- TestRpcClassDispatch dispatch;
// Call 1.
local.Reset();
@@ -83,7 +82,7 @@ TEST_F(DevToolsRpcTests, TestDispatch) {
remote.Method0();
remote.Replay();
- dispatch.Dispatch(&remote, local.get_log());
+ TestRpcClassDispatch::Dispatch(&remote, local.get_log());
remote.Verify();
// Call 2.
@@ -92,7 +91,7 @@ TEST_F(DevToolsRpcTests, TestDispatch) {
remote.Reset();
remote.Method1(10);
remote.Replay();
- dispatch.Dispatch(&remote, local.get_log());
+ TestRpcClassDispatch::Dispatch(&remote, local.get_log());
remote.Verify();
// Call 3.
@@ -102,7 +101,7 @@ TEST_F(DevToolsRpcTests, TestDispatch) {
remote.Method2(20, "foo");
remote.Replay();
- dispatch.Dispatch(&remote, local.get_log());
+ TestRpcClassDispatch::Dispatch(&remote, local.get_log());
remote.Verify();
// Call 4.
@@ -113,7 +112,7 @@ TEST_F(DevToolsRpcTests, TestDispatch) {
remote.Method3(30, "foo", value);
remote.Replay();
- dispatch.Dispatch(&remote, local.get_log());
+ TestRpcClassDispatch::Dispatch(&remote, local.get_log());
remote.Verify();
}