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

Side by Side Diff: chrome/test/chromedriver/chrome_impl.cc

Issue 12052004: [chromedriver] Create release script and handle Chrome/ChromeDriver versions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 11 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/chromedriver/chrome_impl.h" 5 #include "chrome/test/chromedriver/chrome_impl.h"
6 6
7 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/process_util.h" 10 #include "base/process_util.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 const std::string& function, 122 const std::string& function,
123 const base::ListValue& args, 123 const base::ListValue& args,
124 scoped_ptr<base::Value>* result) { 124 scoped_ptr<base::Value>* result) {
125 std::string json; 125 std::string json;
126 base::JSONWriter::Write(&args, &json); 126 base::JSONWriter::Write(&args, &json);
127 std::string expression = base::StringPrintf( 127 std::string expression = base::StringPrintf(
128 "(%s).apply(null, [%s, %s])", 128 "(%s).apply(null, [%s, %s])",
129 kCallFunctionScript, 129 kCallFunctionScript,
130 function.c_str(), 130 function.c_str(),
131 json.c_str()); 131 json.c_str());
132 return EvaluateScript(frame, expression, result); 132 scoped_ptr<base::Value> temp_result;
133 Status status = EvaluateScript(frame, expression, &temp_result);
134 if (status.IsError())
135 return status;
136
137 return internal::ParseCallFunctionResult(*temp_result, result);
133 } 138 }
134 139
135 Status ChromeImpl::GetFrameByFunction(const std::string& frame, 140 Status ChromeImpl::GetFrameByFunction(const std::string& frame,
136 const std::string& function, 141 const std::string& function,
137 const base::ListValue& args, 142 const base::ListValue& args,
138 std::string* out_frame) { 143 std::string* out_frame) {
139 int context_id; 144 int context_id;
140 Status status = GetContextIdForFrame(dom_tracker_.get(), frame, &context_id); 145 Status status = GetContextIdForFrame(dom_tracker_.get(), frame, &context_id);
141 if (status.IsError()) 146 if (status.IsError())
142 return status; 147 return status;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 if (status.IsError()) 241 if (status.IsError())
237 return status; 242 return status;
238 243
239 std::string type; 244 std::string type;
240 if (!temp_result->GetString("type", &type)) 245 if (!temp_result->GetString("type", &type))
241 return Status(kUnknownError, "Runtime.evaluate missing string 'type'"); 246 return Status(kUnknownError, "Runtime.evaluate missing string 'type'");
242 247
243 if (type == "undefined") { 248 if (type == "undefined") {
244 result->reset(base::Value::CreateNullValue()); 249 result->reset(base::Value::CreateNullValue());
245 } else { 250 } else {
246 int status_code; 251 base::Value* value;
247 if (!temp_result->GetInteger("value.status", &status_code)) { 252 if (!temp_result->Get("value", &value))
248 return Status(kUnknownError, 253 return Status(kUnknownError, "Runtime.evaluate missing 'value'");
249 "Runtime.evaluate missing int 'value.status'"); 254 result->reset(value->DeepCopy());
250 }
251 if (status_code != kOk)
252 return Status(static_cast<StatusCode>(status_code));
253 base::Value* unscoped_value;
254 if (!temp_result->Get("value.value", &unscoped_value)) {
255 return Status(kUnknownError,
256 "Runtime.evaluate missing 'value.value'");
257 }
258 result->reset(unscoped_value->DeepCopy());
259 } 255 }
260 return Status(kOk); 256 return Status(kOk);
261 } 257 }
262 258
259 Status ParseCallFunctionResult(const base::Value& temp_result,
260 scoped_ptr<base::Value>* result) {
261 const base::DictionaryValue* dict;
262 if (!temp_result.GetAsDictionary(&dict))
263 return Status(kUnknownError, "call function result must be a dictionary");
264 int status_code;
265 if (!dict->GetInteger("status", &status_code)) {
266 return Status(kUnknownError,
267 "call function result missing int 'status'");
268 }
269 if (status_code != kOk)
270 return Status(static_cast<StatusCode>(status_code));
271 const base::Value* unscoped_value;
272 if (!dict->Get("value", &unscoped_value)) {
273 return Status(kUnknownError,
274 "call function result missing 'value'");
275 }
276 result->reset(unscoped_value->DeepCopy());
277 return Status(kOk);
278 }
279
263 Status GetNodeIdFromFunction(DevToolsClient* client, 280 Status GetNodeIdFromFunction(DevToolsClient* client,
264 int context_id, 281 int context_id,
265 const std::string& function, 282 const std::string& function,
266 const base::ListValue& args, 283 const base::ListValue& args,
267 int* node_id) { 284 int* node_id) {
268 std::string json; 285 std::string json;
269 base::JSONWriter::Write(&args, &json); 286 base::JSONWriter::Write(&args, &json);
270 std::string expression = base::StringPrintf( 287 std::string expression = base::StringPrintf(
271 "(%s).apply(null, [%s, %s, true])", 288 "(%s).apply(null, [%s, %s, true])",
272 kCallFunctionScript, 289 kCallFunctionScript,
(...skipping 26 matching lines...) Expand all
299 } 316 }
300 if (status.IsError()) 317 if (status.IsError())
301 return status; 318 return status;
302 319
303 if (!cmd_result->GetInteger("nodeId", node_id)) 320 if (!cmd_result->GetInteger("nodeId", node_id))
304 return Status(kUnknownError, "DOM.requestNode missing int 'nodeId'"); 321 return Status(kUnknownError, "DOM.requestNode missing int 'nodeId'");
305 return Status(kOk); 322 return Status(kOk);
306 } 323 }
307 324
308 } // namespace internal 325 } // namespace internal
OLDNEW
« no previous file with comments | « chrome/test/chromedriver/chrome_impl.h ('k') | chrome/test/chromedriver/chrome_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698