Commit 13a256be authored by khachatryan's avatar khachatryan Committed by Commit Bot

[ChromeDriver] Check Chrome and ChromeDriver versions compatibility

Checking if Chrome version is compatible with ChromeDriver version..

Change-Id: Ib7f9be9133e69b2c670b94fc6fec20a9598aed65
bug: chromedriver:2685
Reviewed-on: https://chromium-review.googlesource.com/c/1363687Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Commit-Queue: Artur Khachatryan <khachatryan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#614741}
parent c898fcc2
...@@ -13,6 +13,8 @@ const int kMinimumSupportedChromeVersion[] = {70, 0, 3538, 0}; ...@@ -13,6 +13,8 @@ const int kMinimumSupportedChromeVersion[] = {70, 0, 3538, 0};
} // namespace } // namespace
const int kMinimumSupportedChromeMajorVersion =
kMinimumSupportedChromeVersion[0];
const int kMinimumSupportedChromeBuildNo = kMinimumSupportedChromeVersion[2]; const int kMinimumSupportedChromeBuildNo = kMinimumSupportedChromeVersion[2];
std::string GetMinimumSupportedChromeVersion() { std::string GetMinimumSupportedChromeVersion() {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <string> #include <string>
extern const int kMinimumSupportedChromeBuildNo; extern const int kMinimumSupportedChromeBuildNo;
extern const int kMinimumSupportedChromeMajorVersion;
std::string GetMinimumSupportedChromeVersion(); std::string GetMinimumSupportedChromeVersion();
......
...@@ -204,7 +204,8 @@ Status WaitForDevToolsAndCheckVersion( ...@@ -204,7 +204,8 @@ Status WaitForDevToolsAndCheckVersion(
const SyncWebSocketFactory& socket_factory, const SyncWebSocketFactory& socket_factory,
const Capabilities* capabilities, const Capabilities* capabilities,
int wait_time, int wait_time,
std::unique_ptr<DevToolsHttpClient>* user_client) { std::unique_ptr<DevToolsHttpClient>* user_client,
bool* retry) {
std::unique_ptr<DeviceMetrics> device_metrics; std::unique_ptr<DeviceMetrics> device_metrics;
if (capabilities && capabilities->device_metrics) if (capabilities && capabilities->device_metrics)
device_metrics.reset(new DeviceMetrics(*capabilities->device_metrics)); device_metrics.reset(new DeviceMetrics(*capabilities->device_metrics));
...@@ -248,14 +249,20 @@ Status WaitForDevToolsAndCheckVersion( ...@@ -248,14 +249,20 @@ Status WaitForDevToolsAndCheckVersion(
browser_info->android_package.c_str())); browser_info->android_package.c_str()));
} }
*retry = true;
if (cmd_line->HasSwitch("disable-build-check")) { if (cmd_line->HasSwitch("disable-build-check")) {
LOG(WARNING) << "You are using an unsupported command-line switch: " LOG(WARNING) << "You are using an unsupported command-line switch: "
"--disable-build-check. Please don't report bugs that " "--disable-build-check. Please don't report bugs that "
"cannot be reproduced with this switch removed."; "cannot be reproduced with this switch removed.";
} else if (browser_info->build_no < kMinimumSupportedChromeBuildNo) { } else if (browser_info->major_version <
return Status( kMinimumSupportedChromeMajorVersion ||
kSessionNotCreated, browser_info->major_version >
"Chrome version must be >= " + GetMinimumSupportedChromeVersion()); (kMinimumSupportedChromeMajorVersion + 3)) {
*retry = false;
return Status(kSessionNotCreated,
base::StringPrintf("Chrome version must be between %d and %d",
kMinimumSupportedChromeMajorVersion,
kMinimumSupportedChromeMajorVersion + 3));
} }
while (base::TimeTicks::Now() < deadline) { while (base::TimeTicks::Now() < deadline) {
...@@ -317,9 +324,10 @@ Status LaunchRemoteChromeSession( ...@@ -317,9 +324,10 @@ Status LaunchRemoteChromeSession(
std::unique_ptr<Chrome>* chrome) { std::unique_ptr<Chrome>* chrome) {
Status status(kOk); Status status(kOk);
std::unique_ptr<DevToolsHttpClient> devtools_http_client; std::unique_ptr<DevToolsHttpClient> devtools_http_client;
bool retry = true;
status = WaitForDevToolsAndCheckVersion( status = WaitForDevToolsAndCheckVersion(
capabilities.debugger_address, factory, socket_factory, &capabilities, 60, capabilities.debugger_address, factory, socket_factory, &capabilities, 60,
&devtools_http_client); &devtools_http_client, &retry);
if (status.IsError()) { if (status.IsError()) {
return Status(kUnknownError, "cannot connect to chrome at " + return Status(kUnknownError, "cannot connect to chrome at " +
capabilities.debugger_address.ToString(), capabilities.debugger_address.ToString(),
...@@ -357,6 +365,7 @@ Status LaunchDesktopChrome(network::mojom::URLLoaderFactory* factory, ...@@ -357,6 +365,7 @@ Status LaunchDesktopChrome(network::mojom::URLLoaderFactory* factory,
Status status = Status(kOk); Status status = Status(kOk);
std::vector<std::string> extension_bg_pages; std::vector<std::string> extension_bg_pages;
int devtools_port = 0; int devtools_port = 0;
bool retry = true;
if (capabilities.switches.HasSwitch("remote-debugging-port")) { if (capabilities.switches.HasSwitch("remote-debugging-port")) {
std::string port_switch = std::string port_switch =
...@@ -455,7 +464,10 @@ Status LaunchDesktopChrome(network::mojom::URLLoaderFactory* factory, ...@@ -455,7 +464,10 @@ Status LaunchDesktopChrome(network::mojom::URLLoaderFactory* factory,
if (status.IsOk()) { if (status.IsOk()) {
status = WaitForDevToolsAndCheckVersion( status = WaitForDevToolsAndCheckVersion(
NetAddress(devtools_port), factory, socket_factory, &capabilities, 1, NetAddress(devtools_port), factory, socket_factory, &capabilities, 1,
&devtools_http_client); &devtools_http_client, &retry);
if (!retry) {
break;
}
} }
if (status.IsOk()) { if (status.IsOk()) {
break; break;
...@@ -574,9 +586,10 @@ Status LaunchAndroidChrome(network::mojom::URLLoaderFactory* factory, ...@@ -574,9 +586,10 @@ Status LaunchAndroidChrome(network::mojom::URLLoaderFactory* factory,
} }
std::unique_ptr<DevToolsHttpClient> devtools_http_client; std::unique_ptr<DevToolsHttpClient> devtools_http_client;
bool retry = true;
status = WaitForDevToolsAndCheckVersion(NetAddress(devtools_port), factory, status = WaitForDevToolsAndCheckVersion(NetAddress(devtools_port), factory,
socket_factory, &capabilities, 60, socket_factory, &capabilities, 60,
&devtools_http_client); &devtools_http_client, &retry);
if (status.IsError()) { if (status.IsError()) {
device->TearDown(); device->TearDown();
return status; return status;
...@@ -628,10 +641,10 @@ Status LaunchReplayChrome(network::mojom::URLLoaderFactory* factory, ...@@ -628,10 +641,10 @@ Status LaunchReplayChrome(network::mojom::URLLoaderFactory* factory,
#endif #endif
std::unique_ptr<DevToolsHttpClient> devtools_http_client; std::unique_ptr<DevToolsHttpClient> devtools_http_client;
status = bool retry = true;
WaitForDevToolsAndCheckVersion(NetAddress(0), factory, socket_factory, status = WaitForDevToolsAndCheckVersion(NetAddress(0), factory,
&capabilities, 1, &devtools_http_client); socket_factory, &capabilities, 1,
&devtools_http_client, &retry);
std::unique_ptr<DevToolsClient> devtools_websocket_client; std::unique_ptr<DevToolsClient> devtools_websocket_client;
status = CreateBrowserwideDevToolsClientAndConnect( status = CreateBrowserwideDevToolsClientAndConnect(
NetAddress(0), capabilities.perf_logging_prefs, socket_factory, NetAddress(0), capabilities.perf_logging_prefs, socket_factory,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment