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

Side by Side Diff: chrome/test/chromedriver/devtools_client_impl_unittest.cc

Issue 12093057: [ChromeDriver] Send DOM.getDocument after each DOM.documentUpdated. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix compile error on win_rel Created 7 years, 10 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
OLDNEW
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 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 internal::InspectorCommandResponse* command_response) { 313 internal::InspectorCommandResponse* command_response) {
314 if (*first) { 314 if (*first) {
315 *type = internal::kEventMessageType; 315 *type = internal::kEventMessageType;
316 event->method = "method"; 316 event->method = "method";
317 event->params.reset(new base::DictionaryValue()); 317 event->params.reset(new base::DictionaryValue());
318 event->params->SetInteger("key", 1); 318 event->params->SetInteger("key", 1);
319 } else { 319 } else {
320 *type = internal::kCommandResponseMessageType; 320 *type = internal::kCommandResponseMessageType;
321 command_response->id = expected_id; 321 command_response->id = expected_id;
322 base::DictionaryValue params; 322 base::DictionaryValue params;
323 params.SetInteger("key", 2); 323 command_response->result.reset(new base::DictionaryValue());
324 command_response->result.reset(params.DeepCopy()); 324 command_response->result->SetInteger("key", 2);
325 } 325 }
326 *first = false; 326 *first = false;
327 return true; 327 return true;
328 } 328 }
329 329
330 bool ReturnEvent( 330 bool ReturnEvent(
331 const std::string& message, 331 const std::string& message,
332 int expected_id, 332 int expected_id,
333 internal::InspectorMessageType* type, 333 internal::InspectorMessageType* type,
334 internal::InspectorEvent* event, 334 internal::InspectorEvent* event,
335 internal::InspectorCommandResponse* command_response) { 335 internal::InspectorCommandResponse* command_response) {
336 *type = internal::kEventMessageType; 336 *type = internal::kEventMessageType;
337 event->method = "method"; 337 event->method = "method";
338 event->params.reset(new base::DictionaryValue()); 338 event->params.reset(new base::DictionaryValue());
339 event->params->SetInteger("key", 1); 339 event->params->SetInteger("key", 1);
340 return true; 340 return true;
341 } 341 }
342 342
343 bool ReturnOutOfOrderResponses(
344 int* recurse_count,
345 DevToolsClient* client,
346 const std::string& message,
347 int expected_id,
348 internal::InspectorMessageType* type,
349 internal::InspectorEvent* event,
350 internal::InspectorCommandResponse* command_response) {
351 int key = 0;
352 base::DictionaryValue params;
353 params.SetInteger("param", 1);
354 switch ((*recurse_count)++) {
355 case 0:
356 client->SendCommand("method", params);
357 *type = internal::kEventMessageType;
358 event->method = "method";
359 event->params.reset(new base::DictionaryValue());
360 event->params->SetInteger("key", 1);
361 return true;
362 case 1:
363 command_response->id = expected_id - 1;
364 key = 2;
365 break;
366 case 2:
367 command_response->id = expected_id;
368 key = 3;
369 break;
370 }
371 *type = internal::kCommandResponseMessageType;
372 command_response->result.reset(new base::DictionaryValue());
373 command_response->result->SetInteger("key", key);
374 return true;
375 }
376
343 bool ReturnError( 377 bool ReturnError(
344 const std::string& message, 378 const std::string& message,
345 int expected_id, 379 int expected_id,
346 internal::InspectorMessageType* type, 380 internal::InspectorMessageType* type,
347 internal::InspectorEvent* event, 381 internal::InspectorEvent* event,
348 internal::InspectorCommandResponse* command_response) { 382 internal::InspectorCommandResponse* command_response) {
349 return false; 383 return false;
350 } 384 }
351 385
352 bool AlwaysTrue() { 386 bool AlwaysTrue() {
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 } 539 }
506 540
507 TEST(DevToolsClientImpl, WaitForNextEventError) { 541 TEST(DevToolsClientImpl, WaitForNextEventError) {
508 SyncWebSocketFactory factory = 542 SyncWebSocketFactory factory =
509 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>); 543 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>);
510 DevToolsClientImpl client(factory, "http://url", base::Bind( 544 DevToolsClientImpl client(factory, "http://url", base::Bind(
511 &ReturnError)); 545 &ReturnError));
512 Status status = client.HandleEventsUntil(base::Bind(&AlwaysTrue)); 546 Status status = client.HandleEventsUntil(base::Bind(&AlwaysTrue));
513 ASSERT_EQ(kUnknownError, status.code()); 547 ASSERT_EQ(kUnknownError, status.code());
514 } 548 }
549
550 TEST(DevToolsClientImpl, NestedCommandsWithOutOfOrderResults) {
551 SyncWebSocketFactory factory =
552 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>);
553 int recurse_count = 0;
554 DevToolsClientImpl client(factory, "http://url");
555 client.SetParserFuncForTesting(
556 base::Bind(&ReturnOutOfOrderResponses, &recurse_count, &client));
557 base::DictionaryValue params;
558 params.SetInteger("param", 1);
559 scoped_ptr<base::DictionaryValue> result;
560 ASSERT_TRUE(client.SendCommandAndGetResult("method", params, &result).IsOk());
561 ASSERT_TRUE(result);
562 int key;
563 ASSERT_TRUE(result->GetInteger("key", &key));
564 ASSERT_EQ(2, key);
565 }
OLDNEW
« no previous file with comments | « chrome/test/chromedriver/devtools_client_impl.cc ('k') | chrome/test/chromedriver/dom_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698