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

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

Issue 251933005: [ChromeDriver] Support mobile emulation on desktop Chrome. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleaning up DeviceMetrics architecture; adding a test 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());
164 *device_metrics = *capabilities->device_metrics;
samuong 2014/05/16 23:00:35 Change these two lines to: device_metrics.reset(n
sam.rawlins 2014/05/16 23:35:51 Done.
165 }
166
160 scoped_ptr<DevToolsHttpClient> client(new DevToolsHttpClient( 167 scoped_ptr<DevToolsHttpClient> client(new DevToolsHttpClient(
161 address, context_getter, socket_factory)); 168 address, context_getter, socket_factory, device_metrics.Pass()));
162 base::TimeTicks deadline = 169 base::TimeTicks deadline =
163 base::TimeTicks::Now() + base::TimeDelta::FromSeconds(60); 170 base::TimeTicks::Now() + base::TimeDelta::FromSeconds(60);
164 Status status = client->Init(deadline - base::TimeTicks::Now()); 171 Status status = client->Init(deadline - base::TimeTicks::Now());
165 if (status.IsError()) 172 if (status.IsError())
166 return status; 173 return status;
167 if (client->browser_info()->build_no < kMinimumSupportedChromeBuildNo) { 174 if (client->browser_info()->build_no < kMinimumSupportedChromeBuildNo) {
168 return Status(kUnknownError, "Chrome version must be >= " + 175 return Status(kUnknownError, "Chrome version must be >= " +
169 GetMinimumSupportedChromeVersion()); 176 GetMinimumSupportedChromeVersion());
170 } 177 }
171 178
(...skipping 14 matching lines...) Expand all
186 Status LaunchExistingChromeSession( 193 Status LaunchExistingChromeSession(
187 URLRequestContextGetter* context_getter, 194 URLRequestContextGetter* context_getter,
188 const SyncWebSocketFactory& socket_factory, 195 const SyncWebSocketFactory& socket_factory,
189 const Capabilities& capabilities, 196 const Capabilities& capabilities,
190 ScopedVector<DevToolsEventListener>& devtools_event_listeners, 197 ScopedVector<DevToolsEventListener>& devtools_event_listeners,
191 scoped_ptr<Chrome>* chrome) { 198 scoped_ptr<Chrome>* chrome) {
192 Status status(kOk); 199 Status status(kOk);
193 scoped_ptr<DevToolsHttpClient> devtools_client; 200 scoped_ptr<DevToolsHttpClient> devtools_client;
194 status = WaitForDevToolsAndCheckVersion( 201 status = WaitForDevToolsAndCheckVersion(
195 capabilities.debugger_address, context_getter, socket_factory, 202 capabilities.debugger_address, context_getter, socket_factory,
196 &devtools_client); 203 NULL, &devtools_client);
197 if (status.IsError()) { 204 if (status.IsError()) {
198 return Status(kUnknownError, "cannot connect to chrome at " + 205 return Status(kUnknownError, "cannot connect to chrome at " +
199 capabilities.debugger_address.ToString(), 206 capabilities.debugger_address.ToString(),
200 status); 207 status);
201 } 208 }
202 chrome->reset(new ChromeExistingImpl(devtools_client.Pass(), 209 chrome->reset(new ChromeExistingImpl(devtools_client.Pass(),
203 devtools_event_listeners)); 210 devtools_event_listeners));
204 return Status(kOk); 211 return Status(kOk);
205 } 212 }
206 213
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 #else 277 #else
271 std::string command_string = command.GetCommandLineString(); 278 std::string command_string = command.GetCommandLineString();
272 #endif 279 #endif
273 VLOG(0) << "Launching chrome: " << command_string; 280 VLOG(0) << "Launching chrome: " << command_string;
274 base::ProcessHandle process; 281 base::ProcessHandle process;
275 if (!base::LaunchProcess(command, options, &process)) 282 if (!base::LaunchProcess(command, options, &process))
276 return Status(kUnknownError, "chrome failed to start"); 283 return Status(kUnknownError, "chrome failed to start");
277 284
278 scoped_ptr<DevToolsHttpClient> devtools_client; 285 scoped_ptr<DevToolsHttpClient> devtools_client;
279 status = WaitForDevToolsAndCheckVersion( 286 status = WaitForDevToolsAndCheckVersion(
280 NetAddress(port), context_getter, socket_factory, &devtools_client); 287 NetAddress(port), context_getter, socket_factory, &capabilities,
288 &devtools_client);
281 289
282 if (status.IsError()) { 290 if (status.IsError()) {
283 int exit_code; 291 int exit_code;
284 base::TerminationStatus chrome_status = 292 base::TerminationStatus chrome_status =
285 base::GetTerminationStatus(process, &exit_code); 293 base::GetTerminationStatus(process, &exit_code);
286 if (chrome_status != base::TERMINATION_STATUS_STILL_RUNNING) { 294 if (chrome_status != base::TERMINATION_STATUS_STILL_RUNNING) {
287 std::string termination_reason; 295 std::string termination_reason;
288 switch (chrome_status) { 296 switch (chrome_status) {
289 case base::TERMINATION_STATUS_NORMAL_TERMINATION: 297 case base::TERMINATION_STATUS_NORMAL_TERMINATION:
290 termination_reason = "exited normally"; 298 termination_reason = "exited normally";
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 port); 378 port);
371 if (status.IsError()) { 379 if (status.IsError()) {
372 device->TearDown(); 380 device->TearDown();
373 return status; 381 return status;
374 } 382 }
375 383
376 scoped_ptr<DevToolsHttpClient> devtools_client; 384 scoped_ptr<DevToolsHttpClient> devtools_client;
377 status = WaitForDevToolsAndCheckVersion(NetAddress(port), 385 status = WaitForDevToolsAndCheckVersion(NetAddress(port),
378 context_getter, 386 context_getter,
379 socket_factory, 387 socket_factory,
388 &capabilities,
380 &devtools_client); 389 &devtools_client);
381 if (status.IsError()) { 390 if (status.IsError()) {
382 device->TearDown(); 391 device->TearDown();
383 return status; 392 return status;
384 } 393 }
385 394
386 chrome->reset(new ChromeAndroidImpl(devtools_client.Pass(), 395 chrome->reset(new ChromeAndroidImpl(devtools_client.Pass(),
387 devtools_event_listeners, 396 devtools_event_listeners,
388 port_reservation.Pass(), 397 port_reservation.Pass(),
389 device.Pass())); 398 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 694 // Write empty "First Run" file, otherwise Chrome will wipe the default
686 // profile that was written. 695 // profile that was written.
687 if (base::WriteFile( 696 if (base::WriteFile(
688 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) { 697 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) {
689 return Status(kUnknownError, "failed to write first run file"); 698 return Status(kUnknownError, "failed to write first run file");
690 } 699 }
691 return Status(kOk); 700 return Status(kOk);
692 } 701 }
693 702
694 } // namespace internal 703 } // namespace internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698