| Index: build/android/provision_devices.py | 
| diff --git a/build/android/provision_devices.py b/build/android/provision_devices.py | 
| index 69e8168514c71940ffe5e7533188cf0050ed45f2..7fef1b8d9cc53de1d8b4256a930e4a91183cd009 100755 | 
| --- a/build/android/provision_devices.py | 
| +++ b/build/android/provision_devices.py | 
| @@ -125,7 +125,7 @@ def WriteAdbKeysFile(device, adb_keys_string): | 
| as_root=True) | 
|  | 
|  | 
| -def WipeDeviceData(device): | 
| +def WipeDeviceData(device, options): | 
| """Wipes data from device, keeping only the adb_keys for authorization. | 
|  | 
| After wiping data on a device that has been authorized, adb can still | 
| @@ -139,16 +139,22 @@ def WipeDeviceData(device): | 
| """ | 
| device_authorized = device.FileExists(constants.ADB_KEYS_FILE) | 
| if device_authorized: | 
| -    adb_keys = device.ReadFile(constants.ADB_KEYS_FILE, as_root=True) | 
| +    adb_keys = device.ReadFile(constants.ADB_KEYS_FILE, | 
| +                               as_root=True).splitlines() | 
| device.RunShellCommand('wipe data', as_root=True) | 
| if device_authorized: | 
| -    WriteAdbKeysFile(device, adb_keys) | 
| +    adb_keys_set = set(adb_keys) | 
| +    for adb_key_file in options.adb_key_files or []: | 
| +      with open(adb_key_file, 'r') as f: | 
| +        adb_public_keys = f.readlines() | 
| +      adb_keys_set.update(adb_public_keys) | 
| +    WriteAdbKeysFile(device, '\n'.join(adb_keys_set)) | 
|  | 
|  | 
| -def WipeDeviceIfPossible(device, timeout): | 
| +def WipeDeviceIfPossible(device, timeout, options): | 
| try: | 
| device.EnableRoot() | 
| -    WipeDeviceData(device) | 
| +    WipeDeviceData(device, options) | 
| device.Reboot(True, timeout=timeout, retries=0) | 
| except (errors.DeviceUnresponsiveError, device_errors.CommandFailedError): | 
| pass | 
| @@ -177,17 +183,9 @@ def ProvisionDevice(device, options): | 
| else: | 
| reboot_timeout = _DEFAULT_TIMEOUTS.PRE_LOLLIPOP | 
|  | 
| -  if options.adb_key_files: | 
| -    adb_keys = set() | 
| -    for adb_key_file in options.adb_key_files: | 
| -      with open(adb_key_file, 'r') as f: | 
| -        adb_public_keys = f.readlines() | 
| -      adb_keys.update(adb_public_keys) | 
| -    WriteAdbKeysFile(device, '\n'.join(adb_keys)) | 
| - | 
| try: | 
| if not options.skip_wipe: | 
| -      WipeDeviceIfPossible(device, reboot_timeout) | 
| +      WipeDeviceIfPossible(device, reboot_timeout, options) | 
| try: | 
| device.EnableRoot() | 
| except device_errors.CommandFailedError as e: | 
|  |