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 3 // found in the LICENSE file. 4 5 #include "chrome/test/webdriver/commands/keys_command.h" 6 7 #include "base/values.h" 8 #include "chrome/test/webdriver/commands/response.h" 9 #include "chrome/test/webdriver/webdriver_error.h" 10 #include "chrome/test/webdriver/webdriver_session.h" 11 #include "chrome/test/webdriver/webdriver_util.h" 12 13 namespace webdriver { 14 15 KeysCommand::KeysCommand(const std::vector<std::string>& path_segments, 16 const DictionaryValue* const parameters) 17 : WebDriverCommand(path_segments, parameters) {} 18 19 KeysCommand::~KeysCommand() {} 20 21 bool KeysCommand::DoesPost() { 22 return true; 23 } 24 25 void KeysCommand::ExecutePost(Response* const response) { 26 const ListValue* key_list; 27 if (!GetListParameter("value", &key_list)) { 28 response->SetError(new Error( 29 kBadRequest, "Missing or invalid 'value' parameter")); 30 return; 31 } 32 33 // Flatten the given array of strings into one. 34 string16 keys; 35 Error* error = FlattenStringArray(key_list, &keys); 36 if (error) { 37 response->SetError(error); 38 return; 39 } 40 41 error = session_->SendKeys(keys); 42 if (error) { 43 response->SetError(error); 44 return; 45 } 46 } 47 48 } // namespace webdriver 49