Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/webdriver/webdriver_capabilities_parser.h" | 5 #include "chrome/test/webdriver/webdriver_capabilities_parser.h" |
| 6 | 6 |
| 7 #include "base/base64.h" | 7 #include "base/base64.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 return new Error(kBadRequest, base::StringPrintf( | 26 return new Error(kBadRequest, base::StringPrintf( |
| 27 "%s must be of type %s, not %s. Received: %s", | 27 "%s must be of type %s, not %s. Received: %s", |
| 28 name.c_str(), GetJsonTypeName(type), | 28 name.c_str(), GetJsonTypeName(type), |
| 29 GetJsonTypeName(option->GetType()), | 29 GetJsonTypeName(option->GetType()), |
| 30 JsonStringifyForDisplay(option).c_str())); | 30 JsonStringifyForDisplay(option).c_str())); |
| 31 } | 31 } |
| 32 | 32 |
| 33 } // namespace | 33 } // namespace |
| 34 | 34 |
| 35 Capabilities::Capabilities() | 35 Capabilities::Capabilities() |
| 36 : command(CommandLine::NO_PROGRAM), | 36 : cert_revocation_checking(true), |
| 37 command(CommandLine::NO_PROGRAM), | |
| 37 detach(false), | 38 detach(false), |
| 38 load_async(false), | 39 load_async(false), |
| 39 native_events(false), | 40 native_events(false), |
| 40 verbose(false) { } | 41 verbose(false) { } |
| 41 | 42 |
| 42 Capabilities::~Capabilities() { } | 43 Capabilities::~Capabilities() { } |
| 43 | 44 |
| 44 CapabilitiesParser::CapabilitiesParser( | 45 CapabilitiesParser::CapabilitiesParser( |
| 45 const base::DictionaryValue* capabilities_dict, | 46 const base::DictionaryValue* capabilities_dict, |
| 46 const FilePath& root_path, | 47 const FilePath& root_path, |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 71 std::map<std::string, Parser> parser_map; | 72 std::map<std::string, Parser> parser_map; |
| 72 if (legacy_options) { | 73 if (legacy_options) { |
| 73 parser_map["chrome.binary"] = &CapabilitiesParser::ParseBinary; | 74 parser_map["chrome.binary"] = &CapabilitiesParser::ParseBinary; |
| 74 parser_map["chrome.channel"] = &CapabilitiesParser::ParseChannel; | 75 parser_map["chrome.channel"] = &CapabilitiesParser::ParseChannel; |
| 75 parser_map["chrome.detach"] = &CapabilitiesParser::ParseDetach; | 76 parser_map["chrome.detach"] = &CapabilitiesParser::ParseDetach; |
| 76 parser_map["chrome.extensions"] = &CapabilitiesParser::ParseExtensions; | 77 parser_map["chrome.extensions"] = &CapabilitiesParser::ParseExtensions; |
| 77 parser_map["chrome.loadAsync"] = &CapabilitiesParser::ParseLoadAsync; | 78 parser_map["chrome.loadAsync"] = &CapabilitiesParser::ParseLoadAsync; |
| 78 parser_map["chrome.nativeEvents"] = &CapabilitiesParser::ParseNativeEvents; | 79 parser_map["chrome.nativeEvents"] = &CapabilitiesParser::ParseNativeEvents; |
| 79 parser_map["chrome.profile"] = &CapabilitiesParser::ParseProfile; | 80 parser_map["chrome.profile"] = &CapabilitiesParser::ParseProfile; |
| 80 parser_map["chrome.switches"] = &CapabilitiesParser::ParseArgs; | 81 parser_map["chrome.switches"] = &CapabilitiesParser::ParseArgs; |
| 82 parser_map["chrome.noWebsiteTestingDefaults"] = | |
| 83 &CapabilitiesParser::ParseNoWebsiteTestingDefaults; | |
| 81 parser_map["chrome.verbose"] = &CapabilitiesParser::ParseVerbose; | 84 parser_map["chrome.verbose"] = &CapabilitiesParser::ParseVerbose; |
| 82 } else { | 85 } else { |
| 83 parser_map["args"] = &CapabilitiesParser::ParseArgs; | 86 parser_map["args"] = &CapabilitiesParser::ParseArgs; |
| 84 parser_map["binary"] = &CapabilitiesParser::ParseBinary; | 87 parser_map["binary"] = &CapabilitiesParser::ParseBinary; |
| 85 parser_map["channel"] = &CapabilitiesParser::ParseChannel; | 88 parser_map["channel"] = &CapabilitiesParser::ParseChannel; |
| 86 parser_map["detach"] = &CapabilitiesParser::ParseDetach; | 89 parser_map["detach"] = &CapabilitiesParser::ParseDetach; |
| 87 parser_map["extensions"] = &CapabilitiesParser::ParseExtensions; | 90 parser_map["extensions"] = &CapabilitiesParser::ParseExtensions; |
| 88 parser_map["loadAsync"] = &CapabilitiesParser::ParseLoadAsync; | 91 parser_map["loadAsync"] = &CapabilitiesParser::ParseLoadAsync; |
| 89 parser_map["nativeEvents"] = &CapabilitiesParser::ParseNativeEvents; | 92 parser_map["nativeEvents"] = &CapabilitiesParser::ParseNativeEvents; |
| 90 parser_map["profile"] = &CapabilitiesParser::ParseProfile; | 93 parser_map["profile"] = &CapabilitiesParser::ParseProfile; |
| 94 parser_map["noWebsiteTestingDefaults"] = | |
| 95 &CapabilitiesParser::ParseNoWebsiteTestingDefaults; | |
| 91 parser_map["verbose"] = &CapabilitiesParser::ParseVerbose; | 96 parser_map["verbose"] = &CapabilitiesParser::ParseVerbose; |
| 92 } | 97 } |
| 93 | 98 |
| 94 base::DictionaryValue::key_iterator key_iter = options->begin_keys(); | 99 base::DictionaryValue::key_iterator key_iter = options->begin_keys(); |
| 95 for (; key_iter != options->end_keys(); ++key_iter) { | 100 for (; key_iter != options->end_keys(); ++key_iter) { |
| 96 if (parser_map.find(*key_iter) == parser_map.end()) { | 101 if (parser_map.find(*key_iter) == parser_map.end()) { |
| 97 LOG(WARNING) << "Ignoring unrecognized capability: " << *key_iter; | 102 LOG(WARNING) << "Ignoring unrecognized capability: " << *key_iter; |
| 98 continue; | 103 continue; |
| 99 } | 104 } |
| 100 Value* option = NULL; | 105 Value* option = NULL; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 135 | 140 |
| 136 Error* CapabilitiesParser::ParseBinary(const Value* option) { | 141 Error* CapabilitiesParser::ParseBinary(const Value* option) { |
| 137 FilePath::StringType path; | 142 FilePath::StringType path; |
| 138 if (!option->GetAsString(&path)) { | 143 if (!option->GetAsString(&path)) { |
| 139 return CreateBadInputError("binary path", Value::TYPE_STRING, option); | 144 return CreateBadInputError("binary path", Value::TYPE_STRING, option); |
| 140 } | 145 } |
| 141 caps_->command.SetProgram(FilePath(path)); | 146 caps_->command.SetProgram(FilePath(path)); |
| 142 return NULL; | 147 return NULL; |
| 143 } | 148 } |
| 144 | 149 |
| 150 Error* CapabilitiesParser::ParseCertRevocationChecking( | |
|
Huyen
2011/12/09 23:56:55
did you forget to map this function to the parser_
kkania
2011/12/10 00:37:44
Forgot to delete this. I decided I didn't like thi
| |
| 151 const base::Value* option) { | |
| 152 if (!option->GetAsBoolean(&caps_->cert_revocation_checking)) | |
| 153 return CreateBadInputError("cert revocation checking", | |
| 154 Value::TYPE_BOOLEAN, option); | |
| 155 return NULL; | |
| 156 } | |
| 157 | |
| 145 Error* CapabilitiesParser::ParseChannel(const Value* option) { | 158 Error* CapabilitiesParser::ParseChannel(const Value* option) { |
| 146 if (!option->GetAsString(&caps_->channel)) | 159 if (!option->GetAsString(&caps_->channel)) |
| 147 return CreateBadInputError("channel", Value::TYPE_STRING, option); | 160 return CreateBadInputError("channel", Value::TYPE_STRING, option); |
| 148 return NULL; | 161 return NULL; |
| 149 } | 162 } |
| 150 | 163 |
| 151 Error* CapabilitiesParser::ParseDetach(const Value* option) { | 164 Error* CapabilitiesParser::ParseDetach(const Value* option) { |
| 152 if (!option->GetAsBoolean(&caps_->detach)) | 165 if (!option->GetAsBoolean(&caps_->detach)) |
| 153 return CreateBadInputError("detach", Value::TYPE_BOOLEAN, option); | 166 return CreateBadInputError("detach", Value::TYPE_BOOLEAN, option); |
| 154 return NULL; | 167 return NULL; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 195 if (!option->GetAsString(&profile_base64)) | 208 if (!option->GetAsString(&profile_base64)) |
| 196 return CreateBadInputError("profile", Value::TYPE_STRING, option); | 209 return CreateBadInputError("profile", Value::TYPE_STRING, option); |
| 197 std::string error_msg; | 210 std::string error_msg; |
| 198 caps_->profile = root_.AppendASCII("profile"); | 211 caps_->profile = root_.AppendASCII("profile"); |
| 199 if (!DecodeAndWriteFile(caps_->profile, profile_base64, true /* unzip */, | 212 if (!DecodeAndWriteFile(caps_->profile, profile_base64, true /* unzip */, |
| 200 &error_msg)) | 213 &error_msg)) |
| 201 return new Error(kUnknownError, "unable to unpack profile: " + error_msg); | 214 return new Error(kUnknownError, "unable to unpack profile: " + error_msg); |
| 202 return NULL; | 215 return NULL; |
| 203 } | 216 } |
| 204 | 217 |
| 218 Error* CapabilitiesParser::ParseNoWebsiteTestingDefaults(const Value* option) { | |
| 219 if (!option->GetAsBoolean(&caps_->no_website_testing_defaults)) | |
| 220 return CreateBadInputError("noWebsiteTestingDefaults", | |
| 221 Value::TYPE_BOOLEAN, option); | |
| 222 return NULL; | |
| 223 } | |
| 224 | |
| 205 Error* CapabilitiesParser::ParseVerbose(const Value* option) { | 225 Error* CapabilitiesParser::ParseVerbose(const Value* option) { |
| 206 if (!option->GetAsBoolean(&caps_->verbose)) | 226 if (!option->GetAsBoolean(&caps_->verbose)) |
| 207 return CreateBadInputError("verbose", Value::TYPE_BOOLEAN, option); | 227 return CreateBadInputError("verbose", Value::TYPE_BOOLEAN, option); |
| 208 return NULL; | 228 return NULL; |
| 209 } | 229 } |
| 210 | 230 |
| 211 bool CapabilitiesParser::DecodeAndWriteFile( | 231 bool CapabilitiesParser::DecodeAndWriteFile( |
| 212 const FilePath& path, | 232 const FilePath& path, |
| 213 const std::string& base64, | 233 const std::string& base64, |
| 214 bool unzip, | 234 bool unzip, |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 231 } else { | 251 } else { |
| 232 if (!file_util::WriteFile(path, data.c_str(), data.length())) { | 252 if (!file_util::WriteFile(path, data.c_str(), data.length())) { |
| 233 *error_msg = "Could not write file"; | 253 *error_msg = "Could not write file"; |
| 234 return false; | 254 return false; |
| 235 } | 255 } |
| 236 } | 256 } |
| 237 return true; | 257 return true; |
| 238 } | 258 } |
| 239 | 259 |
| 240 } // namespace webdriver | 260 } // namespace webdriver |
| OLD | NEW |