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); |