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

Unified 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, 11 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/chromedriver/devtools_client_impl_unittest.cc
diff --git a/chrome/test/chromedriver/devtools_client_impl_unittest.cc b/chrome/test/chromedriver/devtools_client_impl_unittest.cc
index faa1a9710f4115bd8ba8c38530a9c9839188f2a0..9f37bcbee0e25c565bcc165a82044f32ee20a0be 100644
--- a/chrome/test/chromedriver/devtools_client_impl_unittest.cc
+++ b/chrome/test/chromedriver/devtools_client_impl_unittest.cc
@@ -320,8 +320,8 @@ bool ReturnEventThenResponse(
*type = internal::kCommandResponseMessageType;
command_response->id = expected_id;
base::DictionaryValue params;
- params.SetInteger("key", 2);
- command_response->result.reset(params.DeepCopy());
+ command_response->result.reset(new base::DictionaryValue());
+ command_response->result->SetInteger("key", 2);
}
*first = false;
return true;
@@ -340,6 +340,40 @@ bool ReturnEvent(
return true;
}
+bool ReturnOutOfOrderResponses(
+ int* recurse_count,
+ DevToolsClient* client,
+ const std::string& message,
+ int expected_id,
+ internal::InspectorMessageType* type,
+ internal::InspectorEvent* event,
+ internal::InspectorCommandResponse* command_response) {
+ int key = 0;
+ base::DictionaryValue params;
+ params.SetInteger("param", 1);
+ switch ((*recurse_count)++) {
+ case 0:
+ client->SendCommand("method", params);
+ *type = internal::kEventMessageType;
+ event->method = "method";
+ event->params.reset(new base::DictionaryValue());
+ event->params->SetInteger("key", 1);
+ return true;
+ case 1:
+ command_response->id = expected_id - 1;
+ key = 2;
+ break;
+ case 2:
+ command_response->id = expected_id;
+ key = 3;
+ break;
+ }
+ *type = internal::kCommandResponseMessageType;
+ command_response->result.reset(new base::DictionaryValue());
+ command_response->result->SetInteger("key", key);
+ return true;
+}
+
bool ReturnError(
const std::string& message,
int expected_id,
@@ -512,3 +546,20 @@ TEST(DevToolsClientImpl, WaitForNextEventError) {
Status status = client.HandleEventsUntil(base::Bind(&AlwaysTrue));
ASSERT_EQ(kUnknownError, status.code());
}
+
+TEST(DevToolsClientImpl, NestedCommandsWithOutOfOrderResults) {
+ SyncWebSocketFactory factory =
+ base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket>);
+ int recurse_count = 0;
+ DevToolsClientImpl client(factory, "http://url");
+ client.SetParserFuncForTesting(
+ base::Bind(&ReturnOutOfOrderResponses, &recurse_count, &client));
+ base::DictionaryValue params;
+ params.SetInteger("param", 1);
+ scoped_ptr<base::DictionaryValue> result;
+ ASSERT_TRUE(client.SendCommandAndGetResult("method", params, &result).IsOk());
+ ASSERT_TRUE(result);
+ int key;
+ ASSERT_TRUE(result->GetInteger("key", &key));
+ ASSERT_EQ(2, key);
+}
« 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