| Index: tools/telemetry/telemetry/internal/platform/android_device.py
 | 
| diff --git a/tools/telemetry/telemetry/internal/platform/android_device.py b/tools/telemetry/telemetry/internal/platform/android_device.py
 | 
| index a2c278da094d1290553153935aa708e65be2e946..5c73d343d5e568bb21cbdba0efbe16dbf927056b 100644
 | 
| --- a/tools/telemetry/telemetry/internal/platform/android_device.py
 | 
| +++ b/tools/telemetry/telemetry/internal/platform/android_device.py
 | 
| @@ -12,6 +12,7 @@ from telemetry.internal.platform.profiler import monsoon
 | 
|  
 | 
|  util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android')
 | 
|  from pylib import constants
 | 
| +from pylib.device import device_blacklist
 | 
|  from pylib.device import device_errors
 | 
|  from pylib.device import device_utils
 | 
|  
 | 
| @@ -33,8 +34,8 @@ class AndroidDevice(device.Device):
 | 
|      self._enable_performance_mode = enable_performance_mode
 | 
|  
 | 
|    @classmethod
 | 
| -  def GetAllConnectedDevices(cls):
 | 
| -    device_serials = GetDeviceSerials()
 | 
| +  def GetAllConnectedDevices(cls, blacklist):
 | 
| +    device_serials = GetDeviceSerials(blacklist)
 | 
|      return [cls(s) for s in device_serials]
 | 
|  
 | 
|    @property
 | 
| @@ -46,20 +47,20 @@ class AndroidDevice(device.Device):
 | 
|      return self._enable_performance_mode
 | 
|  
 | 
|  
 | 
| -def _ListSerialsOfHealthyOnlineDevices():
 | 
| +def _ListSerialsOfHealthyOnlineDevices(blacklist):
 | 
|    return [d.adb.GetDeviceSerial()
 | 
| -          for d in device_utils.DeviceUtils.HealthyDevices() if
 | 
| -          d.IsOnline()]
 | 
| +          for d in device_utils.DeviceUtils.HealthyDevices(blacklist)
 | 
| +          if d.IsOnline()]
 | 
|  
 | 
|  
 | 
| -def GetDeviceSerials():
 | 
| +def GetDeviceSerials(blacklist):
 | 
|    """Return the list of device serials of healthy devices.
 | 
|  
 | 
|    If a preferred device has been set with ANDROID_SERIAL, it will be first in
 | 
|    the returned list. The arguments specify what devices to include in the list.
 | 
|    """
 | 
|  
 | 
| -  device_serials = _ListSerialsOfHealthyOnlineDevices()
 | 
| +  device_serials = _ListSerialsOfHealthyOnlineDevices(blacklist)
 | 
|  
 | 
|    # The monsoon provides power for the device, so for devices with no
 | 
|    # real battery, we need to turn them on after the monsoon enables voltage
 | 
| @@ -81,8 +82,8 @@ The Monsoon's power output has been enabled. Please now ensure that:
 | 
|  
 | 
|  Waiting for device...
 | 
|  """)
 | 
| -      util.WaitFor(_ListSerialsOfHealthyOnlineDevices(), 600)
 | 
| -      device_serials = _ListSerialsOfHealthyOnlineDevices()
 | 
| +      util.WaitFor(_ListSerialsOfHealthyOnlineDevices(blacklist), 600)
 | 
| +      device_serials = _ListSerialsOfHealthyOnlineDevices(blacklist)
 | 
|      except IOError:
 | 
|        return []
 | 
|  
 | 
| @@ -103,12 +104,19 @@ def GetDevice(finder_options):
 | 
|          'No adb command found. Will not try searching for Android browsers.')
 | 
|      return None
 | 
|  
 | 
| -  if finder_options.device and finder_options.device in GetDeviceSerials():
 | 
| +  if (finder_options.device
 | 
| +      and finder_options.device in GetDeviceSerials(finder_options)):
 | 
|      return AndroidDevice(
 | 
|          finder_options.device,
 | 
|          enable_performance_mode=not finder_options.no_performance_mode)
 | 
|  
 | 
| -  devices = AndroidDevice.GetAllConnectedDevices()
 | 
| +  if finder_options.android_blacklist_file:
 | 
| +    blacklist = device_blacklist.Blacklist(
 | 
| +        finder_options.android_blacklist_file)
 | 
| +  else:
 | 
| +    blacklist = None
 | 
| +
 | 
| +  devices = AndroidDevice.GetAllConnectedDevices(blacklist)
 | 
|    if len(devices) == 0:
 | 
|      logging.info('No android devices found.')
 | 
|      return None
 | 
| @@ -142,17 +150,22 @@ def CanDiscoverDevices():
 | 
|    try:
 | 
|      os.environ['PATH'] = os.pathsep.join(
 | 
|          [os.path.dirname(adb_path), os.environ['PATH']])
 | 
| -    device_utils.DeviceUtils.HealthyDevices()
 | 
| +    device_utils.DeviceUtils.HealthyDevices(None)
 | 
|      return True
 | 
|    except (device_errors.CommandFailedError, device_errors.CommandTimeoutError,
 | 
|            OSError):
 | 
|      return False
 | 
|  
 | 
|  
 | 
| -def FindAllAvailableDevices(_):
 | 
| +def FindAllAvailableDevices(options):
 | 
|    """Returns a list of available devices.
 | 
|    """
 | 
| +  if options.android_blacklist_file:
 | 
| +    blacklist = device_blacklist.Blacklist(options.android_blacklist_file)
 | 
| +  else:
 | 
| +    blacklist = None
 | 
| +
 | 
|    if not CanDiscoverDevices():
 | 
|      return []
 | 
|    else:
 | 
| -    return AndroidDevice.GetAllConnectedDevices()
 | 
| +    return AndroidDevice.GetAllConnectedDevices(blacklist)
 | 
| 
 |