Skip to content

Commit

Permalink
Respect custom --adb-binary for chrome_android-derived products (#…
Browse files Browse the repository at this point in the history
…33654)

Previously, `chrome_android`-derived products depended on finding a
generic `adb` on the `PATH`. The Chromium infrastructure was changed to
use `--adb-binary` instead of `PATH` pollution, but the option did not
work as documented because wptrunner did not pass the option all the way
through.
  • Loading branch information
jonathan-j-lee committed Apr 15, 2022
1 parent 00d9ea9 commit f7ffbe1
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 10 deletions.
5 changes: 3 additions & 2 deletions tools/wpt/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -952,6 +952,7 @@ class ChromeAndroidBase(Browser):
def __init__(self, logger):
super().__init__(logger)
self.device_serial = None
self.adb_binary = "adb"

def download(self, dest=None, channel=None, rename=None):
raise NotImplementedError
Expand All @@ -977,7 +978,7 @@ def version(self, binary=None, webdriver_binary=None):
self.logger.warning("No package name provided.")
return None

command = ['adb']
command = [self.adb_binary]
if self.device_serial:
# Assume we have same version of browser on all devices
command.extend(['-s', self.device_serial[0]])
Expand Down Expand Up @@ -1036,7 +1037,7 @@ def find_binary(self, venv_path=None, channel=None):
# For WebView, it is not trivial to change the WebView provider, so
# we will just grab whatever is available.
# https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/channels.md
command = ['adb']
command = [self.adb_binary]
if self.device_serial:
command.extend(['-s', self.device_serial[0]])
command.extend(['shell', 'dumpsys', 'webviewupdate'])
Expand Down
2 changes: 2 additions & 0 deletions tools/wpt/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,8 @@ class ChromeAndroidBase(BrowserSetup):
def setup_kwargs(self, kwargs):
if kwargs.get("device_serial"):
self.browser.device_serial = kwargs["device_serial"]
if kwargs.get("adb_binary"):
self.browser.adb_binary = kwargs["adb_binary"]
browser_channel = kwargs["browser_channel"]
if kwargs["package_name"] is None:
kwargs["package_name"] = self.browser.find_binary(
Expand Down
7 changes: 5 additions & 2 deletions tools/wptrunner/wptrunner/browsers/android_weblayer.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def check_args(**kwargs):

def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"adb_binary": kwargs["adb_binary"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args"),
Expand Down Expand Up @@ -86,6 +87,7 @@ class WeblayerShell(ChromeAndroidBrowserBase):

def __init__(self, logger, binary,
webdriver_binary="chromedriver",
adb_binary="adb",
remote_queue=None,
device_serial=None,
webdriver_args=None,
Expand All @@ -94,7 +96,8 @@ def __init__(self, logger, binary,
"""Creates a new representation of Chrome. The `binary` argument gives
the browser binary to use for testing."""
super().__init__(logger,
webdriver_binary, remote_queue, device_serial,
webdriver_args, stackwalk_binary, symbols_path)
webdriver_binary, adb_binary, remote_queue,
device_serial, webdriver_args, stackwalk_binary,
symbols_path)
self.binary = binary
self.wptserver_ports = _wptserve_ports
7 changes: 5 additions & 2 deletions tools/wptrunner/wptrunner/browsers/android_webview.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def check_args(**kwargs):

def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"binary": kwargs["binary"],
"adb_binary": kwargs["adb_binary"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args"),
Expand Down Expand Up @@ -84,6 +85,7 @@ class SystemWebViewShell(ChromeAndroidBrowserBase):
"""

def __init__(self, logger, binary, webdriver_binary="chromedriver",
adb_binary="adb",
remote_queue=None,
device_serial=None,
webdriver_args=None,
Expand All @@ -92,7 +94,8 @@ def __init__(self, logger, binary, webdriver_binary="chromedriver",
"""Creates a new representation of Chrome. The `binary` argument gives
the browser binary to use for testing."""
super().__init__(logger,
webdriver_binary, remote_queue, device_serial,
webdriver_args, stackwalk_binary, symbols_path)
webdriver_binary, adb_binary, remote_queue,
device_serial, webdriver_args, stackwalk_binary,
symbols_path)
self.binary = binary
self.wptserver_ports = _wptserve_ports
13 changes: 9 additions & 4 deletions tools/wptrunner/wptrunner/browsers/chrome_android.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def check_args(**kwargs):

def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
return {"package_name": kwargs["package_name"],
"adb_binary": kwargs["adb_binary"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args"),
Expand Down Expand Up @@ -131,6 +132,7 @@ class ChromeAndroidBrowserBase(WebDriverBrowser):
def __init__(self,
logger,
webdriver_binary="chromedriver",
adb_binary="adb",
remote_queue=None,
device_serial=None,
webdriver_args=None,
Expand All @@ -140,6 +142,7 @@ def __init__(self,
binary=None,
webdriver_binary=webdriver_binary,
webdriver_args=webdriver_args,)
self.adb_binary = adb_binary
self.device_serial = device_serial
self.stackwalk_binary = stackwalk_binary
self.symbols_path = symbols_path
Expand All @@ -154,7 +157,7 @@ def setup(self):
self.logcat_runner.start()

def _adb_run(self, args):
cmd = ['adb']
cmd = [self.adb_binary]
if self.device_serial:
cmd.extend(['-s', self.device_serial])
cmd.extend(args)
Expand Down Expand Up @@ -187,7 +190,7 @@ def clear_log(self):
self._adb_run(['logcat', '-c'])

def logcat_cmd(self):
cmd = ['adb']
cmd = [self.adb_binary]
if self.device_serial:
cmd.extend(['-s', self.device_serial])
cmd.extend(['logcat', '*:D'])
Expand Down Expand Up @@ -225,13 +228,15 @@ class ChromeAndroidBrowser(ChromeAndroidBrowserBase):

def __init__(self, logger, package_name,
webdriver_binary="chromedriver",
adb_binary="adb",
remote_queue = None,
device_serial=None,
webdriver_args=None,
stackwalk_binary=None,
symbols_path=None):
super().__init__(logger,
webdriver_binary, remote_queue, device_serial,
webdriver_args, stackwalk_binary, symbols_path)
webdriver_binary, adb_binary, remote_queue,
device_serial, webdriver_args, stackwalk_binary,
symbols_path)
self.package_name = package_name
self.wptserver_ports = _wptserve_ports

0 comments on commit f7ffbe1

Please sign in to comment.