Chromium Code Reviews| 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..e78d9afd1b86ecc66315030dd92b3dfdce99062f 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, |
| @@ -120,22 +126,25 @@ Status DevToolsClientImpl::ReceiveCommandResponse( |
| internal::InspectorMessageType type; |
| internal::InspectorEvent event; |
| internal::InspectorCommandResponse response; |
| - while (true) { |
| + cmd_response_map_[command_id] = NULL; |
|
kkania
2013/01/30 22:36:05
what's this about?
craigdh
2013/01/30 23:05:21
The overarching idea is that we support overlappin
|
| + 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( |