| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """ A simple device interface for build steps. | 5 """ A simple device interface for build steps. |
| 6 | 6 |
| 7 """ | 7 """ |
| 8 | 8 |
| 9 import logging | 9 import logging |
| 10 import os | 10 import os |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 | 25 |
| 26 class BuildDevice(object): | 26 class BuildDevice(object): |
| 27 def __init__(self, configuration): | 27 def __init__(self, configuration): |
| 28 self.id = configuration['id'] | 28 self.id = configuration['id'] |
| 29 self.description = configuration['description'] | 29 self.description = configuration['description'] |
| 30 self.install_metadata = configuration['install_metadata'] | 30 self.install_metadata = configuration['install_metadata'] |
| 31 self.device = device_utils.DeviceUtils(self.id) | 31 self.device = device_utils.DeviceUtils(self.id) |
| 32 | 32 |
| 33 def RunShellCommand(self, *args, **kwargs): | 33 def RunShellCommand(self, *args, **kwargs): |
| 34 return self.device.old_interface.RunShellCommand(*args, **kwargs) | 34 return self.device.RunShellCommand(*args, **kwargs) |
| 35 | 35 |
| 36 def PushIfNeeded(self, *args, **kwargs): | 36 def PushIfNeeded(self, *args, **kwargs): |
| 37 return self.device.old_interface.PushIfNeeded(*args, **kwargs) | 37 return self.device.old_interface.PushIfNeeded(*args, **kwargs) |
| 38 | 38 |
| 39 def GetSerialNumber(self): | 39 def GetSerialNumber(self): |
| 40 return self.id | 40 return self.id |
| 41 | 41 |
| 42 def Install(self, *args, **kwargs): | 42 def Install(self, *args, **kwargs): |
| 43 return self.device.old_interface.Install(*args, **kwargs) | 43 return self.device.old_interface.Install(*args, **kwargs) |
| 44 | 44 |
| 45 def GetInstallMetadata(self, apk_package): | 45 def GetInstallMetadata(self, apk_package): |
| 46 """Gets the metadata on the device for the apk_package apk.""" | 46 """Gets the metadata on the device for the apk_package apk.""" |
| 47 # Matches lines like: | 47 # Matches lines like: |
| 48 # -rw-r--r-- system system 7376582 2013-04-19 16:34 \ | 48 # -rw-r--r-- system system 7376582 2013-04-19 16:34 \ |
| 49 # org.chromium.chrome.shell.apk | 49 # org.chromium.chrome.shell.apk |
| 50 # -rw-r--r-- system system 7376582 2013-04-19 16:34 \ | 50 # -rw-r--r-- system system 7376582 2013-04-19 16:34 \ |
| 51 # org.chromium.chrome.shell-1.apk | 51 # org.chromium.chrome.shell-1.apk |
| 52 apk_matcher = lambda s: re.match('.*%s(-[0-9]*)?.apk$' % apk_package, s) | 52 apk_matcher = lambda s: re.match('.*%s(-[0-9]*)?.apk$' % apk_package, s) |
| 53 matches = filter(apk_matcher, self.install_metadata) | 53 matches = filter(apk_matcher, self.install_metadata) |
| 54 return matches[0] if matches else None | 54 return matches[0] if matches else None |
| 55 | 55 |
| 56 | 56 |
| 57 def GetConfigurationForDevice(device_id): | 57 def GetConfigurationForDevice(device_id): |
| 58 device = device_utils.DeviceUtils(device_id) | 58 device = device_utils.DeviceUtils(device_id) |
| 59 configuration = None | 59 configuration = None |
| 60 has_root = False | 60 has_root = False |
| 61 is_online = device.IsOnline() | 61 is_online = device.IsOnline() |
| 62 if is_online: | 62 if is_online: |
| 63 cmd = 'ls -l /data/app; getprop ro.build.description' | 63 cmd = 'ls -l /data/app; getprop ro.build.description' |
| 64 cmd_output = device.old_interface.RunShellCommand(cmd) | 64 cmd_output = device.RunShellCommand(cmd) |
| 65 has_root = not 'Permission denied' in cmd_output[0] | 65 has_root = not 'Permission denied' in cmd_output[0] |
| 66 if not has_root: | 66 if not has_root: |
| 67 # Disable warning log messages from EnableRoot() | 67 # Disable warning log messages from EnableRoot() |
| 68 logging.getLogger().disabled = True | 68 logging.getLogger().disabled = True |
| 69 try: | 69 try: |
| 70 device.EnableRoot() | 70 device.EnableRoot() |
| 71 has_root = True | 71 has_root = True |
| 72 except device_errors.CommandFailedError: | 72 except device_errors.CommandFailedError: |
| 73 has_root = False | 73 has_root = False |
| 74 finally: | 74 finally: |
| 75 logging.getLogger().disabled = False | 75 logging.getLogger().disabled = False |
| 76 cmd_output = device.old_interface.RunShellCommand(cmd) | 76 cmd_output = device.RunShellCommand(cmd) |
| 77 | 77 |
| 78 configuration = { | 78 configuration = { |
| 79 'id': device_id, | 79 'id': device_id, |
| 80 'description': cmd_output[-1], | 80 'description': cmd_output[-1], |
| 81 'install_metadata': cmd_output[:-1], | 81 'install_metadata': cmd_output[:-1], |
| 82 } | 82 } |
| 83 return configuration, is_online, has_root | 83 return configuration, is_online, has_root |
| 84 | 84 |
| 85 | 85 |
| 86 def WriteConfigurations(configurations, path): | 86 def WriteConfigurations(configurations, path): |
| 87 # Currently we only support installing to the first device. | 87 # Currently we only support installing to the first device. |
| 88 build_utils.WriteJson(configurations[:1], path, only_if_changed=True) | 88 build_utils.WriteJson(configurations[:1], path, only_if_changed=True) |
| 89 | 89 |
| 90 | 90 |
| 91 def ReadConfigurations(path): | 91 def ReadConfigurations(path): |
| 92 return build_utils.ReadJson(path) | 92 return build_utils.ReadJson(path) |
| 93 | 93 |
| 94 | 94 |
| 95 def GetBuildDevice(configurations): | 95 def GetBuildDevice(configurations): |
| 96 assert len(configurations) == 1 | 96 assert len(configurations) == 1 |
| 97 return BuildDevice(configurations[0]) | 97 return BuildDevice(configurations[0]) |
| 98 | 98 |
| 99 | 99 |
| 100 def GetBuildDeviceFromPath(path): | 100 def GetBuildDeviceFromPath(path): |
| 101 configurations = ReadConfigurations(path) | 101 configurations = ReadConfigurations(path) |
| 102 if len(configurations) > 0: | 102 if len(configurations) > 0: |
| 103 return GetBuildDevice(ReadConfigurations(path)) | 103 return GetBuildDevice(ReadConfigurations(path)) |
| 104 return None | 104 return None |
| 105 | 105 |
| OLD | NEW |