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 96db8b5c8eb65131e584d04040a4863b8b66af15..052f91d9961a65b3eb14fe6e46a9436e2a9d80b2 100644 |
--- a/tools/telemetry/telemetry/core/platform/android_platform_backend.py |
+++ b/tools/telemetry/telemetry/core/platform/android_platform_backend.py |
@@ -24,6 +24,7 @@ |
from telemetry.core.platform.profiler import android_prebuilt_profiler_helper |
from telemetry.core import util |
from telemetry import decorators |
+from telemetry.internal.backends import adb_commands |
from telemetry.internal.forwarders import android_forwarder |
from telemetry.internal.image_processing import video |
from telemetry.internal.util import exception_formatter |
@@ -42,7 +43,6 @@ |
from pylib import screenshot # pylint: disable=import-error |
from pylib.device import battery_utils # pylint: disable=import-error |
from pylib.device import device_errors # pylint: disable=import-error |
-from pylib.device import device_utils # pylint: disable=import-error |
from pylib.perf import cache_control # pylint: disable=import-error |
from pylib.perf import perf_control # pylint: disable=import-error |
from pylib.perf import thermal_throttle # pylint: disable=import-error |
@@ -60,7 +60,7 @@ |
'/data/local/tmp/efficient_android_directory_copy.sh') |
-def _SetupPrebuiltTools(device): |
+def _SetupPrebuiltTools(adb): |
"""Some of the android pylib scripts we depend on are lame and expect |
binaries to be in the out/ directory. So we copy any prebuilt binaries there |
as a prereq.""" |
@@ -82,7 +82,7 @@ |
if platform.GetHostPlatform().GetOSName() == 'linux': |
host_tools.append('host_forwarder') |
- arch_name = device.product_cpu_abi |
+ arch_name = adb.device().GetABI() |
has_device_prebuilt = (arch_name.startswith('armeabi') |
or arch_name.startswith('arm64')) |
if not has_device_prebuilt: |
@@ -133,8 +133,8 @@ |
assert device, ( |
'AndroidPlatformBackend can only be initialized from remote device') |
super(AndroidPlatformBackend, self).__init__(device) |
- self._device = device_utils.DeviceUtils(device.device_id) |
- installed_prebuilt_tools = _SetupPrebuiltTools(self._device) |
+ self._adb = adb_commands.AdbCommands(device=device.device_id) |
+ installed_prebuilt_tools = _SetupPrebuiltTools(self._adb) |
if not installed_prebuilt_tools: |
logging.error( |
'%s detected, however prebuilt android tools could not ' |
@@ -142,11 +142,10 @@ |
' $ ninja -C out/Release android_tools' % device.name) |
raise exceptions.PlatformError() |
# Trying to root the device, if possible. |
- if not self._device.HasRoot(): |
- try: |
- self._device.EnableRoot() |
- except device_errors.CommandFailedError: |
- logging.warning('Unable to root %s', str(self._device)) |
+ if not self._adb.IsRootEnabled(): |
+ # Ignore result. |
+ self._adb.EnableAdbRoot() |
+ self._device = self._adb.device() |
self._battery = battery_utils.BatteryUtils(self._device) |
self._enable_performance_mode = device.enable_performance_mode |
self._surface_stats_collector = None |
@@ -195,7 +194,7 @@ |
def forwarder_factory(self): |
if not self._forwarder_factory: |
self._forwarder_factory = android_forwarder.AndroidForwarderFactory( |
- self._device, self._use_rndis_forwarder) |
+ self._adb, self._use_rndis_forwarder) |
return self._forwarder_factory |
@@ -204,8 +203,8 @@ |
return self._use_rndis_forwarder |
@property |
- def device(self): |
- return self._device |
+ def adb(self): |
+ return self._adb |
def IsDisplayTracingSupported(self): |
return bool(self.GetOSVersionName() >= 'J') |
@@ -502,7 +501,7 @@ |
return old_flag |
def ForwardHostToDevice(self, host_port, device_port): |
- self._device.adb.Forward('tcp:%d' % host_port, device_port) |
+ self._adb.Forward('tcp:%d' % host_port, device_port) |
def DismissCrashDialogIfNeeded(self): |
"""Dismiss any error dialogs. |
@@ -519,7 +518,8 @@ |
Args: |
process_name: The full package name string of the process. |
""" |
- return bool(self._device.GetPids(process_name)) |
+ pids = self._adb.ExtractPid(process_name) |
+ return len(pids) != 0 |
@property |
def wpr_ca_cert_path(self): |
@@ -555,9 +555,9 @@ |
certutils.write_dummy_ca_cert(*certutils.generate_dummy_ca_cert(), |
cert_path=self._wpr_ca_cert_path) |
self._device_cert_util = adb_install_cert.AndroidCertInstaller( |
- self._device.adb.GetDeviceSerial(), None, self._wpr_ca_cert_path) |
+ self._adb.device_serial(), None, self._wpr_ca_cert_path) |
logging.info('Installing test certificate authority on device: %s', |
- str(self._device)) |
+ self._adb.device_serial()) |
self._device_cert_util.install_cert(overwrite_cert=True) |
self._is_test_ca_installed = True |
except Exception as e: |
@@ -566,7 +566,7 @@ |
logging.warning( |
'Unable to install test certificate authority on device: %s. ' |
'Will fallback to ignoring certificate errors. Install error: %s', |
- str(self._device), e) |
+ self._adb.device_serial(), e) |
@property |
def is_test_ca_installed(self): |
@@ -587,7 +587,7 @@ |
# Best effort cleanup - show the error and continue. |
exception_formatter.PrintFormattedException( |
msg=('Error while trying to remove certificate authority: %s. ' |
- % str(self._device))) |
+ % self._adb.device_serial())) |
self._is_test_ca_installed = False |
shutil.rmtree(os.path.dirname(self._wpr_ca_cert_path), ignore_errors=True) |
@@ -704,7 +704,7 @@ |
Args: |
package: The full package name string of the application. |
""" |
- if self._device.IsUserBuild(): |
+ if self._adb.IsUserBuild(): |
logging.debug('User build device, setting debug app') |
self._device.RunShellCommand('am set-debug-app --persistent %s' % package) |
@@ -714,7 +714,7 @@ |
Args: |
number_of_lines: Number of lines of log to return. |
""" |
- return '\n'.join(self._device.RunShellCommand( |
+ return '\n'.join(self.adb.device().RunShellCommand( |
'logcat -d -t %d' % number_of_lines)) |
def GetStackTrace(self, target_arch): |
@@ -748,7 +748,7 @@ |
if os.path.exists(tombstones): |
ret += Decorate('Tombstones', |
subprocess.Popen([tombstones, '-w', '--device', |
- self._device.adb.GetDeviceSerial()], |
+ self._adb.device_serial()], |
stdout=subprocess.PIPE).communicate()[0]) |
return ret |