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 e3eca4f8d647bd206ae526a54ac1b84009c98968..0779ee96dafe8514e1857f8f95052e198c023fa9 100644 |
--- a/chrome/test/chromedriver/devtools_client_impl.cc |
+++ b/chrome/test/chromedriver/devtools_client_impl.cc |
@@ -160,6 +160,16 @@ Status DevToolsClientImpl::ReceiveNextMessage( |
} else if (response->result) { |
cmd_response_map_[response->id] = response->result.release(); |
} else { |
+ scoped_ptr<base::Value> error(base::JSONReader::Read(response->error)); |
+ base::DictionaryValue* error_dict; |
+ if (!error || !error->GetAsDictionary(&error_dict)) |
+ return Status(kUnknownError, "inspector error with no error code"); |
+ int error_code; |
+ if (error_dict->GetInteger("code", &error_code) && |
+ error_code == internal::kContextIdNotFound) { |
+ cmd_response_map_.erase(response->id); |
+ return Status(kNoSuchFrame); |
+ } |
return Status(kUnknownError, "inspector error: " + response->error); |
} |
} |