Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: chrome/test/chromedriver/capabilities.cc

Issue 23566018: [chromedriver] Remove Logger and just use base LOG. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
11 #include "base/json/string_escape.h" 11 #include "base/json/string_escape.h"
12 #include "base/logging.h"
12 #include "base/strings/string_number_conversions.h" 13 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/string_split.h" 14 #include "base/strings/string_split.h"
14 #include "base/strings/string_tokenizer.h" 15 #include "base/strings/string_tokenizer.h"
15 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
16 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
17 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
18 #include "base/values.h" 19 #include "base/values.h"
19 #include "chrome/test/chromedriver/chrome/log.h"
20 #include "chrome/test/chromedriver/chrome/status.h" 20 #include "chrome/test/chromedriver/chrome/status.h"
21 #include "chrome/test/chromedriver/logging.h"
21 #include "net/base/net_util.h" 22 #include "net/base/net_util.h"
22 23
23 namespace { 24 namespace {
24 25
25 typedef base::Callback<Status(const base::Value&, Capabilities*)> Parser; 26 typedef base::Callback<Status(const base::Value&, Capabilities*)> Parser;
26 27
27 Status ParseBoolean( 28 Status ParseBoolean(
28 bool* to_set, 29 bool* to_set,
29 const base::Value& option, 30 const base::Value& option,
30 Capabilities* capabilities) { 31 Capabilities* capabilities) {
(...skipping 30 matching lines...) Expand all
61 const base::Value& option, 62 const base::Value& option,
62 Capabilities* capabilities) { 63 Capabilities* capabilities) {
63 const base::DictionaryValue* dict = NULL; 64 const base::DictionaryValue* dict = NULL;
64 if (!option.GetAsDictionary(&dict)) 65 if (!option.GetAsDictionary(&dict))
65 return Status(kUnknownError, "must be a dictionary"); 66 return Status(kUnknownError, "must be a dictionary");
66 to_set->reset(dict->DeepCopy()); 67 to_set->reset(dict->DeepCopy());
67 return Status(kOk); 68 return Status(kOk);
68 } 69 }
69 70
70 Status IgnoreDeprecatedOption( 71 Status IgnoreDeprecatedOption(
71 Log* log,
72 const char* option_name, 72 const char* option_name,
73 const base::Value& option, 73 const base::Value& option,
74 Capabilities* capabilities) { 74 Capabilities* capabilities) {
75 log->AddEntry(Log::kWarning, 75 LOG(WARNING) << "Deprecated chrome option is ignored: " << option_name;
76 base::StringPrintf("deprecated chrome option is ignored: '%s'",
77 option_name));
78 return Status(kOk); 76 return Status(kOk);
79 } 77 }
80 78
81 Status IgnoreCapability(const base::Value& option, Capabilities* capabilities) { 79 Status IgnoreCapability(const base::Value& option, Capabilities* capabilities) {
82 return Status(kOk); 80 return Status(kOk);
83 } 81 }
84 82
85 Status ParseLogPath(const base::Value& option, Capabilities* capabilities) { 83 Status ParseLogPath(const base::Value& option, Capabilities* capabilities) {
86 if (!option.GetAsString(&capabilities->log_path)) 84 if (!option.GetAsString(&capabilities->log_path))
87 return Status(kUnknownError, "must be a string"); 85 return Status(kUnknownError, "must be a string");
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 base::StringToInt(values[1], &port); 214 base::StringToInt(values[1], &port);
217 if (port <= 0) 215 if (port <= 0)
218 return Status(kUnknownError, "port must be > 0"); 216 return Status(kUnknownError, "port must be > 0");
219 217
220 capabilities->debugger_address = NetAddress(values[0], port); 218 capabilities->debugger_address = NetAddress(values[0], port);
221 return Status(kOk); 219 return Status(kOk);
222 } 220 }
223 221
224 Status ParseLoggingPrefs(const base::Value& option, 222 Status ParseLoggingPrefs(const base::Value& option,
225 Capabilities* capabilities) { 223 Capabilities* capabilities) {
226 const base::DictionaryValue* logging_prefs_dict = NULL; 224 const base::DictionaryValue* logging_prefs = NULL;
227 if (!option.GetAsDictionary(&logging_prefs_dict)) 225 if (!option.GetAsDictionary(&logging_prefs))
228 return Status(kUnknownError, "must be a dictionary"); 226 return Status(kUnknownError, "must be a dictionary");
229 227
230 // TODO(klm): verify log types. 228 for (base::DictionaryValue::Iterator pref(*logging_prefs);
231 // TODO(klm): verify log levels. 229 !pref.IsAtEnd(); pref.Advance()) {
232 capabilities->logging_prefs.reset(logging_prefs_dict->DeepCopy()); 230 std::string type = pref.key();
231 Log::Level level;
232 std::string level_name;
233 if (!pref.value().GetAsString(&level_name) ||
234 !WebDriverLog::NameToLevel(level_name, &level)) {
235 return Status(kUnknownError, "invalid log level for '" + type + "' log");
236 }
237 capabilities->logging_prefs.insert(std::make_pair(type, level));
238 }
233 return Status(kOk); 239 return Status(kOk);
234 } 240 }
235 241
236 Status ParseChromeOptions( 242 Status ParseChromeOptions(
237 Log* log,
238 const base::Value& capability, 243 const base::Value& capability,
239 Capabilities* capabilities) { 244 Capabilities* capabilities) {
240 const base::DictionaryValue* chrome_options = NULL; 245 const base::DictionaryValue* chrome_options = NULL;
241 if (!capability.GetAsDictionary(&chrome_options)) 246 if (!capability.GetAsDictionary(&chrome_options))
242 return Status(kUnknownError, "must be a dictionary"); 247 return Status(kUnknownError, "must be a dictionary");
243 248
244 bool is_android = chrome_options->HasKey("androidPackage"); 249 bool is_android = chrome_options->HasKey("androidPackage");
245 bool is_existing = chrome_options->HasKey("debuggerAddress"); 250 bool is_existing = chrome_options->HasKey("debuggerAddress");
246 251
247 std::map<std::string, Parser> parser_map; 252 std::map<std::string, Parser> parser_map;
(...skipping 15 matching lines...) Expand all
263 } else if (is_existing) { 268 } else if (is_existing) {
264 parser_map["debuggerAddress"] = base::Bind(&ParseUseExistingBrowser); 269 parser_map["debuggerAddress"] = base::Bind(&ParseUseExistingBrowser);
265 } else { 270 } else {
266 parser_map["args"] = base::Bind(&ParseSwitches); 271 parser_map["args"] = base::Bind(&ParseSwitches);
267 parser_map["binary"] = base::Bind(&ParseFilePath, &capabilities->binary); 272 parser_map["binary"] = base::Bind(&ParseFilePath, &capabilities->binary);
268 parser_map["detach"] = base::Bind(&ParseBoolean, &capabilities->detach); 273 parser_map["detach"] = base::Bind(&ParseBoolean, &capabilities->detach);
269 parser_map["excludeSwitches"] = base::Bind(&ParseExcludeSwitches); 274 parser_map["excludeSwitches"] = base::Bind(&ParseExcludeSwitches);
270 parser_map["extensions"] = base::Bind(&ParseExtensions); 275 parser_map["extensions"] = base::Bind(&ParseExtensions);
271 parser_map["forceDevToolsScreenshot"] = base::Bind( 276 parser_map["forceDevToolsScreenshot"] = base::Bind(
272 &ParseBoolean, &capabilities->force_devtools_screenshot); 277 &ParseBoolean, &capabilities->force_devtools_screenshot);
273 parser_map["loadAsync"] = 278 parser_map["loadAsync"] = base::Bind(&IgnoreDeprecatedOption, "loadAsync");
274 base::Bind(&IgnoreDeprecatedOption, log, "loadAsync");
275 parser_map["localState"] = 279 parser_map["localState"] =
276 base::Bind(&ParseDict, &capabilities->local_state); 280 base::Bind(&ParseDict, &capabilities->local_state);
277 parser_map["logPath"] = base::Bind(&ParseLogPath); 281 parser_map["logPath"] = base::Bind(&ParseLogPath);
278 parser_map["prefs"] = base::Bind(&ParseDict, &capabilities->prefs); 282 parser_map["prefs"] = base::Bind(&ParseDict, &capabilities->prefs);
279 } 283 }
280 284
281 for (base::DictionaryValue::Iterator it(*chrome_options); !it.IsAtEnd(); 285 for (base::DictionaryValue::Iterator it(*chrome_options); !it.IsAtEnd();
282 it.Advance()) { 286 it.Advance()) {
283 if (parser_map.find(it.key()) == parser_map.end()) { 287 if (parser_map.find(it.key()) == parser_map.end()) {
284 return Status(kUnknownError, 288 return Status(kUnknownError,
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 Capabilities::~Capabilities() {} 411 Capabilities::~Capabilities() {}
408 412
409 bool Capabilities::IsAndroid() const { 413 bool Capabilities::IsAndroid() const {
410 return !android_package.empty(); 414 return !android_package.empty();
411 } 415 }
412 416
413 bool Capabilities::IsExistingBrowser() const { 417 bool Capabilities::IsExistingBrowser() const {
414 return debugger_address.IsValid(); 418 return debugger_address.IsValid();
415 } 419 }
416 420
417 Status Capabilities::Parse( 421 Status Capabilities::Parse(const base::DictionaryValue& desired_caps) {
418 const base::DictionaryValue& desired_caps,
419 Log* log) {
420 std::map<std::string, Parser> parser_map; 422 std::map<std::string, Parser> parser_map;
421 parser_map["chromeOptions"] = base::Bind(&ParseChromeOptions, log); 423 parser_map["chromeOptions"] = base::Bind(&ParseChromeOptions);
422 parser_map["loggingPrefs"] = base::Bind(&ParseLoggingPrefs); 424 parser_map["loggingPrefs"] = base::Bind(&ParseLoggingPrefs);
423 parser_map["proxy"] = base::Bind(&ParseProxy); 425 parser_map["proxy"] = base::Bind(&ParseProxy);
424 for (std::map<std::string, Parser>::iterator it = parser_map.begin(); 426 for (std::map<std::string, Parser>::iterator it = parser_map.begin();
425 it != parser_map.end(); ++it) { 427 it != parser_map.end(); ++it) {
426 const base::Value* capability = NULL; 428 const base::Value* capability = NULL;
427 if (desired_caps.Get(it->first, &capability)) { 429 if (desired_caps.Get(it->first, &capability)) {
428 Status status = it->second.Run(*capability, this); 430 Status status = it->second.Run(*capability, this);
429 if (status.IsError()) { 431 if (status.IsError()) {
430 return Status( 432 return Status(
431 kUnknownError, "cannot parse capability: " + it->first, status); 433 kUnknownError, "cannot parse capability: " + it->first, status);
432 } 434 }
433 } 435 }
434 } 436 }
435 return Status(kOk); 437 return Status(kOk);
436 } 438 }
OLDNEW
« no previous file with comments | « chrome/test/chromedriver/capabilities.h ('k') | chrome/test/chromedriver/capabilities_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698