| OLD | NEW |
| (Empty) |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 import os | |
| 6 import logging | |
| 7 import re | |
| 8 import subprocess | |
| 9 | |
| 10 from telemetry.core import platform | |
| 11 from telemetry.internal.platform import device | |
| 12 | |
| 13 | |
| 14 IOSSIM_BUILD_DIRECTORIES = [ | |
| 15 'Debug-iphonesimulator', | |
| 16 'Profile-iphonesimulator', | |
| 17 'Release-iphonesimulator' | |
| 18 ] | |
| 19 | |
| 20 class IOSDevice(device.Device): | |
| 21 def __init__(self): | |
| 22 super(IOSDevice, self).__init__(name='ios', guid='ios') | |
| 23 | |
| 24 @classmethod | |
| 25 def GetAllConnectedDevices(cls, blacklist): | |
| 26 return [] | |
| 27 | |
| 28 | |
| 29 def _IsIosDeviceAttached(): | |
| 30 devices = subprocess.check_output('system_profiler SPUSBDataType', shell=True) | |
| 31 for line in devices.split('\n'): | |
| 32 if line and re.match(r'\s*(iPod|iPhone|iPad):', line): | |
| 33 return True | |
| 34 return False | |
| 35 | |
| 36 def _IsIosSimulatorAvailable(chrome_root): | |
| 37 """Determines whether an iOS simulator is present in the local checkout. | |
| 38 | |
| 39 Assumes the iOS simulator (iossim) and Chromium have already been built. | |
| 40 | |
| 41 Returns: | |
| 42 True if at least one simulator is found, otherwise False. | |
| 43 """ | |
| 44 for build_dir in IOSSIM_BUILD_DIRECTORIES: | |
| 45 iossim_path = os.path.join( | |
| 46 chrome_root, 'out', build_dir, 'iossim') | |
| 47 chromium_path = os.path.join( | |
| 48 chrome_root, 'out', build_dir, 'Chromium.app') | |
| 49 | |
| 50 # If the iOS simulator and Chromium app are present, return True | |
| 51 if os.path.exists(iossim_path) and os.path.exists(chromium_path): | |
| 52 return True | |
| 53 | |
| 54 return False | |
| 55 | |
| 56 def FindAllAvailableDevices(options): | |
| 57 """Returns a list of available devices. | |
| 58 """ | |
| 59 # TODO(baxley): Add support for all platforms possible. Probably Linux, | |
| 60 # probably not Windows. | |
| 61 if platform.GetHostPlatform().GetOSName() != 'mac': | |
| 62 return [] | |
| 63 | |
| 64 if options.chrome_root is None: | |
| 65 logging.warning('--chrome-root is not specified, skip iOS simulator tests.') | |
| 66 return [] | |
| 67 | |
| 68 if (not _IsIosDeviceAttached() and not | |
| 69 _IsIosSimulatorAvailable(options.chrome_root)): | |
| 70 return [] | |
| 71 | |
| 72 return [IOSDevice()] | |
| OLD | NEW |