From 753786a45c6984d41eb8cd10f526071baf148f18 Mon Sep 17 00:00:00 2001 From: Marc Bonnici Date: Thu, 13 Dec 2018 10:20:29 +0000 Subject: [PATCH] fw/workload: Add `activity` attribute to APK workloads Allow specifying an `activity` attribute for an APK based workload which will override the automatically detected activity from the resolved APK. --- wa/framework/workload.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/wa/framework/workload.py b/wa/framework/workload.py index e7408321..a5609159 100644 --- a/wa/framework/workload.py +++ b/wa/framework/workload.py @@ -175,6 +175,7 @@ class ApkWorkload(Workload): loading_time = 10 package_names = [] supported_versions = [] + activity = None view = None clear_data_on_reset = True @@ -266,7 +267,8 @@ class ApkWorkload(Workload): uninstall=self.uninstall, exact_abi=self.exact_abi, prefer_host_package=self.prefer_host_package, - clear_data_on_reset=self.clear_data_on_reset) + clear_data_on_reset=self.clear_data_on_reset, + activity=self.activity) @once_per_instance def initialize(self, context): @@ -647,13 +649,16 @@ class PackageHandler(object): @property def activity(self): + if self._activity: + return self._activity if self.apk_info is None: return None return self.apk_info.activity def __init__(self, owner, install_timeout=300, version=None, variant=None, package_name=None, strict=False, force_install=False, uninstall=False, - exact_abi=False, prefer_host_package=True, clear_data_on_reset=True): + exact_abi=False, prefer_host_package=True, clear_data_on_reset=True, + activity=None): self.logger = logging.getLogger('apk') self.owner = owner self.target = self.owner.target @@ -667,6 +672,7 @@ class PackageHandler(object): self.exact_abi = exact_abi self.prefer_host_package = prefer_host_package self.clear_data_on_reset = clear_data_on_reset + self._activity = activity self.supported_abi = self.target.supported_abi self.apk_file = None self.apk_info = None @@ -805,11 +811,11 @@ class PackageHandler(object): self.apk_version = host_version def start_activity(self): - if not self.apk_info.activity: + if not self.activity: cmd = 'am start -W {}'.format(self.apk_info.package) else: cmd = 'am start -W -n {}/{}'.format(self.apk_info.package, - self.apk_info.activity) + self.activity) output = self.target.execute(cmd) if 'Error:' in output: # this will dismiss any error dialogs