Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py

Issue 745733002: Add support in Telemetry for specifying exact Android APK (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Final nit Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py
index 1d12d81f201be93185ab38f7de14cede8b85532e..a4270f18bf56a12007a8ab91c3ae228611bbf44b 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/android_browser_finder.py
@@ -9,9 +9,11 @@ import os
from telemetry import decorators
from telemetry.core import browser
+from telemetry.core import exceptions
from telemetry.core import possible_browser
from telemetry.core import platform
from telemetry.core import util
+from telemetry.core.backends import adb_commands
from telemetry.core.platform import android_device
from telemetry.core.backends.chrome import android_browser_backend
@@ -71,8 +73,14 @@ class PossibleAndroidBrowser(possible_browser.PossibleBrowser):
self._backend_settings = backend_settings
self._local_apk = None
- chrome_root = util.GetChromiumSrcDir()
- if apk_name:
+ if browser_type == 'exact':
+ if not os.path.exists(apk_name):
+ raise exceptions.PathMissingError(
+ 'Unable to find exact apk %s specified by --browser-executable' %
+ apk_name)
+ self._local_apk = apk_name
+ elif apk_name:
+ chrome_root = util.GetChromiumSrcDir()
candidate_apks = []
for build_dir, build_type in util.GetBuildDirectories():
apk_full_name = os.path.join(chrome_root, build_dir, build_type, 'apks',
@@ -139,8 +147,12 @@ def CanFindAvailableBrowsers():
return android_device.CanDiscoverDevices()
+def CanPossiblyHandlePath(target_path):
+ return os.path.splitext(target_path.lower())[1] == '.apk'
+
+
def FindAllBrowserTypes(_options):
- return CHROME_PACKAGE_NAMES.keys()
+ return CHROME_PACKAGE_NAMES.keys() + ['exact']
def _FindAllPossibleBrowsers(finder_options, android_platform):
@@ -148,6 +160,34 @@ def _FindAllPossibleBrowsers(finder_options, android_platform):
if not android_platform:
return []
possible_browsers = []
+
+ # Add the exact APK if given.
+ if (finder_options.browser_executable and
+ CanPossiblyHandlePath(finder_options.browser_executable)):
+ normalized_path = os.path.expanduser(finder_options.browser_executable)
+
+ exact_package = adb_commands.GetPackageName(normalized_path)
+ if not exact_package:
+ raise exceptions.PackageDetectionError(
+ 'Unable to find package for %s specified by --browser-executable' %
+ normalized_path)
+
+ package_info = next((info for info in CHROME_PACKAGE_NAMES.itervalues()
+ if info[0] == exact_package), None)
+ if package_info:
+ [package, backend_settings, _] = package_info
+ possible_browsers.append(
+ PossibleAndroidBrowser(
+ 'exact',
+ finder_options,
+ android_platform,
+ backend_settings(package),
+ normalized_path))
+ else:
+ raise exceptions.UnknownPackageError(
+ '%s specified by --browser-executable has an unknown package: %s' %
+ (normalized_path, exact_package))
+
for name, package_info in CHROME_PACKAGE_NAMES.iteritems():
package, backend_settings, local_apk = package_info
b = PossibleAndroidBrowser(name,

Powered by Google App Engine
This is Rietveld 408576698