| Index: chrome/test/webdriver/commands/execute_command.cc
|
| ===================================================================
|
| --- chrome/test/webdriver/commands/execute_command.cc (revision 75333)
|
| +++ chrome/test/webdriver/commands/execute_command.cc (working copy)
|
| @@ -2,12 +2,15 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "chrome/test/webdriver/commands/execute_command.h"
|
| +
|
| #include <string>
|
|
|
| -#include "base/json/json_reader.h"
|
| +#include "base/values.h"
|
| +#include "chrome/test/webdriver/error_codes.h"
|
| +#include "chrome/test/webdriver/session.h"
|
| +#include "chrome/test/webdriver/commands/response.h"
|
|
|
| -#include "chrome/test/webdriver/commands/execute_command.h"
|
| -
|
| namespace webdriver {
|
|
|
| const char kArgs[] = "args";
|
| @@ -19,69 +22,29 @@
|
|
|
| ExecuteCommand::~ExecuteCommand() {}
|
|
|
| -
|
| -bool ExecuteCommand::Init(Response* const response) {
|
| - if (!WebDriverCommand::Init(response)) {
|
| - SET_WEBDRIVER_ERROR(response, "Failure on Init for execute command",
|
| - kInternalServerError);
|
| - return false;
|
| - }
|
| -
|
| - if (!GetStringParameter(kScript, &script_)) {
|
| - SET_WEBDRIVER_ERROR(response, "No script to execute specified",
|
| - kBadRequest);
|
| - return false;
|
| - }
|
| -
|
| - has_args_= GetStringASCIIParameter(kArgs, &args_);
|
| - return true;
|
| -}
|
| -
|
| bool ExecuteCommand::DoesPost() {
|
| return true;
|
| }
|
|
|
| void ExecuteCommand::ExecutePost(Response* const response) {
|
| - int error_code = 0;
|
| - std::string error_msg;
|
| - Value* params = NULL;
|
| - Value* result = NULL;
|
| -
|
| - if (has_args_) {
|
| - params = base::JSONReader::ReadAndReturnError(args_, true,
|
| - &error_code, &error_msg);
|
| - if (error_code != 0) {
|
| - LOG(INFO) << "Could not parse the JSON arguments passed in "
|
| - << "got error code: " << error_code << ", " << error_msg;
|
| - SET_WEBDRIVER_ERROR(response, "Arguments are not valid json objects",
|
| - kBadRequest);
|
| - return;
|
| - }
|
| - } else {
|
| - LOG(INFO) << "No args for this script";
|
| - // If there are no args required just use an empty list.
|
| - params = new ListValue();
|
| - }
|
| -
|
| - if (params->GetType() != Value::TYPE_LIST) {
|
| - LOG(INFO) << "Data passed in to script must be a json list";
|
| - SET_WEBDRIVER_ERROR(response, "Arguments are not in list format",
|
| + std::string script;
|
| + if (!GetStringParameter(kScript, &script)) {
|
| + SET_WEBDRIVER_ERROR(response, "No script to execute specified",
|
| kBadRequest);
|
| return;
|
| }
|
|
|
| - ListValue* script_args = static_cast<ListValue*>(params);
|
| - ErrorCode error = session_->ExecuteScript(script_,
|
| - script_args, &result);
|
| -
|
| - if (error != kSuccess) {
|
| - SET_WEBDRIVER_ERROR(response, "Failed to execute script",
|
| - kInternalServerError);
|
| + ListValue* args;
|
| + if (!GetListParameter(kArgs, &args)) {
|
| + SET_WEBDRIVER_ERROR(response, "No script arguments specified",
|
| + kBadRequest);
|
| return;
|
| }
|
|
|
| + Value* result = NULL;
|
| + ErrorCode status = session_->ExecuteScript(script, args, &result);
|
| + response->set_status(status);
|
| response->set_value(result);
|
| - response->set_status(kSuccess);
|
| }
|
|
|
| bool ExecuteCommand::RequiresValidTab() {
|
|
|