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

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

Issue 1551503002: Convert Pass()→std::move() in //chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9
10 #include <algorithm> 9 #include <algorithm>
10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/base64.h" 13 #include "base/base64.h"
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/command_line.h" 15 #include "base/command_line.h"
16 #include "base/files/file_path.h" 16 #include "base/files/file_path.h"
17 #include "base/files/file_util.h" 17 #include "base/files/file_util.h"
18 #include "base/files/scoped_file.h" 18 #include "base/files/scoped_file.h"
19 #include "base/format_macros.h" 19 #include "base/format_macros.h"
20 #include "base/json/json_reader.h" 20 #include "base/json/json_reader.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 device_metrics.reset(new DeviceMetrics(*capabilities->device_metrics)); 189 device_metrics.reset(new DeviceMetrics(*capabilities->device_metrics));
190 190
191 scoped_ptr<std::set<WebViewInfo::Type>> window_types; 191 scoped_ptr<std::set<WebViewInfo::Type>> window_types;
192 if (capabilities && !capabilities->window_types.empty()) { 192 if (capabilities && !capabilities->window_types.empty()) {
193 window_types.reset( 193 window_types.reset(
194 new std::set<WebViewInfo::Type>(capabilities->window_types)); 194 new std::set<WebViewInfo::Type>(capabilities->window_types));
195 } else { 195 } else {
196 window_types.reset(new std::set<WebViewInfo::Type>()); 196 window_types.reset(new std::set<WebViewInfo::Type>());
197 } 197 }
198 198
199 scoped_ptr<DevToolsHttpClient> client( 199 scoped_ptr<DevToolsHttpClient> client(new DevToolsHttpClient(
200 new DevToolsHttpClient(address, context_getter, socket_factory, 200 address, context_getter, socket_factory, std::move(device_metrics),
201 device_metrics.Pass(), window_types.Pass())); 201 std::move(window_types)));
202 base::TimeTicks deadline = 202 base::TimeTicks deadline =
203 base::TimeTicks::Now() + base::TimeDelta::FromSeconds(60); 203 base::TimeTicks::Now() + base::TimeDelta::FromSeconds(60);
204 Status status = client->Init(deadline - base::TimeTicks::Now()); 204 Status status = client->Init(deadline - base::TimeTicks::Now());
205 if (status.IsError()) 205 if (status.IsError())
206 return status; 206 return status;
207 207
208 base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); 208 base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
209 if (cmd_line->HasSwitch("disable-build-check")) { 209 if (cmd_line->HasSwitch("disable-build-check")) {
210 LOG(WARNING) << "You are using an unsupported command-line switch: " 210 LOG(WARNING) << "You are using an unsupported command-line switch: "
211 "--disable-build-check. Please don't report bugs that " 211 "--disable-build-check. Please don't report bugs that "
212 "cannot be reproduced with this switch removed."; 212 "cannot be reproduced with this switch removed.";
213 } else if (client->browser_info()->build_no < 213 } else if (client->browser_info()->build_no <
214 kMinimumSupportedChromeBuildNo) { 214 kMinimumSupportedChromeBuildNo) {
215 return Status(kUnknownError, "Chrome version must be >= " + 215 return Status(kUnknownError, "Chrome version must be >= " +
216 GetMinimumSupportedChromeVersion()); 216 GetMinimumSupportedChromeVersion());
217 } 217 }
218 218
219 while (base::TimeTicks::Now() < deadline) { 219 while (base::TimeTicks::Now() < deadline) {
220 WebViewsInfo views_info; 220 WebViewsInfo views_info;
221 client->GetWebViewsInfo(&views_info); 221 client->GetWebViewsInfo(&views_info);
222 for (size_t i = 0; i < views_info.GetSize(); ++i) { 222 for (size_t i = 0; i < views_info.GetSize(); ++i) {
223 if (views_info.Get(i).type == WebViewInfo::kPage) { 223 if (views_info.Get(i).type == WebViewInfo::kPage) {
224 *user_client = client.Pass(); 224 *user_client = std::move(client);
225 return Status(kOk); 225 return Status(kOk);
226 } 226 }
227 } 227 }
228 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(50)); 228 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(50));
229 } 229 }
230 return Status(kUnknownError, "unable to discover open pages"); 230 return Status(kUnknownError, "unable to discover open pages");
231 } 231 }
232 232
233 Status CreateBrowserwideDevToolsClientAndConnect( 233 Status CreateBrowserwideDevToolsClientAndConnect(
234 const NetAddress& address, 234 const NetAddress& address,
(...skipping 11 matching lines...) Expand all
246 ++it) { 246 ++it) {
247 // Only add listeners that subscribe to the browser-wide |DevToolsClient|. 247 // Only add listeners that subscribe to the browser-wide |DevToolsClient|.
248 // Otherwise, listeners will think this client is associated with a webview, 248 // Otherwise, listeners will think this client is associated with a webview,
249 // and will send unrecognized commands to it. 249 // and will send unrecognized commands to it.
250 if ((*it)->subscribes_to_browser()) 250 if ((*it)->subscribes_to_browser())
251 client->AddListener(*it); 251 client->AddListener(*it);
252 } 252 }
253 // Provide the client regardless of whether it connects, so that Chrome always 253 // Provide the client regardless of whether it connects, so that Chrome always
254 // has a valid |devtools_websocket_client_|. If not connected, no listeners 254 // has a valid |devtools_websocket_client_|. If not connected, no listeners
255 // will be notified, and client will just return kDisconnected errors if used. 255 // will be notified, and client will just return kDisconnected errors if used.
256 *browser_client = client.Pass(); 256 *browser_client = std::move(client);
257 // To avoid unnecessary overhead, only connect if tracing is enabled, since 257 // To avoid unnecessary overhead, only connect if tracing is enabled, since
258 // the browser-wide client is currently only used for tracing. 258 // the browser-wide client is currently only used for tracing.
259 if (!perf_logging_prefs.trace_categories.empty()) { 259 if (!perf_logging_prefs.trace_categories.empty()) {
260 Status status = (*browser_client)->ConnectIfNecessary(); 260 Status status = (*browser_client)->ConnectIfNecessary();
261 if (status.IsError()) 261 if (status.IsError())
262 return status; 262 return status;
263 } 263 }
264 return Status(kOk); 264 return Status(kOk);
265 } 265 }
266 266
(...skipping 16 matching lines...) Expand all
283 283
284 scoped_ptr<DevToolsClient> devtools_websocket_client; 284 scoped_ptr<DevToolsClient> devtools_websocket_client;
285 status = CreateBrowserwideDevToolsClientAndConnect( 285 status = CreateBrowserwideDevToolsClientAndConnect(
286 capabilities.debugger_address, capabilities.perf_logging_prefs, 286 capabilities.debugger_address, capabilities.perf_logging_prefs,
287 socket_factory, *devtools_event_listeners, &devtools_websocket_client); 287 socket_factory, *devtools_event_listeners, &devtools_websocket_client);
288 if (status.IsError()) { 288 if (status.IsError()) {
289 LOG(WARNING) << "Browser-wide DevTools client failed to connect: " 289 LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
290 << status.message(); 290 << status.message();
291 } 291 }
292 292
293 chrome->reset(new ChromeRemoteImpl(devtools_http_client.Pass(), 293 chrome->reset(new ChromeRemoteImpl(std::move(devtools_http_client),
294 devtools_websocket_client.Pass(), 294 std::move(devtools_websocket_client),
295 *devtools_event_listeners)); 295 *devtools_event_listeners));
296 return Status(kOk); 296 return Status(kOk);
297 } 297 }
298 298
299 Status LaunchDesktopChrome( 299 Status LaunchDesktopChrome(
300 URLRequestContextGetter* context_getter, 300 URLRequestContextGetter* context_getter,
301 uint16_t port, 301 uint16_t port,
302 scoped_ptr<PortReservation> port_reservation, 302 scoped_ptr<PortReservation> port_reservation,
303 const SyncWebSocketFactory& socket_factory, 303 const SyncWebSocketFactory& socket_factory,
304 const Capabilities& capabilities, 304 const Capabilities& capabilities,
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 419
420 scoped_ptr<DevToolsClient> devtools_websocket_client; 420 scoped_ptr<DevToolsClient> devtools_websocket_client;
421 status = CreateBrowserwideDevToolsClientAndConnect( 421 status = CreateBrowserwideDevToolsClientAndConnect(
422 NetAddress(port), capabilities.perf_logging_prefs, socket_factory, 422 NetAddress(port), capabilities.perf_logging_prefs, socket_factory,
423 *devtools_event_listeners, &devtools_websocket_client); 423 *devtools_event_listeners, &devtools_websocket_client);
424 if (status.IsError()) { 424 if (status.IsError()) {
425 LOG(WARNING) << "Browser-wide DevTools client failed to connect: " 425 LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
426 << status.message(); 426 << status.message();
427 } 427 }
428 428
429 scoped_ptr<ChromeDesktopImpl> chrome_desktop( 429 scoped_ptr<ChromeDesktopImpl> chrome_desktop(new ChromeDesktopImpl(
430 new ChromeDesktopImpl(devtools_http_client.Pass(), 430 std::move(devtools_http_client), std::move(devtools_websocket_client),
431 devtools_websocket_client.Pass(), 431 *devtools_event_listeners, std::move(port_reservation),
432 *devtools_event_listeners, 432 std::move(process), command, &user_data_dir, &extension_dir));
433 port_reservation.Pass(),
434 process.Pass(),
435 command,
436 &user_data_dir,
437 &extension_dir));
438 for (size_t i = 0; i < extension_bg_pages.size(); ++i) { 433 for (size_t i = 0; i < extension_bg_pages.size(); ++i) {
439 VLOG(0) << "Waiting for extension bg page load: " << extension_bg_pages[i]; 434 VLOG(0) << "Waiting for extension bg page load: " << extension_bg_pages[i];
440 scoped_ptr<WebView> web_view; 435 scoped_ptr<WebView> web_view;
441 Status status = chrome_desktop->WaitForPageToLoad( 436 Status status = chrome_desktop->WaitForPageToLoad(
442 extension_bg_pages[i], base::TimeDelta::FromSeconds(10), &web_view); 437 extension_bg_pages[i], base::TimeDelta::FromSeconds(10), &web_view);
443 if (status.IsError()) { 438 if (status.IsError()) {
444 return Status(kUnknownError, 439 return Status(kUnknownError,
445 "failed to wait for extension background page to load: " + 440 "failed to wait for extension background page to load: " +
446 extension_bg_pages[i], 441 extension_bg_pages[i],
447 status); 442 status);
448 } 443 }
449 } 444 }
450 *chrome = chrome_desktop.Pass(); 445 *chrome = std::move(chrome_desktop);
451 return Status(kOk); 446 return Status(kOk);
452 } 447 }
453 448
454 Status LaunchAndroidChrome( 449 Status LaunchAndroidChrome(
455 URLRequestContextGetter* context_getter, 450 URLRequestContextGetter* context_getter,
456 uint16_t port, 451 uint16_t port,
457 scoped_ptr<PortReservation> port_reservation, 452 scoped_ptr<PortReservation> port_reservation,
458 const SyncWebSocketFactory& socket_factory, 453 const SyncWebSocketFactory& socket_factory,
459 const Capabilities& capabilities, 454 const Capabilities& capabilities,
460 ScopedVector<DevToolsEventListener>* devtools_event_listeners, 455 ScopedVector<DevToolsEventListener>* devtools_event_listeners,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 495
501 scoped_ptr<DevToolsClient> devtools_websocket_client; 496 scoped_ptr<DevToolsClient> devtools_websocket_client;
502 status = CreateBrowserwideDevToolsClientAndConnect( 497 status = CreateBrowserwideDevToolsClientAndConnect(
503 NetAddress(port), capabilities.perf_logging_prefs, socket_factory, 498 NetAddress(port), capabilities.perf_logging_prefs, socket_factory,
504 *devtools_event_listeners, &devtools_websocket_client); 499 *devtools_event_listeners, &devtools_websocket_client);
505 if (status.IsError()) { 500 if (status.IsError()) {
506 LOG(WARNING) << "Browser-wide DevTools client failed to connect: " 501 LOG(WARNING) << "Browser-wide DevTools client failed to connect: "
507 << status.message(); 502 << status.message();
508 } 503 }
509 504
510 chrome->reset(new ChromeAndroidImpl(devtools_http_client.Pass(), 505 chrome->reset(new ChromeAndroidImpl(
511 devtools_websocket_client.Pass(), 506 std::move(devtools_http_client), std::move(devtools_websocket_client),
512 *devtools_event_listeners, 507 *devtools_event_listeners, std::move(port_reservation),
513 port_reservation.Pass(), 508 std::move(device)));
514 device.Pass()));
515 return Status(kOk); 509 return Status(kOk);
516 } 510 }
517 511
518 } // namespace 512 } // namespace
519 513
520 Status LaunchChrome( 514 Status LaunchChrome(
521 URLRequestContextGetter* context_getter, 515 URLRequestContextGetter* context_getter,
522 const SyncWebSocketFactory& socket_factory, 516 const SyncWebSocketFactory& socket_factory,
523 DeviceManager* device_manager, 517 DeviceManager* device_manager,
524 PortServer* port_server, 518 PortServer* port_server,
(...skipping 12 matching lines...) Expand all
537 Status port_status(kOk); 531 Status port_status(kOk);
538 532
539 if (capabilities.IsAndroid()) { 533 if (capabilities.IsAndroid()) {
540 if (port_server) 534 if (port_server)
541 port_status = port_server->ReservePort(&port, &port_reservation); 535 port_status = port_server->ReservePort(&port, &port_reservation);
542 else 536 else
543 port_status = port_manager->ReservePortFromPool(&port, &port_reservation); 537 port_status = port_manager->ReservePortFromPool(&port, &port_reservation);
544 if (port_status.IsError()) 538 if (port_status.IsError())
545 return Status(kUnknownError, "cannot reserve port for Chrome", 539 return Status(kUnknownError, "cannot reserve port for Chrome",
546 port_status); 540 port_status);
547 return LaunchAndroidChrome(context_getter, 541 return LaunchAndroidChrome(
548 port, 542 context_getter, port, std::move(port_reservation), socket_factory,
549 port_reservation.Pass(), 543 capabilities, devtools_event_listeners, device_manager, chrome);
550 socket_factory,
551 capabilities,
552 devtools_event_listeners,
553 device_manager,
554 chrome);
555 } else { 544 } else {
556 if (port_server) 545 if (port_server)
557 port_status = port_server->ReservePort(&port, &port_reservation); 546 port_status = port_server->ReservePort(&port, &port_reservation);
558 else 547 else
559 port_status = port_manager->ReservePort(&port, &port_reservation); 548 port_status = port_manager->ReservePort(&port, &port_reservation);
560 if (port_status.IsError()) 549 if (port_status.IsError())
561 return Status(kUnknownError, "cannot reserve port for Chrome", 550 return Status(kUnknownError, "cannot reserve port for Chrome",
562 port_status); 551 port_status);
563 return LaunchDesktopChrome(context_getter, 552 return LaunchDesktopChrome(context_getter, port,
564 port, 553 std::move(port_reservation), socket_factory,
565 port_reservation.Pass(), 554 capabilities, devtools_event_listeners, chrome);
566 socket_factory,
567 capabilities,
568 devtools_event_listeners,
569 chrome);
570 } 555 }
571 } 556 }
572 557
573 namespace internal { 558 namespace internal {
574 559
575 void ConvertHexadecimalToIDAlphabet(std::string* id) { 560 void ConvertHexadecimalToIDAlphabet(std::string* id) {
576 for (size_t i = 0; i < id->size(); ++i) { 561 for (size_t i = 0; i < id->size(); ++i) {
577 int val; 562 int val;
578 if (base::HexStringToInt(base::StringPiece(id->begin() + i, 563 if (base::HexStringToInt(base::StringPiece(id->begin() + i,
579 id->begin() + i + 1), 564 id->begin() + i + 1),
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 // Write empty "First Run" file, otherwise Chrome will wipe the default 841 // Write empty "First Run" file, otherwise Chrome will wipe the default
857 // profile that was written. 842 // profile that was written.
858 if (base::WriteFile( 843 if (base::WriteFile(
859 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) { 844 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) {
860 return Status(kUnknownError, "failed to write first run file"); 845 return Status(kUnknownError, "failed to write first run file");
861 } 846 }
862 return Status(kOk); 847 return Status(kOk);
863 } 848 }
864 849
865 } // namespace internal 850 } // namespace internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698