aboutsummaryrefslogtreecommitdiff
path: root/catapult/devil/devil/android/tools/script_common.py
blob: f91ad5eea0b41386f3fb64d11169092af216fed1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Copyright 2015 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.

from devil.android import device_blacklist
from devil.android import device_errors
from devil.android import device_utils


def GetDevices(requested_devices, blacklist_file):
  if not isinstance(blacklist_file, device_blacklist.Blacklist):
    blacklist_file = (device_blacklist.Blacklist(blacklist_file)
                      if blacklist_file
                      else None)

  devices = device_utils.DeviceUtils.HealthyDevices(blacklist_file)
  if not devices:
    raise device_errors.NoDevicesError()
  elif requested_devices:
    requested = set(requested_devices)
    available = set(str(d) for d in devices)
    missing = requested.difference(available)
    if missing:
      raise device_errors.DeviceUnreachableError(next(iter(missing)))
    return sorted(device_utils.DeviceUtils(d)
                  for d in available.intersection(requested))
  else:
    return devices