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

Unified Diff: tools/telemetry/telemetry/core/platform/android_platform_backend.py

Issue 510943002: [Telemetry] Implement CanLaunchApplication and InstallApplication for Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@platform
Patch Set: Fix unittest Created 6 years, 4 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/platform/android_platform_backend.py
diff --git a/tools/telemetry/telemetry/core/platform/android_platform_backend.py b/tools/telemetry/telemetry/core/platform/android_platform_backend.py
index b9d6c238ba84e8d9a34f18e1b8ad0057a999fc4a..7d45a6bc5b59d8d065bc94122c84c7ec936172bb 100644
--- a/tools/telemetry/telemetry/core/platform/android_platform_backend.py
+++ b/tools/telemetry/telemetry/core/platform/android_platform_backend.py
@@ -51,6 +51,7 @@ class AndroidPlatformBackend(
self._power_monitor = android_temperature_monitor.AndroidTemperatureMonitor(
power_controller, device)
self._video_recorder = None
+ self._installed_applications = None
if self._no_performance_mode:
logging.warning('CPU governor will not be set!')
@@ -182,21 +183,36 @@ class AndroidPlatformBackend(
def LaunchApplication(
self, application, parameters=None, elevate_privilege=False):
+ """Launches the given |application| with a list of |parameters| on the OS.
+
+ Args:
+ application: The full package name string of the application to launch.
+ parameters: A list of parameters to be passed to the ActivityManager.
+ elevate_privilege: Currently unimplemented on Android.
+ """
if elevate_privilege:
raise NotImplementedError("elevate_privilege isn't supported on android.")
if not parameters:
parameters = ''
- self._device.RunShellCommand('am start ' + parameters + ' ' + application)
+ result_lines = self._device.RunShellCommand('am start %s %s' %
+ (parameters, application))
+ for line in result_lines:
+ if line.startswith('Error: '):
+ raise ValueError('Failed to start "%s" with error\n %s' %
+ (application, line))
def IsApplicationRunning(self, application):
return len(self._device.GetPids(application)) > 0
def CanLaunchApplication(self, application):
- return True
+ if not self._installed_applications:
+ self._installed_applications = self._device.RunShellCommand(
+ 'pm list packages')
+ return 'package:' + application in self._installed_applications
def InstallApplication(self, application):
- raise NotImplementedError(
- 'Please teach Telemetry how to install ' + application)
+ self._installed_applications = None
+ self._device.Install(application)
@decorators.Cache
def CanCaptureVideo(self):

Powered by Google App Engine
This is Rietveld 408576698