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

Side by Side Diff: chrome/test/webdriver/commands/execute_command.cc

Issue 6542025: Fix command handler for /session/:sessionId/execute (execute_script) for (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 10 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
« no previous file with comments | « chrome/test/webdriver/commands/execute_command.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/commands/execute_command.h"
6
5 #include <string> 7 #include <string>
6 8
7 #include "base/json/json_reader.h" 9 #include "base/values.h"
8 10 #include "chrome/test/webdriver/error_codes.h"
9 #include "chrome/test/webdriver/commands/execute_command.h" 11 #include "chrome/test/webdriver/session.h"
12 #include "chrome/test/webdriver/commands/response.h"
10 13
11 namespace webdriver { 14 namespace webdriver {
12 15
13 const char kArgs[] = "args"; 16 const char kArgs[] = "args";
14 const char kScript[] = "script"; 17 const char kScript[] = "script";
15 18
16 ExecuteCommand::ExecuteCommand(const std::vector<std::string>& path_segments, 19 ExecuteCommand::ExecuteCommand(const std::vector<std::string>& path_segments,
17 const DictionaryValue* const parameters) 20 const DictionaryValue* const parameters)
18 : WebDriverCommand(path_segments, parameters) {} 21 : WebDriverCommand(path_segments, parameters) {}
19 22
20 ExecuteCommand::~ExecuteCommand() {} 23 ExecuteCommand::~ExecuteCommand() {}
21 24
22
23 bool ExecuteCommand::Init(Response* const response) {
24 if (!WebDriverCommand::Init(response)) {
25 SET_WEBDRIVER_ERROR(response, "Failure on Init for execute command",
26 kInternalServerError);
27 return false;
28 }
29
30 if (!GetStringParameter(kScript, &script_)) {
31 SET_WEBDRIVER_ERROR(response, "No script to execute specified",
32 kBadRequest);
33 return false;
34 }
35
36 has_args_= GetStringASCIIParameter(kArgs, &args_);
37 return true;
38 }
39
40 bool ExecuteCommand::DoesPost() { 25 bool ExecuteCommand::DoesPost() {
41 return true; 26 return true;
42 } 27 }
43 28
44 void ExecuteCommand::ExecutePost(Response* const response) { 29 void ExecuteCommand::ExecutePost(Response* const response) {
45 int error_code = 0; 30 std::string script;
46 std::string error_msg; 31 if (!GetStringParameter(kScript, &script)) {
47 Value* params = NULL; 32 SET_WEBDRIVER_ERROR(response, "No script to execute specified",
48 Value* result = NULL;
49
50 if (has_args_) {
51 params = base::JSONReader::ReadAndReturnError(args_, true,
52 &error_code, &error_msg);
53 if (error_code != 0) {
54 LOG(INFO) << "Could not parse the JSON arguments passed in "
55 << "got error code: " << error_code << ", " << error_msg;
56 SET_WEBDRIVER_ERROR(response, "Arguments are not valid json objects",
57 kBadRequest);
58 return;
59 }
60 } else {
61 LOG(INFO) << "No args for this script";
62 // If there are no args required just use an empty list.
63 params = new ListValue();
64 }
65
66 if (params->GetType() != Value::TYPE_LIST) {
67 LOG(INFO) << "Data passed in to script must be a json list";
68 SET_WEBDRIVER_ERROR(response, "Arguments are not in list format",
69 kBadRequest); 33 kBadRequest);
70 return; 34 return;
71 } 35 }
72 36
73 ListValue* script_args = static_cast<ListValue*>(params); 37 ListValue* args;
74 ErrorCode error = session_->ExecuteScript(script_, 38 if (!GetListParameter(kArgs, &args)) {
75 script_args, &result); 39 SET_WEBDRIVER_ERROR(response, "No script arguments specified",
76 40 kBadRequest);
77 if (error != kSuccess) {
78 SET_WEBDRIVER_ERROR(response, "Failed to execute script",
79 kInternalServerError);
80 return; 41 return;
81 } 42 }
82 43
44 Value* result = NULL;
45 ErrorCode status = session_->ExecuteScript(script, args, &result);
46 response->set_status(status);
83 response->set_value(result); 47 response->set_value(result);
84 response->set_status(kSuccess);
85 } 48 }
86 49
87 bool ExecuteCommand::RequiresValidTab() { 50 bool ExecuteCommand::RequiresValidTab() {
88 return true; 51 return true;
89 } 52 }
90 53
91 } // namspace webdriver 54 } // namspace webdriver
92 55
OLDNEW
« no previous file with comments | « chrome/test/webdriver/commands/execute_command.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698