Home | History | Annotate | Download | only in commands
      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