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

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

Issue 288193004: [Chromedriver] Add Device Metrics override support to ChromeDriver via Capabilities (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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
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/chrome_launcher.h" 5 #include "chrome/test/chromedriver/chrome_launcher.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 return status; 149 return status;
150 switches.AppendToCommandLine(&command); 150 switches.AppendToCommandLine(&command);
151 *prepared_command = command; 151 *prepared_command = command;
152 return Status(kOk); 152 return Status(kOk);
153 } 153 }
154 154
155 Status WaitForDevToolsAndCheckVersion( 155 Status WaitForDevToolsAndCheckVersion(
156 const NetAddress& address, 156 const NetAddress& address,
157 URLRequestContextGetter* context_getter, 157 URLRequestContextGetter* context_getter,
158 const SyncWebSocketFactory& socket_factory, 158 const SyncWebSocketFactory& socket_factory,
159 const Capabilities* capabilities,
159 scoped_ptr<DevToolsHttpClient>* user_client) { 160 scoped_ptr<DevToolsHttpClient>* user_client) {
161 scoped_ptr<DeviceMetrics> device_metrics;
162 if (capabilities && capabilities->device_metrics)
163 device_metrics.reset(new DeviceMetrics(*capabilities->device_metrics));
164
160 scoped_ptr<DevToolsHttpClient> client(new DevToolsHttpClient( 165 scoped_ptr<DevToolsHttpClient> client(new DevToolsHttpClient(
161 address, context_getter, socket_factory)); 166 address, context_getter, socket_factory, device_metrics.Pass()));
162 base::TimeTicks deadline = 167 base::TimeTicks deadline =
163 base::TimeTicks::Now() + base::TimeDelta::FromSeconds(60); 168 base::TimeTicks::Now() + base::TimeDelta::FromSeconds(60);
164 Status status = client->Init(deadline - base::TimeTicks::Now()); 169 Status status = client->Init(deadline - base::TimeTicks::Now());
165 if (status.IsError()) 170 if (status.IsError())
166 return status; 171 return status;
167 if (client->browser_info()->build_no < kMinimumSupportedChromeBuildNo) { 172 if (client->browser_info()->build_no < kMinimumSupportedChromeBuildNo) {
168 return Status(kUnknownError, "Chrome version must be >= " + 173 return Status(kUnknownError, "Chrome version must be >= " +
169 GetMinimumSupportedChromeVersion()); 174 GetMinimumSupportedChromeVersion());
170 } 175 }
171 176
(...skipping 14 matching lines...) Expand all
186 Status LaunchExistingChromeSession( 191 Status LaunchExistingChromeSession(
187 URLRequestContextGetter* context_getter, 192 URLRequestContextGetter* context_getter,
188 const SyncWebSocketFactory& socket_factory, 193 const SyncWebSocketFactory& socket_factory,
189 const Capabilities& capabilities, 194 const Capabilities& capabilities,
190 ScopedVector<DevToolsEventListener>& devtools_event_listeners, 195 ScopedVector<DevToolsEventListener>& devtools_event_listeners,
191 scoped_ptr<Chrome>* chrome) { 196 scoped_ptr<Chrome>* chrome) {
192 Status status(kOk); 197 Status status(kOk);
193 scoped_ptr<DevToolsHttpClient> devtools_client; 198 scoped_ptr<DevToolsHttpClient> devtools_client;
194 status = WaitForDevToolsAndCheckVersion( 199 status = WaitForDevToolsAndCheckVersion(
195 capabilities.debugger_address, context_getter, socket_factory, 200 capabilities.debugger_address, context_getter, socket_factory,
196 &devtools_client); 201 NULL, &devtools_client);
197 if (status.IsError()) { 202 if (status.IsError()) {
198 return Status(kUnknownError, "cannot connect to chrome at " + 203 return Status(kUnknownError, "cannot connect to chrome at " +
199 capabilities.debugger_address.ToString(), 204 capabilities.debugger_address.ToString(),
200 status); 205 status);
201 } 206 }
202 chrome->reset(new ChromeExistingImpl(devtools_client.Pass(), 207 chrome->reset(new ChromeExistingImpl(devtools_client.Pass(),
203 devtools_event_listeners)); 208 devtools_event_listeners));
204 return Status(kOk); 209 return Status(kOk);
205 } 210 }
206 211
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 #else 275 #else
271 std::string command_string = command.GetCommandLineString(); 276 std::string command_string = command.GetCommandLineString();
272 #endif 277 #endif
273 VLOG(0) << "Launching chrome: " << command_string; 278 VLOG(0) << "Launching chrome: " << command_string;
274 base::ProcessHandle process; 279 base::ProcessHandle process;
275 if (!base::LaunchProcess(command, options, &process)) 280 if (!base::LaunchProcess(command, options, &process))
276 return Status(kUnknownError, "chrome failed to start"); 281 return Status(kUnknownError, "chrome failed to start");
277 282
278 scoped_ptr<DevToolsHttpClient> devtools_client; 283 scoped_ptr<DevToolsHttpClient> devtools_client;
279 status = WaitForDevToolsAndCheckVersion( 284 status = WaitForDevToolsAndCheckVersion(
280 NetAddress(port), context_getter, socket_factory, &devtools_client); 285 NetAddress(port), context_getter, socket_factory, &capabilities,
286 &devtools_client);
281 287
282 if (status.IsError()) { 288 if (status.IsError()) {
283 int exit_code; 289 int exit_code;
284 base::TerminationStatus chrome_status = 290 base::TerminationStatus chrome_status =
285 base::GetTerminationStatus(process, &exit_code); 291 base::GetTerminationStatus(process, &exit_code);
286 if (chrome_status != base::TERMINATION_STATUS_STILL_RUNNING) { 292 if (chrome_status != base::TERMINATION_STATUS_STILL_RUNNING) {
287 std::string termination_reason; 293 std::string termination_reason;
288 switch (chrome_status) { 294 switch (chrome_status) {
289 case base::TERMINATION_STATUS_NORMAL_TERMINATION: 295 case base::TERMINATION_STATUS_NORMAL_TERMINATION:
290 termination_reason = "exited normally"; 296 termination_reason = "exited normally";
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 port); 376 port);
371 if (status.IsError()) { 377 if (status.IsError()) {
372 device->TearDown(); 378 device->TearDown();
373 return status; 379 return status;
374 } 380 }
375 381
376 scoped_ptr<DevToolsHttpClient> devtools_client; 382 scoped_ptr<DevToolsHttpClient> devtools_client;
377 status = WaitForDevToolsAndCheckVersion(NetAddress(port), 383 status = WaitForDevToolsAndCheckVersion(NetAddress(port),
378 context_getter, 384 context_getter,
379 socket_factory, 385 socket_factory,
386 &capabilities,
380 &devtools_client); 387 &devtools_client);
381 if (status.IsError()) { 388 if (status.IsError()) {
382 device->TearDown(); 389 device->TearDown();
383 return status; 390 return status;
384 } 391 }
385 392
386 chrome->reset(new ChromeAndroidImpl(devtools_client.Pass(), 393 chrome->reset(new ChromeAndroidImpl(devtools_client.Pass(),
387 devtools_event_listeners, 394 devtools_event_listeners,
388 port_reservation.Pass(), 395 port_reservation.Pass(),
389 device.Pass())); 396 device.Pass()));
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 // Write empty "First Run" file, otherwise Chrome will wipe the default 692 // Write empty "First Run" file, otherwise Chrome will wipe the default
686 // profile that was written. 693 // profile that was written.
687 if (base::WriteFile( 694 if (base::WriteFile(
688 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) { 695 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) {
689 return Status(kUnknownError, "failed to write first run file"); 696 return Status(kUnknownError, "failed to write first run file");
690 } 697 }
691 return Status(kOk); 698 return Status(kOk);
692 } 699 }
693 700
694 } // namespace internal 701 } // namespace internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698