OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/chromedriver/capabilities.h" | 5 #include "chrome/test/chromedriver/capabilities.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 if (parser_map.find(it.key()) == parser_map.end()) | 392 if (parser_map.find(it.key()) == parser_map.end()) |
393 return Status(kUnknownError, "unrecognized performance logging " | 393 return Status(kUnknownError, "unrecognized performance logging " |
394 "option: " + it.key()); | 394 "option: " + it.key()); |
395 Status status = parser_map[it.key()].Run(it.value(), capabilities); | 395 Status status = parser_map[it.key()].Run(it.value(), capabilities); |
396 if (status.IsError()) | 396 if (status.IsError()) |
397 return Status(kUnknownError, "cannot parse " + it.key(), status); | 397 return Status(kUnknownError, "cannot parse " + it.key(), status); |
398 } | 398 } |
399 return Status(kOk); | 399 return Status(kOk); |
400 } | 400 } |
401 | 401 |
| 402 Status ParseDevToolsEventsLoggingPrefs(const base::Value& option, |
| 403 Capabilities* capabilities) { |
| 404 const base::ListValue* devtools_events_logging_prefs = nullptr; |
| 405 if (!option.GetAsList(&devtools_events_logging_prefs)) |
| 406 return Status(kUnknownError, "must be a list"); |
| 407 if (devtools_events_logging_prefs->empty()) |
| 408 return Status(kUnknownError, "list must contain values"); |
| 409 capabilities->devtools_events_logging_prefs = |
| 410 devtools_events_logging_prefs->DeepCopy(); |
| 411 return Status(kOk); |
| 412 } |
| 413 |
402 Status ParseWindowTypes(const base::Value& option, Capabilities* capabilities) { | 414 Status ParseWindowTypes(const base::Value& option, Capabilities* capabilities) { |
403 const base::ListValue* window_types = NULL; | 415 const base::ListValue* window_types = NULL; |
404 if (!option.GetAsList(&window_types)) | 416 if (!option.GetAsList(&window_types)) |
405 return Status(kUnknownError, "must be a list"); | 417 return Status(kUnknownError, "must be a list"); |
406 std::set<WebViewInfo::Type> window_types_tmp; | 418 std::set<WebViewInfo::Type> window_types_tmp; |
407 for (size_t i = 0; i < window_types->GetSize(); ++i) { | 419 for (size_t i = 0; i < window_types->GetSize(); ++i) { |
408 std::string window_type; | 420 std::string window_type; |
409 if (!window_types->GetString(i, &window_type)) { | 421 if (!window_types->GetString(i, &window_type)) { |
410 return Status(kUnknownError, "each window type must be a string"); | 422 return Status(kUnknownError, "each window type must be a string"); |
411 } | 423 } |
(...skipping 18 matching lines...) Expand all Loading... |
430 bool is_remote = chrome_options->HasKey("debuggerAddress"); | 442 bool is_remote = chrome_options->HasKey("debuggerAddress"); |
431 | 443 |
432 std::map<std::string, Parser> parser_map; | 444 std::map<std::string, Parser> parser_map; |
433 // Ignore 'args', 'binary' and 'extensions' capabilities by default, since the | 445 // Ignore 'args', 'binary' and 'extensions' capabilities by default, since the |
434 // Java client always passes them. | 446 // Java client always passes them. |
435 parser_map["args"] = base::Bind(&IgnoreCapability); | 447 parser_map["args"] = base::Bind(&IgnoreCapability); |
436 parser_map["binary"] = base::Bind(&IgnoreCapability); | 448 parser_map["binary"] = base::Bind(&IgnoreCapability); |
437 parser_map["extensions"] = base::Bind(&IgnoreCapability); | 449 parser_map["extensions"] = base::Bind(&IgnoreCapability); |
438 | 450 |
439 parser_map["perfLoggingPrefs"] = base::Bind(&ParsePerfLoggingPrefs); | 451 parser_map["perfLoggingPrefs"] = base::Bind(&ParsePerfLoggingPrefs); |
| 452 parser_map["devToolsEventsToLog"] = base::Bind( |
| 453 &ParseDevToolsEventsLoggingPrefs); |
440 parser_map["windowTypes"] = base::Bind(&ParseWindowTypes); | 454 parser_map["windowTypes"] = base::Bind(&ParseWindowTypes); |
441 // Compliance is read when session is initialized and correct response is | 455 // Compliance is read when session is initialized and correct response is |
442 // sent if not parsed correctly. | 456 // sent if not parsed correctly. |
443 parser_map["w3c"] = base::Bind(&IgnoreCapability); | 457 parser_map["w3c"] = base::Bind(&IgnoreCapability); |
444 | 458 |
445 if (is_android) { | 459 if (is_android) { |
446 parser_map["androidActivity"] = | 460 parser_map["androidActivity"] = |
447 base::Bind(&ParseString, &capabilities->android_activity); | 461 base::Bind(&ParseString, &capabilities->android_activity); |
448 parser_map["androidDeviceSerial"] = | 462 parser_map["androidDeviceSerial"] = |
449 base::Bind(&ParseString, &capabilities->android_device_serial); | 463 base::Bind(&ParseString, &capabilities->android_device_serial); |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 LoggingPrefs::const_iterator iter = logging_prefs.find( | 669 LoggingPrefs::const_iterator iter = logging_prefs.find( |
656 WebDriverLog::kPerformanceType); | 670 WebDriverLog::kPerformanceType); |
657 if (iter == logging_prefs.end() || iter->second == Log::kOff) { | 671 if (iter == logging_prefs.end() || iter->second == Log::kOff) { |
658 const base::DictionaryValue* chrome_options = NULL; | 672 const base::DictionaryValue* chrome_options = NULL; |
659 if (desired_caps.GetDictionary("chromeOptions", &chrome_options) && | 673 if (desired_caps.GetDictionary("chromeOptions", &chrome_options) && |
660 chrome_options->HasKey("perfLoggingPrefs")) { | 674 chrome_options->HasKey("perfLoggingPrefs")) { |
661 return Status(kUnknownError, "perfLoggingPrefs specified, " | 675 return Status(kUnknownError, "perfLoggingPrefs specified, " |
662 "but performance logging was not enabled"); | 676 "but performance logging was not enabled"); |
663 } | 677 } |
664 } | 678 } |
| 679 LoggingPrefs::const_iterator dt_events_logging_iter = logging_prefs.find( |
| 680 WebDriverLog::kDevToolsType); |
| 681 if (dt_events_logging_iter == logging_prefs.end() |
| 682 || dt_events_logging_iter->second == Log::kOff) { |
| 683 const base::DictionaryValue* chrome_options = NULL; |
| 684 if (desired_caps.GetDictionary("chromeOptions", &chrome_options) && |
| 685 chrome_options->HasKey("devToolsEventsToLog")) { |
| 686 return Status(kUnknownError, "devToolsEventsToLog specified, " |
| 687 "but devtools events logging was not enabled"); |
| 688 } |
| 689 } |
665 return Status(kOk); | 690 return Status(kOk); |
666 } | 691 } |
OLD | NEW |