Index: chrome/test/chromedriver/chrome/devtools_client_impl.cc |
diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl.cc b/chrome/test/chromedriver/chrome/devtools_client_impl.cc |
index 8bb0875c6939d32e790faecb4fc450398e750161..dd9bcbaa033101a5d00678495019b302bf9dfef3 100644 |
--- a/chrome/test/chromedriver/chrome/devtools_client_impl.cc |
+++ b/chrome/test/chromedriver/chrome/devtools_client_impl.cc |
@@ -474,9 +474,14 @@ bool ParseInspectorMessage( |
} else if (message_dict->GetInteger("id", &id)) { |
base::DictionaryValue* unscoped_error = NULL; |
base::DictionaryValue* unscoped_result = NULL; |
+ // As per Chromium issue 392577, DevTools does not necessarily return a |
+ // "result" dictionary for every valid response. In particular, |
+ // Tracing.start and Tracing.end command responses do not contain one. |
+ // So, if neither "error" nor "result" keys are present, just provide |
+ // a blank result dictionary. |
if (!message_dict->GetDictionary("error", &unscoped_error) && |
!message_dict->GetDictionary("result", &unscoped_result)) |
- return false; |
+ unscoped_result = new base::DictionaryValue(); |
stgao
2014/08/04 21:15:09
Seems like a memory leak, because |unscoped_result
johnmoore
2014/08/04 21:40:48
Done.
|
*type = kCommandResponseMessageType; |
command_response->id = id; |