OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include <list> | 5 #include <list> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 template <typename T> | 71 template <typename T> |
72 scoped_ptr<SyncWebSocket> CreateMockSyncWebSocket() { | 72 scoped_ptr<SyncWebSocket> CreateMockSyncWebSocket() { |
73 return scoped_ptr<SyncWebSocket>(new T()); | 73 return scoped_ptr<SyncWebSocket>(new T()); |
74 } | 74 } |
75 | 75 |
76 } // namespace | 76 } // namespace |
77 | 77 |
78 TEST(DevToolsClientImpl, SendCommand) { | 78 TEST(DevToolsClientImpl, SendCommand) { |
79 SyncWebSocketFactory factory = | 79 SyncWebSocketFactory factory = |
80 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); | 80 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); |
81 DevToolsClientImpl client(factory, "http://url", NULL); | 81 DevToolsClientImpl client(factory, "http://url"); |
82 base::DictionaryValue params; | 82 base::DictionaryValue params; |
83 params.SetInteger("param", 1); | 83 params.SetInteger("param", 1); |
84 ASSERT_EQ(kOk, client.SendCommand("method", params).code()); | 84 ASSERT_EQ(kOk, client.SendCommand("method", params).code()); |
85 } | 85 } |
86 | 86 |
87 TEST(DevToolsClientImpl, SendCommandAndGetResult) { | 87 TEST(DevToolsClientImpl, SendCommandAndGetResult) { |
88 SyncWebSocketFactory factory = | 88 SyncWebSocketFactory factory = |
89 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); | 89 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); |
90 DevToolsClientImpl client(factory, "http://url", NULL); | 90 DevToolsClientImpl client(factory, "http://url"); |
91 base::DictionaryValue params; | 91 base::DictionaryValue params; |
92 params.SetInteger("param", 1); | 92 params.SetInteger("param", 1); |
93 scoped_ptr<base::DictionaryValue> result; | 93 scoped_ptr<base::DictionaryValue> result; |
94 Status status = client.SendCommandAndGetResult("method", params, &result); | 94 Status status = client.SendCommandAndGetResult("method", params, &result); |
95 ASSERT_EQ(kOk, status.code()); | 95 ASSERT_EQ(kOk, status.code()); |
96 std::string json; | 96 std::string json; |
97 base::JSONWriter::Write(result.get(), &json); | 97 base::JSONWriter::Write(result.get(), &json); |
98 ASSERT_STREQ("{\"param\":1}", json.c_str()); | 98 ASSERT_STREQ("{\"param\":1}", json.c_str()); |
99 } | 99 } |
100 | 100 |
(...skipping 17 matching lines...) Expand all Loading... |
118 EXPECT_TRUE(false); | 118 EXPECT_TRUE(false); |
119 return false; | 119 return false; |
120 } | 120 } |
121 }; | 121 }; |
122 | 122 |
123 } // namespace | 123 } // namespace |
124 | 124 |
125 TEST(DevToolsClientImpl, SendCommandConnectFails) { | 125 TEST(DevToolsClientImpl, SendCommandConnectFails) { |
126 SyncWebSocketFactory factory = | 126 SyncWebSocketFactory factory = |
127 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket2>); | 127 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket2>); |
128 DevToolsClientImpl client(factory, "http://url", NULL); | 128 DevToolsClientImpl client(factory, "http://url"); |
129 base::DictionaryValue params; | 129 base::DictionaryValue params; |
130 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 130 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
131 } | 131 } |
132 | 132 |
133 namespace { | 133 namespace { |
134 | 134 |
135 class MockSyncWebSocket3 : public SyncWebSocket { | 135 class MockSyncWebSocket3 : public SyncWebSocket { |
136 public: | 136 public: |
137 MockSyncWebSocket3() {} | 137 MockSyncWebSocket3() {} |
138 virtual ~MockSyncWebSocket3() {} | 138 virtual ~MockSyncWebSocket3() {} |
(...skipping 10 matching lines...) Expand all Loading... |
149 EXPECT_TRUE(false); | 149 EXPECT_TRUE(false); |
150 return false; | 150 return false; |
151 } | 151 } |
152 }; | 152 }; |
153 | 153 |
154 } // namespace | 154 } // namespace |
155 | 155 |
156 TEST(DevToolsClientImpl, SendCommandSendFails) { | 156 TEST(DevToolsClientImpl, SendCommandSendFails) { |
157 SyncWebSocketFactory factory = | 157 SyncWebSocketFactory factory = |
158 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket3>); | 158 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket3>); |
159 DevToolsClientImpl client(factory, "http://url", NULL); | 159 DevToolsClientImpl client(factory, "http://url"); |
160 base::DictionaryValue params; | 160 base::DictionaryValue params; |
161 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 161 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
162 } | 162 } |
163 | 163 |
164 namespace { | 164 namespace { |
165 | 165 |
166 class MockSyncWebSocket4 : public SyncWebSocket { | 166 class MockSyncWebSocket4 : public SyncWebSocket { |
167 public: | 167 public: |
168 MockSyncWebSocket4() {} | 168 MockSyncWebSocket4() {} |
169 virtual ~MockSyncWebSocket4() {} | 169 virtual ~MockSyncWebSocket4() {} |
170 | 170 |
171 virtual bool Connect(const GURL& url) OVERRIDE { | 171 virtual bool Connect(const GURL& url) OVERRIDE { |
172 return true; | 172 return true; |
173 } | 173 } |
174 | 174 |
175 virtual bool Send(const std::string& message) OVERRIDE { | 175 virtual bool Send(const std::string& message) OVERRIDE { |
176 return true; | 176 return true; |
177 } | 177 } |
178 | 178 |
179 virtual bool ReceiveNextMessage(std::string* message) OVERRIDE { | 179 virtual bool ReceiveNextMessage(std::string* message) OVERRIDE { |
180 return false; | 180 return false; |
181 } | 181 } |
182 }; | 182 }; |
183 | 183 |
184 } // namespace | 184 } // namespace |
185 | 185 |
186 TEST(DevToolsClientImpl, SendCommandReceiveNextMessageFails) { | 186 TEST(DevToolsClientImpl, SendCommandReceiveNextMessageFails) { |
187 SyncWebSocketFactory factory = | 187 SyncWebSocketFactory factory = |
188 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket4>); | 188 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket4>); |
189 DevToolsClientImpl client(factory, "http://url", NULL); | 189 DevToolsClientImpl client(factory, "http://url"); |
190 base::DictionaryValue params; | 190 base::DictionaryValue params; |
191 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 191 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
192 } | 192 } |
193 | 193 |
194 namespace { | 194 namespace { |
195 | 195 |
196 class FakeSyncWebSocket : public SyncWebSocket { | 196 class FakeSyncWebSocket : public SyncWebSocket { |
197 public: | 197 public: |
198 FakeSyncWebSocket() : connected_(false) {} | 198 FakeSyncWebSocket() : connected_(false) {} |
199 virtual ~FakeSyncWebSocket() {} | 199 virtual ~FakeSyncWebSocket() {} |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 } | 304 } |
305 *first = false; | 305 *first = false; |
306 return true; | 306 return true; |
307 } | 307 } |
308 | 308 |
309 } // namespace | 309 } // namespace |
310 | 310 |
311 TEST(DevToolsClientImpl, SendCommandOnlyConnectsOnce) { | 311 TEST(DevToolsClientImpl, SendCommandOnlyConnectsOnce) { |
312 SyncWebSocketFactory factory = | 312 SyncWebSocketFactory factory = |
313 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); | 313 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); |
314 DevToolsClientImpl client(factory, "http://url", NULL, base::Bind( | 314 DevToolsClientImpl client(factory, "http://url", base::Bind( |
315 &ReturnCommand)); | 315 &ReturnCommand)); |
316 base::DictionaryValue params; | 316 base::DictionaryValue params; |
317 ASSERT_TRUE(client.SendCommand("method", params).IsOk()); | 317 ASSERT_TRUE(client.SendCommand("method", params).IsOk()); |
318 ASSERT_TRUE(client.SendCommand("method", params).IsOk()); | 318 ASSERT_TRUE(client.SendCommand("method", params).IsOk()); |
319 } | 319 } |
320 | 320 |
321 TEST(DevToolsClientImpl, SendCommandBadResponse) { | 321 TEST(DevToolsClientImpl, SendCommandBadResponse) { |
322 SyncWebSocketFactory factory = | 322 SyncWebSocketFactory factory = |
323 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); | 323 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); |
324 DevToolsClientImpl client(factory, "http://url", NULL, base::Bind( | 324 DevToolsClientImpl client(factory, "http://url", base::Bind( |
325 &ReturnBadResponse)); | 325 &ReturnBadResponse)); |
326 base::DictionaryValue params; | 326 base::DictionaryValue params; |
327 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 327 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
328 } | 328 } |
329 | 329 |
330 TEST(DevToolsClientImpl, SendCommandBadId) { | 330 TEST(DevToolsClientImpl, SendCommandBadId) { |
331 SyncWebSocketFactory factory = | 331 SyncWebSocketFactory factory = |
332 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); | 332 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); |
333 DevToolsClientImpl client(factory, "http://url", NULL, base::Bind( | 333 DevToolsClientImpl client(factory, "http://url", base::Bind( |
334 &ReturnCommandBadId)); | 334 &ReturnCommandBadId)); |
335 base::DictionaryValue params; | 335 base::DictionaryValue params; |
336 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 336 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
337 } | 337 } |
338 | 338 |
339 TEST(DevToolsClientImpl, SendCommandResponseError) { | 339 TEST(DevToolsClientImpl, SendCommandResponseError) { |
340 SyncWebSocketFactory factory = | 340 SyncWebSocketFactory factory = |
341 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); | 341 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); |
342 DevToolsClientImpl client(factory, "http://url", NULL, base::Bind( | 342 DevToolsClientImpl client(factory, "http://url", base::Bind( |
343 &ReturnCommandError)); | 343 &ReturnCommandError)); |
344 base::DictionaryValue params; | 344 base::DictionaryValue params; |
345 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 345 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
346 } | 346 } |
347 | 347 |
348 TEST(DevToolsClientImpl, SendCommandEventBeforeResponse) { | 348 TEST(DevToolsClientImpl, SendCommandEventBeforeResponse) { |
349 SyncWebSocketFactory factory = | 349 SyncWebSocketFactory factory = |
350 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); | 350 base::Bind(&CreateMockSyncWebSocket<FakeSyncWebSocket>); |
351 MockListener listener; | 351 MockListener listener; |
352 bool first = true; | 352 bool first = true; |
353 DevToolsClientImpl client(factory, "http://url", &listener, base::Bind( | 353 DevToolsClientImpl client(factory, "http://url", base::Bind( |
354 &ReturnEventThenResponse, &first)); | 354 &ReturnEventThenResponse, &first)); |
| 355 client.AddListener(&listener); |
355 base::DictionaryValue params; | 356 base::DictionaryValue params; |
356 scoped_ptr<base::DictionaryValue> result; | 357 scoped_ptr<base::DictionaryValue> result; |
357 ASSERT_TRUE(client.SendCommandAndGetResult("method", params, &result).IsOk()); | 358 ASSERT_TRUE(client.SendCommandAndGetResult("method", params, &result).IsOk()); |
358 ASSERT_TRUE(result); | 359 ASSERT_TRUE(result); |
359 int key; | 360 int key; |
360 ASSERT_TRUE(result->GetInteger("key", &key)); | 361 ASSERT_TRUE(result->GetInteger("key", &key)); |
361 ASSERT_EQ(2, key); | 362 ASSERT_EQ(2, key); |
362 } | 363 } |
363 | 364 |
364 TEST(ParseInspectorMessage, NonJson) { | 365 TEST(ParseInspectorMessage, NonJson) { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 internal::InspectorCommandResponse response; | 429 internal::InspectorCommandResponse response; |
429 ASSERT_TRUE(internal::ParseInspectorMessage( | 430 ASSERT_TRUE(internal::ParseInspectorMessage( |
430 "{\"id\":1,\"result\":{\"key\":1}}", 0, &type, &event, &response)); | 431 "{\"id\":1,\"result\":{\"key\":1}}", 0, &type, &event, &response)); |
431 ASSERT_EQ(internal::kCommandResponseMessageType, type); | 432 ASSERT_EQ(internal::kCommandResponseMessageType, type); |
432 ASSERT_EQ(1, response.id); | 433 ASSERT_EQ(1, response.id); |
433 ASSERT_FALSE(response.error.length()); | 434 ASSERT_FALSE(response.error.length()); |
434 int key; | 435 int key; |
435 ASSERT_TRUE(response.result->GetInteger("key", &key)); | 436 ASSERT_TRUE(response.result->GetInteger("key", &key)); |
436 ASSERT_EQ(1, key); | 437 ASSERT_EQ(1, key); |
437 } | 438 } |
OLD | NEW |