| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Finds devices that can be controlled by telemetry.""" |
| |
| from telemetry.internal.platform import android_device |
| from telemetry.internal.platform import cros_device |
| from telemetry.internal.platform import desktop_device |
| from telemetry.internal.platform import ios_device |
| |
| DEVICES = [ |
| android_device, |
| cros_device, |
| desktop_device, |
| ios_device, |
| ] |
| |
| |
| def _GetAllAvailableDevices(options): |
| """Returns a list of all available devices.""" |
| devices = [] |
| for device in DEVICES: |
| devices.extend(device.FindAllAvailableDevices(options)) |
| return devices |
| |
| |
| def GetDevicesMatchingOptions(options): |
| """Returns a list of devices matching the options.""" |
| devices = [] |
| if not options.device or options.device == 'list': |
| devices = _GetAllAvailableDevices(options) |
| elif options.device == 'android': |
| devices = android_device.FindAllAvailableDevices(options) |
| else: |
| devices = _GetAllAvailableDevices(options) |
| devices = [d for d in devices if d.guid == options.device] |
| |
| devices.sort(key=lambda device: device.name) |
| return devices |