Index: tools/telemetry/telemetry/core/backends/android_app_backend.py |
diff --git a/tools/telemetry/telemetry/core/backends/android_app_backend.py b/tools/telemetry/telemetry/core/backends/android_app_backend.py |
index ac38ae13bd3505bc37386569ffd19ff41a81fbc4..e328163e18c3150a28bde84c3ea224489b7688ff 100644 |
--- a/tools/telemetry/telemetry/core/backends/android_app_backend.py |
+++ b/tools/telemetry/telemetry/core/backends/android_app_backend.py |
@@ -2,25 +2,48 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import time |
+ |
from telemetry.core.backends import app_backend |
+from telemetry.core.platform import android_platform_backend as \ |
+ android_platform_backend_module |
class AndroidAppBackend(app_backend.AppBackend): |
- def __init__(self): |
- super(AndroidAppBackend, self).__init__() |
+ def __init__(self, android_platform_backend, start_intent): |
+ super(AndroidAppBackend, self).__init__(app_type=start_intent.package) |
+ assert isinstance(android_platform_backend, |
+ android_platform_backend_module.AndroidPlatformBackend) |
+ self._android_platform_backend = android_platform_backend |
+ self._start_intent = start_intent |
+ self._is_running = False |
@property |
def pid(self): |
raise NotImplementedError |
+ @property |
+ def _adb(self): |
+ return self._android_platform_backend.adb |
+ |
def Start(self): |
- raise NotImplementedError |
+ """Start an Android app and wait for it to finish launching. |
+ |
+ AppStory derivations can customize the wait-for-ready-state to wait |
+ for a more specific event if needed. |
+ """ |
+ # TODO(slamm): check if can use "blocking=True" instead of needing to sleep. |
+ # If "blocking=True" does not work, switch sleep to "ps" check. |
+ self._adb.device().StartActivity(self._start_intent, blocking=False) |
+ time.sleep(9) |
+ self._is_running = True |
def Close(self): |
- raise NotImplementedError |
+ self._is_running = False |
+ self._android_platform_backend.KillApplication(self._start_intent.package) |
def IsAppRunning(self): |
- raise NotImplementedError |
+ return self._is_running |
def GetStandardOutput(self): |
raise NotImplementedError |