def run_android_webview(device, adapter): if adapter.options.package_name: logger.warn( '--package-name has no effect for android_webview, provider' 'will be set to the --apk if it is provided.') if adapter.options.system_webview_shell: shell_pkg = apk_helper.GetPackageName( adapter.options.system_webview_shell) if shell_pkg != SYSTEM_WEBVIEW_SHELL_PKG: raise Exception( '{} has incorrect package name: {}, expected {}.'.format( '--system-webview-shell apk', shell_pkg, SYSTEM_WEBVIEW_SHELL_PKG)) install_shell_as_needed = system_app.ReplaceSystemApp( device, shell_pkg, adapter.options.system_webview_shell) logger.info('Will install ' + shell_pkg + ' at ' + adapter.options.system_webview_shell) else: install_shell_as_needed = no_op() if adapter.options.apk: install_webview_as_needed = webview_app.UseWebViewProvider( device, adapter.options.apk) logger.info('Will install WebView apk at ' + adapter.options.apk) else: install_webview_as_needed = no_op() with install_shell_as_needed, install_webview_as_needed: return adapter.run_test()
def use_webview_provider(dev): # We need the context manager to be applied before modifying any # shared preference files in case the replacement APK needs to be # set up, and it needs to be applied while the test is running. # Thus, it needs to be applied early during setup, but must still be # applied during _RunTest, which isn't possible using 'with' without # applying the context manager up in test_runner. Instead, we # manually invoke its __enter__ and __exit__ methods in setup and # teardown. self._use_webview_contextmanager = webview_app.UseWebViewProvider( dev, self._test_instance.use_webview_provider) # Pylint is not smart enough to realize that this field has # an __enter__ method, and will complain loudly. # pylint: disable=no-member self._use_webview_contextmanager.__enter__()
def _install_apks(self): if self.options.package_name: logger.warn('--package-name has no effect for weblayer, provider' 'will be set to the --apk if it is provided.') install_weblayer_shell_as_needed = maybe_install_user_apk( self._device, self.options.weblayer_shell, self.WEBLAYER_SHELL_PKG) install_weblayer_support_as_needed = maybe_install_user_apk( self._device, self.options.weblayer_support, self.WEBLAYER_SUPPORT_PKG) if self.options.apk: install_webview_as_needed = webview_app.UseWebViewProvider( self._device, self.options.apk) logger.info('Will install WebView apk at ' + self.options.apk) else: install_webview_as_needed = no_op() with install_weblayer_shell_as_needed, \ install_weblayer_support_as_needed, \ install_webview_as_needed: yield
def run_android_weblayer(device, adapter): if adapter.options.package_name: logger.warn('--package-name has no effect for weblayer, provider' 'will be set to the --apk if it is provided.') install_weblayer_shell_as_needed = maybe_install_user_apk( device, adapter.options.weblayer_shell, WEBLAYER_SHELL_PKG) install_weblayer_support_as_needed = maybe_install_user_apk( device, adapter.options.weblayer_support, WEBLAYER_SUPPORT_PKG) if adapter.options.apk: install_webview_as_needed = webview_app.UseWebViewProvider(device, adapter.options.apk) logger.info('Will install WebView apk at ' + adapter.options.apk) else: install_webview_as_needed = no_op() with install_weblayer_shell_as_needed,\ install_weblayer_support_as_needed,\ install_webview_as_needed: return adapter.run_test()
def _install_apks(self): if self.options.package_name: logger.warn( '--package-name has no effect for android_webview, provider' 'will be set to the --apk if it is provided.') if self.options.system_webview_shell: install_shell_as_needed = maybe_install_user_apk( self._device, self.options.system_webview_shell, self.SYSTEM_WEBVIEW_SHELL_PKG) else: install_shell_as_needed = no_op() if self.options.apk: install_webview_as_needed = webview_app.UseWebViewProvider( self._device, self.options.apk) logger.info('Will install WebView apk at ' + self.options.apk) else: install_webview_as_needed = no_op() with install_shell_as_needed, install_webview_as_needed: yield
def maybe_install_webview_provider(device, apk): if apk: logger.info('Will install WebView apk at ' + apk) return webview_app.UseWebViewProvider(device, apk) else: return no_op()
def install_apks(self): """Install apks for testing""" with super(WebLayerFinchTestCase, self).install_apks(), \ webview_app.UseWebViewProvider(self.device, self.options.webview_provider_apk): yield