| OLD | NEW |
| 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 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 return Status(kOk); | 311 return Status(kOk); |
| 312 } | 312 } |
| 313 | 313 |
| 314 Status LaunchDesktopChrome( | 314 Status LaunchDesktopChrome( |
| 315 URLRequestContextGetter* context_getter, | 315 URLRequestContextGetter* context_getter, |
| 316 uint16_t port, | 316 uint16_t port, |
| 317 std::unique_ptr<PortReservation> port_reservation, | 317 std::unique_ptr<PortReservation> port_reservation, |
| 318 const SyncWebSocketFactory& socket_factory, | 318 const SyncWebSocketFactory& socket_factory, |
| 319 const Capabilities& capabilities, | 319 const Capabilities& capabilities, |
| 320 ScopedVector<DevToolsEventListener>* devtools_event_listeners, | 320 ScopedVector<DevToolsEventListener>* devtools_event_listeners, |
| 321 std::unique_ptr<Chrome>* chrome) { | 321 std::unique_ptr<Chrome>* chrome, |
| 322 bool w3c_compliant) { |
| 322 base::CommandLine command(base::CommandLine::NO_PROGRAM); | 323 base::CommandLine command(base::CommandLine::NO_PROGRAM); |
| 323 base::ScopedTempDir user_data_dir; | 324 base::ScopedTempDir user_data_dir; |
| 324 base::ScopedTempDir extension_dir; | 325 base::ScopedTempDir extension_dir; |
| 325 std::vector<std::string> extension_bg_pages; | 326 std::vector<std::string> extension_bg_pages; |
| 326 Status status = PrepareCommandLine(port, | 327 Status status = PrepareCommandLine(port, |
| 327 capabilities, | 328 capabilities, |
| 328 &command, | 329 &command, |
| 329 &user_data_dir, | 330 &user_data_dir, |
| 330 &extension_dir, | 331 &extension_dir, |
| 331 &extension_bg_pages); | 332 &extension_bg_pages); |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 | 444 |
| 444 std::unique_ptr<ChromeDesktopImpl> chrome_desktop(new ChromeDesktopImpl( | 445 std::unique_ptr<ChromeDesktopImpl> chrome_desktop(new ChromeDesktopImpl( |
| 445 std::move(devtools_http_client), std::move(devtools_websocket_client), | 446 std::move(devtools_http_client), std::move(devtools_websocket_client), |
| 446 *devtools_event_listeners, std::move(port_reservation), | 447 *devtools_event_listeners, std::move(port_reservation), |
| 447 std::move(process), command, &user_data_dir, &extension_dir, | 448 std::move(process), command, &user_data_dir, &extension_dir, |
| 448 capabilities.network_emulation_enabled)); | 449 capabilities.network_emulation_enabled)); |
| 449 for (size_t i = 0; i < extension_bg_pages.size(); ++i) { | 450 for (size_t i = 0; i < extension_bg_pages.size(); ++i) { |
| 450 VLOG(0) << "Waiting for extension bg page load: " << extension_bg_pages[i]; | 451 VLOG(0) << "Waiting for extension bg page load: " << extension_bg_pages[i]; |
| 451 std::unique_ptr<WebView> web_view; | 452 std::unique_ptr<WebView> web_view; |
| 452 Status status = chrome_desktop->WaitForPageToLoad( | 453 Status status = chrome_desktop->WaitForPageToLoad( |
| 453 extension_bg_pages[i], base::TimeDelta::FromSeconds(10), &web_view); | 454 extension_bg_pages[i], base::TimeDelta::FromSeconds(10), |
| 455 &web_view, w3c_compliant); |
| 454 if (status.IsError()) { | 456 if (status.IsError()) { |
| 455 return Status(kUnknownError, | 457 return Status(kUnknownError, |
| 456 "failed to wait for extension background page to load: " + | 458 "failed to wait for extension background page to load: " + |
| 457 extension_bg_pages[i], | 459 extension_bg_pages[i], |
| 458 status); | 460 status); |
| 459 } | 461 } |
| 460 } | 462 } |
| 461 *chrome = std::move(chrome_desktop); | 463 *chrome = std::move(chrome_desktop); |
| 462 return Status(kOk); | 464 return Status(kOk); |
| 463 } | 465 } |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 } // namespace | 532 } // namespace |
| 531 | 533 |
| 532 Status LaunchChrome( | 534 Status LaunchChrome( |
| 533 URLRequestContextGetter* context_getter, | 535 URLRequestContextGetter* context_getter, |
| 534 const SyncWebSocketFactory& socket_factory, | 536 const SyncWebSocketFactory& socket_factory, |
| 535 DeviceManager* device_manager, | 537 DeviceManager* device_manager, |
| 536 PortServer* port_server, | 538 PortServer* port_server, |
| 537 PortManager* port_manager, | 539 PortManager* port_manager, |
| 538 const Capabilities& capabilities, | 540 const Capabilities& capabilities, |
| 539 ScopedVector<DevToolsEventListener>* devtools_event_listeners, | 541 ScopedVector<DevToolsEventListener>* devtools_event_listeners, |
| 540 std::unique_ptr<Chrome>* chrome) { | 542 std::unique_ptr<Chrome>* chrome, |
| 543 bool w3c_compliant) { |
| 541 if (capabilities.IsRemoteBrowser()) { | 544 if (capabilities.IsRemoteBrowser()) { |
| 542 return LaunchRemoteChromeSession( | 545 return LaunchRemoteChromeSession( |
| 543 context_getter, socket_factory, | 546 context_getter, socket_factory, |
| 544 capabilities, devtools_event_listeners, chrome); | 547 capabilities, devtools_event_listeners, chrome); |
| 545 } | 548 } |
| 546 | 549 |
| 547 uint16_t port = 0; | 550 uint16_t port = 0; |
| 548 std::unique_ptr<PortReservation> port_reservation; | 551 std::unique_ptr<PortReservation> port_reservation; |
| 549 Status port_status(kOk); | 552 Status port_status(kOk); |
| 550 | 553 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 562 } else { | 565 } else { |
| 563 if (port_server) | 566 if (port_server) |
| 564 port_status = port_server->ReservePort(&port, &port_reservation); | 567 port_status = port_server->ReservePort(&port, &port_reservation); |
| 565 else | 568 else |
| 566 port_status = port_manager->ReservePort(&port, &port_reservation); | 569 port_status = port_manager->ReservePort(&port, &port_reservation); |
| 567 if (port_status.IsError()) | 570 if (port_status.IsError()) |
| 568 return Status(kUnknownError, "cannot reserve port for Chrome", | 571 return Status(kUnknownError, "cannot reserve port for Chrome", |
| 569 port_status); | 572 port_status); |
| 570 return LaunchDesktopChrome(context_getter, port, | 573 return LaunchDesktopChrome(context_getter, port, |
| 571 std::move(port_reservation), socket_factory, | 574 std::move(port_reservation), socket_factory, |
| 572 capabilities, devtools_event_listeners, chrome); | 575 capabilities, devtools_event_listeners, chrome, |
| 576 w3c_compliant); |
| 573 } | 577 } |
| 574 } | 578 } |
| 575 | 579 |
| 576 namespace internal { | 580 namespace internal { |
| 577 | 581 |
| 578 void ConvertHexadecimalToIDAlphabet(std::string* id) { | 582 void ConvertHexadecimalToIDAlphabet(std::string* id) { |
| 579 for (size_t i = 0; i < id->size(); ++i) { | 583 for (size_t i = 0; i < id->size(); ++i) { |
| 580 int val; | 584 int val; |
| 581 if (base::HexStringToInt(base::StringPiece(id->begin() + i, | 585 if (base::HexStringToInt(base::StringPiece(id->begin() + i, |
| 582 id->begin() + i + 1), | 586 id->begin() + i + 1), |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 868 // Write empty "First Run" file, otherwise Chrome will wipe the default | 872 // Write empty "First Run" file, otherwise Chrome will wipe the default |
| 869 // profile that was written. | 873 // profile that was written. |
| 870 if (base::WriteFile( | 874 if (base::WriteFile( |
| 871 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) { | 875 user_data_dir.Append(chrome::kFirstRunSentinel), "", 0) != 0) { |
| 872 return Status(kUnknownError, "failed to write first run file"); | 876 return Status(kUnknownError, "failed to write first run file"); |
| 873 } | 877 } |
| 874 return Status(kOk); | 878 return Status(kOk); |
| 875 } | 879 } |
| 876 | 880 |
| 877 } // namespace internal | 881 } // namespace internal |
| OLD | NEW |