Commit d22fc15f authored by Chris Mumford's avatar Chris Mumford Committed by Commit Bot

Using Android device when retrieving version in browser.

ChromeAndroidBase.version, AndroidWebview.find_binary, and
ChromeAndroidBrowser._adb_run were not using the device serial
supplied by the --device-serial command-line option.

Additionally the device serial number was not being passed
to the webdriver when running tests for Chromium on Android.

Bug: None
Change-Id: I3f79191a9cb556f119f7b167f363bf596591c2c8
TESTING: Manually for both Chromium and WebView.
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1860676
Commit-Queue: Chris Mumford <cmumford@google.com>
Reviewed-by: default avatarRobert Ma <robertma@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708268}
parent df88f2bf
......@@ -623,6 +623,7 @@ class ChromeAndroidBase(Browser):
def __init__(self, logger):
super(ChromeAndroidBase, self).__init__(logger)
self.device_serial = None
def install(self, dest=None, channel=None):
raise NotImplementedError
......@@ -646,7 +647,10 @@ class ChromeAndroidBase(Browser):
self.logger.warning("No package name provided.")
return None
command = ['adb', 'shell', 'dumpsys', 'package', binary]
command = ['adb']
if self.device_serial:
command.extend(['-s', self.device_serial])
command.extend(['shell', 'dumpsys', 'package', binary])
try:
output = call(*command)
except (subprocess.CalledProcessError, OSError):
......@@ -687,7 +691,10 @@ class AndroidWebview(ChromeAndroidBase):
# 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', 'shell', 'dumpsys', 'webviewupdate']
command = ['adb']
if self.device_serial:
command.extend(['-s', self.device_serial])
command.extend(['shell', 'dumpsys', 'webviewupdate'])
try:
output = call(*command)
except (subprocess.CalledProcessError, OSError):
......
......@@ -354,6 +354,8 @@ class ChromeAndroid(BrowserSetup):
browser_cls = browser.ChromeAndroid
def setup_kwargs(self, kwargs):
if kwargs.get("device_serial"):
self.browser.device_serial = kwargs["device_serial"]
browser_channel = kwargs["browser_channel"]
if kwargs["package_name"] is None:
kwargs["package_name"] = self.browser.find_binary(
......@@ -398,6 +400,8 @@ class AndroidWebview(BrowserSetup):
browser_cls = browser.AndroidWebview
def setup_kwargs(self, kwargs):
if kwargs.get("device_serial"):
self.browser.device_serial = kwargs["device_serial"]
if kwargs["webdriver_binary"] is None:
webdriver_binary = self.browser.find_webdriver()
......
......@@ -31,6 +31,7 @@ def check_args(**kwargs):
def browser_kwargs(test_type, run_info_data, config, **kwargs):
return {"package_name": kwargs["package_name"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")}
......@@ -53,6 +54,9 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
assert kwargs["package_name"], "missing --package-name"
executor_kwargs["capabilities"]["goog:chromeOptions"]["androidPackage"] = \
kwargs["package_name"]
if kwargs.get("device_serial"):
executor_kwargs["capabilities"]["goog:chromeOptions"]["androidDeviceSerial"] = \
kwargs["device_serial"]
return executor_kwargs
......@@ -72,17 +76,22 @@ class ChromeAndroidBrowser(Browser):
"""
def __init__(self, logger, package_name, webdriver_binary="chromedriver",
webdriver_args=None):
device_serial=None, webdriver_args=None):
Browser.__init__(self, logger)
self.package_name = package_name
self.device_serial = device_serial
self.server = ChromeDriverServer(self.logger,
binary=webdriver_binary,
args=webdriver_args)
self.setup_adb_reverse()
def _adb_run(self, args):
self.logger.info('adb ' + ' '.join(args))
subprocess.check_call(['adb'] + args)
cmd = ['adb']
if self.device_serial:
cmd.extend(['-s', self.device_serial])
cmd.extend(args)
self.logger.info(' '.join(cmd))
subprocess.check_call(cmd)
def setup_adb_reverse(self):
self._adb_run(['wait-for-device'])
......
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