| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/test/automation/browser_proxy.h" | 5 #include "chrome/test/automation/browser_proxy.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 598 const char* kJSONCommand = "{\"command\": \"GetInitialLoadTimes\"}"; | 598 const char* kJSONCommand = "{\"command\": \"GetInitialLoadTimes\"}"; |
| 599 | 599 |
| 600 *max_stop_time = 0; | 600 *max_stop_time = 0; |
| 601 *min_start_time = -1; | 601 *min_start_time = -1; |
| 602 if (!SendJSONRequest(kJSONCommand, timeout_ms, &json_response)) { | 602 if (!SendJSONRequest(kJSONCommand, timeout_ms, &json_response)) { |
| 603 // Older browser versions do not support GetInitialLoadTimes. | 603 // Older browser versions do not support GetInitialLoadTimes. |
| 604 // Fail gracefully and do not record them in this case. | 604 // Fail gracefully and do not record them in this case. |
| 605 return false; | 605 return false; |
| 606 } | 606 } |
| 607 std::string error; | 607 std::string error; |
| 608 base::JSONReader reader; | 608 scoped_ptr<Value> values(base::JSONReader::ReadAndReturnError( |
| 609 scoped_ptr<Value> values(reader.ReadAndReturnError(json_response, true, | 609 json_response, base::JSON_ALLOW_TRAILING_COMMAS, NULL, &error)); |
| 610 NULL, &error)); | |
| 611 if (!error.empty() || values->GetType() != Value::TYPE_DICTIONARY) | 610 if (!error.empty() || values->GetType() != Value::TYPE_DICTIONARY) |
| 612 return false; | 611 return false; |
| 613 | 612 |
| 614 DictionaryValue* values_dict = static_cast<DictionaryValue*>(values.get()); | 613 DictionaryValue* values_dict = static_cast<DictionaryValue*>(values.get()); |
| 615 | 614 |
| 616 Value* tabs_value; | 615 Value* tabs_value; |
| 617 if (!values_dict->Get("tabs", &tabs_value) || | 616 if (!values_dict->Get("tabs", &tabs_value) || |
| 618 tabs_value->GetType() != Value::TYPE_LIST) | 617 tabs_value->GetType() != Value::TYPE_LIST) |
| 619 return false; | 618 return false; |
| 620 | 619 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 643 if (i == 0) | 642 if (i == 0) |
| 644 *min_start_time = start_ms; | 643 *min_start_time = start_ms; |
| 645 | 644 |
| 646 *min_start_time = std::min(start_ms, *min_start_time); | 645 *min_start_time = std::min(start_ms, *min_start_time); |
| 647 *max_stop_time = std::max(stop_ms, *max_stop_time); | 646 *max_stop_time = std::max(stop_ms, *max_stop_time); |
| 648 stop_times->push_back(stop_ms); | 647 stop_times->push_back(stop_ms); |
| 649 } | 648 } |
| 650 std::sort(stop_times->begin(), stop_times->end()); | 649 std::sort(stop_times->begin(), stop_times->end()); |
| 651 return true; | 650 return true; |
| 652 } | 651 } |
| OLD | NEW |