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

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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 const std::string& function, 121 const std::string& function,
122 const base::ListValue& args, 122 const base::ListValue& args,
123 scoped_ptr<base::Value>* result) { 123 scoped_ptr<base::Value>* result) {
124 std::string json; 124 std::string json;
125 base::JSONWriter::Write(&args, &json); 125 base::JSONWriter::Write(&args, &json);
126 std::string expression = base::StringPrintf( 126 std::string expression = base::StringPrintf(
127 "(%s).apply(null, [%s, %s])", 127 "(%s).apply(null, [%s, %s])",
128 kCallFunctionScript, 128 kCallFunctionScript,
129 function.c_str(), 129 function.c_str(),
130 json.c_str()); 130 json.c_str());
131 return EvaluateScript(frame, expression, result); 131 scoped_ptr<base::Value> temp_result;
132 Status status = EvaluateScript(frame, expression, &temp_result);
133 if (status.IsError())
134 return status;
135
136 return internal::ParseCallFunctionResult(*temp_result.get(), result);
chrisgao (Use stgao instead) 2013/01/22 19:17:31 I think "*temp_result" would also work here.
kkania 2013/02/28 21:50:17 Done.
132 } 137 }
133 138
134 Status ChromeImpl::GetFrameByFunction(const std::string& frame, 139 Status ChromeImpl::GetFrameByFunction(const std::string& frame,
135 const std::string& function, 140 const std::string& function,
136 const base::ListValue& args, 141 const base::ListValue& args,
137 std::string* out_frame) { 142 std::string* out_frame) {
138 int context_id; 143 int context_id;
139 Status status = GetContextIdForFrame(dom_tracker_.get(), frame, &context_id); 144 Status status = GetContextIdForFrame(dom_tracker_.get(), frame, &context_id);
140 if (status.IsError()) 145 if (status.IsError())
141 return status; 146 return status;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 if (status.IsError()) 240 if (status.IsError())
236 return status; 241 return status;
237 242
238 std::string type; 243 std::string type;
239 if (!temp_result->GetString("type", &type)) 244 if (!temp_result->GetString("type", &type))
240 return Status(kUnknownError, "Runtime.evaluate missing string 'type'"); 245 return Status(kUnknownError, "Runtime.evaluate missing string 'type'");
241 246
242 if (type == "undefined") { 247 if (type == "undefined") {
243 result->reset(base::Value::CreateNullValue()); 248 result->reset(base::Value::CreateNullValue());
244 } else { 249 } else {
245 int status_code; 250 base::Value* value;
246 if (!temp_result->GetInteger("value.status", &status_code)) { 251 if (!temp_result->Get("value", &value))
247 return Status(kUnknownError, 252 return Status(kUnknownError, "Runtime.evaluate missing 'value'");
248 "Runtime.evaluate missing int 'value.status'"); 253 result->reset(value->DeepCopy());
249 }
250 if (status_code != kOk)
251 return Status(static_cast<StatusCode>(status_code));
252 base::Value* unscoped_value;
253 if (!temp_result->Get("value.value", &unscoped_value)) {
254 return Status(kUnknownError,
255 "Runtime.evaluate missing 'value.value'");
256 }
257 result->reset(unscoped_value->DeepCopy());
258 } 254 }
259 return Status(kOk); 255 return Status(kOk);
260 } 256 }
261 257
258 Status ParseCallFunctionResult(const base::Value& temp_result,
259 scoped_ptr<base::Value>* result) {
260 const base::DictionaryValue* dict;
261 if (!temp_result.GetAsDictionary(&dict))
262 return Status(kUnknownError, "call function result must be a dictionary");
263 int status_code;
264 if (!dict->GetInteger("status", &status_code)) {
265 return Status(kUnknownError,
266 "call function result missing int 'status'");
267 }
268 if (status_code != kOk)
269 return Status(static_cast<StatusCode>(status_code));
270 const base::Value* unscoped_value;
271 if (!dict->Get("value", &unscoped_value)) {
272 return Status(kUnknownError,
273 "call function result missing 'value'");
274 }
275 result->reset(unscoped_value->DeepCopy());
276 return Status(kOk);
277 }
278
262 Status GetNodeIdFromFunction(DevToolsClient* client, 279 Status GetNodeIdFromFunction(DevToolsClient* client,
263 int context_id, 280 int context_id,
264 const std::string& function, 281 const std::string& function,
265 const base::ListValue& args, 282 const base::ListValue& args,
266 int* node_id) { 283 int* node_id) {
267 std::string json; 284 std::string json;
268 base::JSONWriter::Write(&args, &json); 285 base::JSONWriter::Write(&args, &json);
269 std::string expression = base::StringPrintf( 286 std::string expression = base::StringPrintf(
270 "(%s).apply(null, [%s, %s, true])", 287 "(%s).apply(null, [%s, %s, true])",
271 kCallFunctionScript, 288 kCallFunctionScript,
(...skipping 26 matching lines...) Expand all
298 } 315 }
299 if (status.IsError()) 316 if (status.IsError())
300 return status; 317 return status;
301 318
302 if (!cmd_result->GetInteger("nodeId", node_id)) 319 if (!cmd_result->GetInteger("nodeId", node_id))
303 return Status(kUnknownError, "DOM.requestNode missing int 'nodeId'"); 320 return Status(kUnknownError, "DOM.requestNode missing int 'nodeId'");
304 return Status(kOk); 321 return Status(kOk);
305 } 322 }
306 323
307 } // namespace internal 324 } // namespace internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698