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

Unified Diff: chrome/test/chromedriver/devtools_client_impl.cc

Issue 12093057: [ChromeDriver] Send DOM.getDocument after each DOM.documentUpdated. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/chromedriver/devtools_client_impl.cc
diff --git a/chrome/test/chromedriver/devtools_client_impl.cc b/chrome/test/chromedriver/devtools_client_impl.cc
index 41e0da8774c9c957ffc3c464b5e8e5156e2a1329..a285e8e14e3891fd2f055b538a3419697e3da3ef 100644
--- a/chrome/test/chromedriver/devtools_client_impl.cc
+++ b/chrome/test/chromedriver/devtools_client_impl.cc
@@ -44,7 +44,13 @@ DevToolsClientImpl::DevToolsClientImpl(
connected_(false),
next_id_(1) {}
-DevToolsClientImpl::~DevToolsClientImpl() {}
+DevToolsClientImpl::~DevToolsClientImpl() {
+ for (ResponseMap::iterator iter = cmd_response_map_.begin();
+ iter != cmd_response_map_.end(); ++iter) {
+ LOG(WARNING) << "Finished with no response for command " << iter->first;
+ delete iter->second;
+ }
+}
Status DevToolsClientImpl::SendCommand(
const std::string& method,
@@ -106,6 +112,7 @@ Status DevToolsClientImpl::SendCommandInternal(
command.Set("params", params.DeepCopy());
std::string message;
base::JSONWriter::Write(&command, &message);
+ LOG(INFO) << "SEND: " << message;
craigdh 2013/01/30 01:44:24 Whoops. Will delete in the next patch.
if (!socket_->Send(message)) {
connected_ = false;
return Status(kDisconnected, "unable to send message to renderer");
@@ -120,22 +127,25 @@ Status DevToolsClientImpl::ReceiveCommandResponse(
internal::InspectorMessageType type;
internal::InspectorEvent event;
internal::InspectorCommandResponse response;
- while (true) {
+ cmd_response_map_[command_id] = NULL;
+ while (cmd_response_map_[command_id] == NULL) {
Status status = ReceiveNextMessage(command_id, &type, &event, &response);
if (status.IsError()) {
return status;
} else if (type == internal::kCommandResponseMessageType) {
- if (response.id != command_id) {
+ if (cmd_response_map_.count(response.id) == 0) {
return Status(kUnknownError,
"received response for unknown command ID");
+ } else if (response.result) {
+ cmd_response_map_[response.id] = response.result.release();
+ } else {
+ return Status(kUnknownError, "inspector error: " + response.error);
}
- if (response.result) {
- result->reset(response.result.release());
- return Status(kOk);
- }
- return Status(kUnknownError, "inspector error: " + response.error);
}
}
+ result->reset(cmd_response_map_[command_id]);
+ cmd_response_map_.erase(command_id);
+ return Status(kOk);
}
Status DevToolsClientImpl::ReceiveNextMessage(
@@ -151,6 +161,7 @@ Status DevToolsClientImpl::ReceiveNextMessage(
}
if (!parser_func_.Run(message, expected_id, type, event, response))
return Status(kUnknownError, "bad inspector message: " + message);
+ LOG(INFO) << "RECV: " << message;
craigdh 2013/01/30 01:44:24 ditto.
if (*type == internal::kEventMessageType)
return NotifyEventListeners(event->method, *event->params);
return Status(kOk);
« no previous file with comments | « chrome/test/chromedriver/devtools_client_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698