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

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

Issue 1004333002: [chromedriver] Add a sanity check during session initiation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « no previous file | 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/session_commands.h" 5 #include "chrome/test/chromedriver/session_commands.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/files/file_util.h" 11 #include "base/files/file_util.h"
12 #include "base/logging.h" // For CHECK macros. 12 #include "base/logging.h" // For CHECK macros.
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/message_loop/message_loop_proxy.h" 14 #include "base/message_loop/message_loop_proxy.h"
15 #include "base/strings/stringprintf.h"
15 #include "base/synchronization/lock.h" 16 #include "base/synchronization/lock.h"
16 #include "base/synchronization/waitable_event.h" 17 #include "base/synchronization/waitable_event.h"
17 #include "base/values.h" 18 #include "base/values.h"
18 #include "chrome/test/chromedriver/basic_types.h" 19 #include "chrome/test/chromedriver/basic_types.h"
19 #include "chrome/test/chromedriver/capabilities.h" 20 #include "chrome/test/chromedriver/capabilities.h"
20 #include "chrome/test/chromedriver/chrome/automation_extension.h" 21 #include "chrome/test/chromedriver/chrome/automation_extension.h"
21 #include "chrome/test/chromedriver/chrome/browser_info.h" 22 #include "chrome/test/chromedriver/chrome/browser_info.h"
22 #include "chrome/test/chromedriver/chrome/chrome.h" 23 #include "chrome/test/chromedriver/chrome/chrome.h"
23 #include "chrome/test/chromedriver/chrome/chrome_android_impl.h" 24 #include "chrome/test/chromedriver/chrome/chrome_android_impl.h"
24 #include "chrome/test/chromedriver/chrome/chrome_desktop_impl.h" 25 #include "chrome/test/chromedriver/chrome/chrome_desktop_impl.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 if (status.IsOk()) { 99 if (status.IsOk()) {
99 chrome_caps->SetString( 100 chrome_caps->SetString(
100 "userDataDir", 101 "userDataDir",
101 desktop->command().GetSwitchValueNative("user-data-dir")); 102 desktop->command().GetSwitchValueNative("user-data-dir"));
102 } 103 }
103 104
104 caps->Set("chrome", chrome_caps.release()); 105 caps->Set("chrome", chrome_caps.release());
105 return caps.Pass(); 106 return caps.Pass();
106 } 107 }
107 108
109 Status CheckSessionCreated(Session* session) {
110 WebView* web_view = NULL;
111 Status status = session->GetTargetWindow(&web_view);
112 if (status.IsError())
113 return Status(kSessionNotCreatedException, status);
114
115 status = web_view->ConnectIfNecessary();
116 if (status.IsError())
117 return Status(kSessionNotCreatedException, status);
118
119 base::ListValue args;
120 args.AppendString("ping");
121 scoped_ptr<base::Value> result(new base::StringValue(std::string()));
122 status = web_view->CallFunction(session->GetCurrentFrameId(),
123 "function(s){return s.replace('i','o')}",
stgao 2015/03/14 00:22:03 For the purpose of sanity check, maybe a simple "r
samuong 2015/03/14 17:17:46 Done.
124 args, &result);
125 if (status.IsError())
126 return Status(kSessionNotCreatedException, status);
127
128 std::string response;
129 if (!result->GetAsString(&response) || response != "pong") {
130 return Status(kSessionNotCreatedException,
131 base::StringPrintf("unexpected response from browser"));
stgao 2015/03/14 00:22:03 It seems other places use raw strings directly, li
samuong 2015/03/14 17:17:46 Done. It's no longer needed, so I've removed it.
132 }
133
134 return Status(kOk);
135 }
136
108 Status InitSessionHelper( 137 Status InitSessionHelper(
109 const InitSessionParams& bound_params, 138 const InitSessionParams& bound_params,
110 Session* session, 139 Session* session,
111 const base::DictionaryValue& params, 140 const base::DictionaryValue& params,
112 scoped_ptr<base::Value>* value) { 141 scoped_ptr<base::Value>* value) {
113 session->driver_log.reset( 142 session->driver_log.reset(
114 new WebDriverLog(WebDriverLog::kDriverType, Log::kAll)); 143 new WebDriverLog(WebDriverLog::kDriverType, Log::kAll));
115 const base::DictionaryValue* desired_caps; 144 const base::DictionaryValue* desired_caps;
116 if (!params.GetDictionary("desiredCapabilities", &desired_caps)) 145 if (!params.GetDictionary("desiredCapabilities", &desired_caps))
117 return Status(kUnknownError, "cannot find dict 'desiredCapabilities'"); 146 return Status(kUnknownError, "cannot find dict 'desiredCapabilities'");
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 if (status.IsError() || web_view_ids.empty()) { 187 if (status.IsError() || web_view_ids.empty()) {
159 return status.IsError() ? status : 188 return status.IsError() ? status :
160 Status(kUnknownError, "unable to discover open window in chrome"); 189 Status(kUnknownError, "unable to discover open window in chrome");
161 } 190 }
162 191
163 session->window = web_view_ids.front(); 192 session->window = web_view_ids.front();
164 session->detach = capabilities.detach; 193 session->detach = capabilities.detach;
165 session->force_devtools_screenshot = capabilities.force_devtools_screenshot; 194 session->force_devtools_screenshot = capabilities.force_devtools_screenshot;
166 session->capabilities = CreateCapabilities(session->chrome.get()); 195 session->capabilities = CreateCapabilities(session->chrome.get());
167 value->reset(session->capabilities->DeepCopy()); 196 value->reset(session->capabilities->DeepCopy());
168 return Status(kOk); 197 return CheckSessionCreated(session);
169 } 198 }
170 199
171 } // namespace 200 } // namespace
172 201
173 Status ExecuteInitSession( 202 Status ExecuteInitSession(
174 const InitSessionParams& bound_params, 203 const InitSessionParams& bound_params,
175 Session* session, 204 Session* session,
176 const base::DictionaryValue& params, 205 const base::DictionaryValue& params,
177 scoped_ptr<base::Value>* value) { 206 scoped_ptr<base::Value>* value) {
178 Status status = InitSessionHelper(bound_params, session, params, value); 207 Status status = InitSessionHelper(bound_params, session, params, value);
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 Status ExecuteSetAutoReporting( 714 Status ExecuteSetAutoReporting(
686 Session* session, 715 Session* session,
687 const base::DictionaryValue& params, 716 const base::DictionaryValue& params,
688 scoped_ptr<base::Value>* value) { 717 scoped_ptr<base::Value>* value) {
689 bool enabled; 718 bool enabled;
690 if (!params.GetBoolean("enabled", &enabled)) 719 if (!params.GetBoolean("enabled", &enabled))
691 return Status(kUnknownError, "missing parameter 'enabled'"); 720 return Status(kUnknownError, "missing parameter 'enabled'");
692 session->auto_reporting_enabled = enabled; 721 session->auto_reporting_enabled = enabled;
693 return Status(kOk); 722 return Status(kOk);
694 } 723 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698