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): ...@@ -623,6 +623,7 @@ class ChromeAndroidBase(Browser):
def __init__(self, logger): def __init__(self, logger):
super(ChromeAndroidBase, self).__init__(logger) super(ChromeAndroidBase, self).__init__(logger)
self.device_serial = None
def install(self, dest=None, channel=None): def install(self, dest=None, channel=None):
raise NotImplementedError raise NotImplementedError
...@@ -646,7 +647,10 @@ class ChromeAndroidBase(Browser): ...@@ -646,7 +647,10 @@ class ChromeAndroidBase(Browser):
self.logger.warning("No package name provided.") self.logger.warning("No package name provided.")
return None 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: try:
output = call(*command) output = call(*command)
except (subprocess.CalledProcessError, OSError): except (subprocess.CalledProcessError, OSError):
...@@ -687,7 +691,10 @@ class AndroidWebview(ChromeAndroidBase): ...@@ -687,7 +691,10 @@ class AndroidWebview(ChromeAndroidBase):
# For WebView, it is not trivial to change the WebView provider, so # For WebView, it is not trivial to change the WebView provider, so
# we will just grab whatever is available. # we will just grab whatever is available.
# https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/channels.md # 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: try:
output = call(*command) output = call(*command)
except (subprocess.CalledProcessError, OSError): except (subprocess.CalledProcessError, OSError):
......
...@@ -354,6 +354,8 @@ class ChromeAndroid(BrowserSetup): ...@@ -354,6 +354,8 @@ class ChromeAndroid(BrowserSetup):
browser_cls = browser.ChromeAndroid browser_cls = browser.ChromeAndroid
def setup_kwargs(self, kwargs): def setup_kwargs(self, kwargs):
if kwargs.get("device_serial"):
self.browser.device_serial = kwargs["device_serial"]
browser_channel = kwargs["browser_channel"] browser_channel = kwargs["browser_channel"]
if kwargs["package_name"] is None: if kwargs["package_name"] is None:
kwargs["package_name"] = self.browser.find_binary( kwargs["package_name"] = self.browser.find_binary(
...@@ -398,6 +400,8 @@ class AndroidWebview(BrowserSetup): ...@@ -398,6 +400,8 @@ class AndroidWebview(BrowserSetup):
browser_cls = browser.AndroidWebview browser_cls = browser.AndroidWebview
def setup_kwargs(self, kwargs): def setup_kwargs(self, kwargs):
if kwargs.get("device_serial"):
self.browser.device_serial = kwargs["device_serial"]
if kwargs["webdriver_binary"] is None: if kwargs["webdriver_binary"] is None:
webdriver_binary = self.browser.find_webdriver() webdriver_binary = self.browser.find_webdriver()
......
...@@ -31,6 +31,7 @@ def check_args(**kwargs): ...@@ -31,6 +31,7 @@ def check_args(**kwargs):
def browser_kwargs(test_type, run_info_data, config, **kwargs): def browser_kwargs(test_type, run_info_data, config, **kwargs):
return {"package_name": kwargs["package_name"], return {"package_name": kwargs["package_name"],
"device_serial": kwargs["device_serial"],
"webdriver_binary": kwargs["webdriver_binary"], "webdriver_binary": kwargs["webdriver_binary"],
"webdriver_args": kwargs.get("webdriver_args")} "webdriver_args": kwargs.get("webdriver_args")}
...@@ -53,6 +54,9 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data, ...@@ -53,6 +54,9 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
assert kwargs["package_name"], "missing --package-name" assert kwargs["package_name"], "missing --package-name"
executor_kwargs["capabilities"]["goog:chromeOptions"]["androidPackage"] = \ executor_kwargs["capabilities"]["goog:chromeOptions"]["androidPackage"] = \
kwargs["package_name"] kwargs["package_name"]
if kwargs.get("device_serial"):
executor_kwargs["capabilities"]["goog:chromeOptions"]["androidDeviceSerial"] = \
kwargs["device_serial"]
return executor_kwargs return executor_kwargs
...@@ -72,17 +76,22 @@ class ChromeAndroidBrowser(Browser): ...@@ -72,17 +76,22 @@ class ChromeAndroidBrowser(Browser):
""" """
def __init__(self, logger, package_name, webdriver_binary="chromedriver", def __init__(self, logger, package_name, webdriver_binary="chromedriver",
webdriver_args=None): device_serial=None, webdriver_args=None):
Browser.__init__(self, logger) Browser.__init__(self, logger)
self.package_name = package_name self.package_name = package_name
self.device_serial = device_serial
self.server = ChromeDriverServer(self.logger, self.server = ChromeDriverServer(self.logger,
binary=webdriver_binary, binary=webdriver_binary,
args=webdriver_args) args=webdriver_args)
self.setup_adb_reverse() self.setup_adb_reverse()
def _adb_run(self, args): def _adb_run(self, args):
self.logger.info('adb ' + ' '.join(args)) cmd = ['adb']
subprocess.check_call(['adb'] + args) 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): def setup_adb_reverse(self):
self._adb_run(['wait-for-device']) 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