Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(545)

Side by Side Diff: webkit/glue/devtools/devtools_rpc_js.h

Issue 173480: DevTools: Remove base/values dependency from devtools. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/glue/devtools/devtools_rpc.cc ('k') | webkit/glue/devtools/devtools_rpc_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Additional set of macros for the JS RPC. 5 // Additional set of macros for the JS RPC.
6 6
7 #ifndef WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_JS_H_ 7 #ifndef WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_JS_H_
8 #define WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_JS_H_ 8 #define WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_JS_H_
9 9
10 #include <string> 10 #include <string>
11 11
12 // Do not remove this one although it is not used.
12 #include <wtf/OwnPtr.h> 13 #include <wtf/OwnPtr.h>
13 14
14 #include "base/basictypes.h" 15 #include "base/basictypes.h"
15 #include "base/logging.h"
16 #include "base/values.h"
17 #include "webkit/api/public/WebFrame.h" 16 #include "webkit/api/public/WebFrame.h"
18 #include "webkit/glue/cpp_bound_class.h" 17 #include "webkit/glue/cpp_bound_class.h"
19 #include "webkit/glue/devtools/devtools_rpc.h" 18 #include "webkit/glue/devtools/devtools_rpc.h"
20 #include "webkit/glue/glue_util.h" 19 #include "webkit/glue/glue_util.h"
21 20
22 /////////////////////////////////////////////////////// 21 ///////////////////////////////////////////////////////
23 // JS RPC binds and stubs 22 // JS RPC binds and stubs
24 23
25 template<typename T> 24 template<typename T>
26 struct RpcJsTypeTrait { 25 struct RpcJsTypeTrait {
27 }; 26 };
28 27
29 template<> 28 template<>
30 struct RpcJsTypeTrait<bool> { 29 struct RpcJsTypeTrait<bool> {
31 static bool Pass(const CppVariant& var) { 30 static std::string ToString(const CppVariant& var) {
32 return var.ToBoolean(); 31 return IntToString(var.ToBoolean() ? 1 : 0);
33 } 32 }
34 }; 33 };
35 34
36 template<> 35 template<>
37 struct RpcJsTypeTrait<int> { 36 struct RpcJsTypeTrait<int> {
38 static int Pass(const CppVariant& var) { 37 static std::string ToString(const CppVariant& var) {
39 return var.ToInt32(); 38 return IntToString(var.ToInt32());
40 } 39 }
41 }; 40 };
42 41
43 template<> 42 template<>
44 struct RpcJsTypeTrait<String> { 43 struct RpcJsTypeTrait<String> {
45 static String Pass(const CppVariant& var) { 44 static std::string ToString(const CppVariant& var) {
46 return webkit_glue::StdStringToString(var.ToString()); 45 return var.ToString();
47 } 46 }
48 }; 47 };
49 48
50 template<> 49 template<>
51 struct RpcJsTypeTrait<std::string> { 50 struct RpcJsTypeTrait<std::string> {
52 static std::string Pass(const CppVariant& var) { 51 static std::string ToString(const CppVariant& var) {
53 return var.ToString(); 52 return var.ToString();
54 } 53 }
55 }; 54 };
56 55
57 #define TOOLS_RPC_JS_BIND_METHOD0(Method) \ 56 #define TOOLS_RPC_JS_BIND_METHOD0(Method) \
58 BindMethod(#Method, &OCLASS::Js##Method); 57 BindMethod(#Method, &OCLASS::Js##Method);
59 58
60 #define TOOLS_RPC_JS_BIND_METHOD1(Method, T1) \ 59 #define TOOLS_RPC_JS_BIND_METHOD1(Method, T1) \
61 BindMethod(#Method, &OCLASS::Js##Method); 60 BindMethod(#Method, &OCLASS::Js##Method);
62 61
63 #define TOOLS_RPC_JS_BIND_METHOD2(Method, T1, T2) \ 62 #define TOOLS_RPC_JS_BIND_METHOD2(Method, T1, T2) \
64 BindMethod(#Method, &OCLASS::Js##Method); 63 BindMethod(#Method, &OCLASS::Js##Method);
65 64
66 #define TOOLS_RPC_JS_BIND_METHOD3(Method, T1, T2, T3) \ 65 #define TOOLS_RPC_JS_BIND_METHOD3(Method, T1, T2, T3) \
67 BindMethod(#Method, &OCLASS::Js##Method); 66 BindMethod(#Method, &OCLASS::Js##Method);
68 67
69 #define TOOLS_RPC_JS_BIND_METHOD4(Method, T1, T2, T3, T4) \
70 BindMethod(#Method, &OCLASS::Js##Method);
71
72 #define TOOLS_RPC_JS_STUB_METHOD0(Method) \ 68 #define TOOLS_RPC_JS_STUB_METHOD0(Method) \
73 void Js##Method(const CppArgumentList& args, CppVariant* result) { \ 69 void Js##Method(const CppArgumentList& args, CppVariant* result) { \
74 InvokeAsync(class_name, #Method); \ 70 this->delegate_->SendRpcMessage(class_name, #Method); \
75 result->SetNull(); \ 71 result->SetNull(); \
76 } 72 }
77 73
78 #define TOOLS_RPC_JS_STUB_METHOD1(Method, T1) \ 74 #define TOOLS_RPC_JS_STUB_METHOD1(Method, T1) \
79 void Js##Method(const CppArgumentList& args, CppVariant* result) { \ 75 void Js##Method(const CppArgumentList& args, CppVariant* result) { \
80 T1 t1 = RpcJsTypeTrait<T1>::Pass(args[0]); \ 76 this->delegate_->SendRpcMessage(class_name, #Method, \
81 InvokeAsync(class_name, #Method, &t1); \ 77 RpcJsTypeTrait<T1>::ToString(args[0])); \
82 result->SetNull(); \ 78 result->SetNull(); \
83 } 79 }
84 80
85 #define TOOLS_RPC_JS_STUB_METHOD2(Method, T1, T2) \ 81 #define TOOLS_RPC_JS_STUB_METHOD2(Method, T1, T2) \
86 void Js##Method(const CppArgumentList& args, CppVariant* result) { \ 82 void Js##Method(const CppArgumentList& args, CppVariant* result) { \
87 T1 t1 = RpcJsTypeTrait<T1>::Pass(args[0]); \ 83 this->delegate_->SendRpcMessage(class_name, #Method, \
88 T2 t2 = RpcJsTypeTrait<T2>::Pass(args[1]); \ 84 RpcJsTypeTrait<T1>::ToString(args[0]), \
89 InvokeAsync(class_name, #Method, &t1, &t2); \ 85 RpcJsTypeTrait<T2>::ToString(args[1])); \
90 result->SetNull(); \ 86 result->SetNull(); \
91 } 87 }
92 88
93 #define TOOLS_RPC_JS_STUB_METHOD3(Method, T1, T2, T3) \ 89 #define TOOLS_RPC_JS_STUB_METHOD3(Method, T1, T2, T3) \
94 void Js##Method(const CppArgumentList& args, CppVariant* result) { \ 90 void Js##Method(const CppArgumentList& args, CppVariant* result) { \
95 T1 t1 = RpcJsTypeTrait<T1>::Pass(args[0]); \ 91 this->delegate_->SendRpcMessage(class_name, #Method, \
96 T2 t2 = RpcJsTypeTrait<T2>::Pass(args[1]); \ 92 RpcJsTypeTrait<T1>::ToString(args[0]), \
97 T3 t3 = RpcJsTypeTrait<T3>::Pass(args[2]); \ 93 RpcJsTypeTrait<T2>::ToString(args[1]), \
98 InvokeAsync(class_name, #Method, &t1, &t2, &t3); \ 94 RpcJsTypeTrait<T3>::ToString(args[2])); \
99 result->SetNull(); \
100 }
101
102 #define TOOLS_RPC_JS_STUB_METHOD4(Method, T1, T2, T3, T4) \
103 void Js##Method(const CppArgumentList& args, CppVariant* result) { \
104 T1 t1 = RpcJsTypeTrait<T1>::Pass(args[0]); \
105 T2 t2 = RpcJsTypeTrait<T2>::Pass(args[1]); \
106 T3 t3 = RpcJsTypeTrait<T3>::Pass(args[2]); \
107 T4 t4 = RpcJsTypeTrait<T4>::Pass(args[3]); \
108 InvokeAsync(class_name, #Method, &t1, &t2, &t3, &t4); \
109 result->SetNull(); \ 95 result->SetNull(); \
110 } 96 }
111 97
112 /////////////////////////////////////////////////////// 98 ///////////////////////////////////////////////////////
113 // JS RPC main obj macro 99 // JS RPC main obj macro
114 100
115 #define DEFINE_RPC_JS_BOUND_OBJ(Class, STRUCT, DClass, DELEGATE_STRUCT) \ 101 #define DEFINE_RPC_JS_BOUND_OBJ(Class, STRUCT, DClass, DELEGATE_STRUCT) \
116 class Js##Class##BoundObj : public Class##Stub, \ 102 class Js##Class##BoundObj : public Class##Stub, \
117 public CppBoundClass { \ 103 public CppBoundClass { \
118 public: \ 104 public: \
119 Js##Class##BoundObj(Delegate* rpc_delegate, WebFrame* frame, \ 105 Js##Class##BoundObj(Delegate* rpc_delegate, WebFrame* frame, \
120 const std::wstring& classname) \ 106 const std::wstring& classname) \
121 : Class##Stub(rpc_delegate) { \ 107 : Class##Stub(rpc_delegate) { \
122 BindToJavascript(frame, classname); \ 108 BindToJavascript(frame, classname); \
123 STRUCT( \ 109 STRUCT( \
124 TOOLS_RPC_JS_BIND_METHOD0, \ 110 TOOLS_RPC_JS_BIND_METHOD0, \
125 TOOLS_RPC_JS_BIND_METHOD1, \ 111 TOOLS_RPC_JS_BIND_METHOD1, \
126 TOOLS_RPC_JS_BIND_METHOD2, \ 112 TOOLS_RPC_JS_BIND_METHOD2, \
127 TOOLS_RPC_JS_BIND_METHOD3, \ 113 TOOLS_RPC_JS_BIND_METHOD3) \
128 TOOLS_RPC_JS_BIND_METHOD4) \
129 } \ 114 } \
130 virtual ~Js##Class##BoundObj() {} \ 115 virtual ~Js##Class##BoundObj() {} \
131 typedef Js##Class##BoundObj OCLASS; \ 116 typedef Js##Class##BoundObj OCLASS; \
132 STRUCT( \ 117 STRUCT( \
133 TOOLS_RPC_JS_STUB_METHOD0, \ 118 TOOLS_RPC_JS_STUB_METHOD0, \
134 TOOLS_RPC_JS_STUB_METHOD1, \ 119 TOOLS_RPC_JS_STUB_METHOD1, \
135 TOOLS_RPC_JS_STUB_METHOD2, \ 120 TOOLS_RPC_JS_STUB_METHOD2, \
136 TOOLS_RPC_JS_STUB_METHOD3, \ 121 TOOLS_RPC_JS_STUB_METHOD3) \
137 TOOLS_RPC_JS_STUB_METHOD4) \
138 private: \ 122 private: \
139 DISALLOW_COPY_AND_ASSIGN(Js##Class##BoundObj); \ 123 DISALLOW_COPY_AND_ASSIGN(Js##Class##BoundObj); \
140 }; 124 };
141 125
142 #endif // WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_JS_H_ 126 #endif // WEBKIT_GLUE_DEVTOOLS_DEVTOOLS_RPC_JS_H_
OLDNEW
« no previous file with comments | « webkit/glue/devtools/devtools_rpc.cc ('k') | webkit/glue/devtools/devtools_rpc_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698