| Index: build/android/provision_devices.py
|
| diff --git a/build/android/provision_devices.py b/build/android/provision_devices.py
|
| index 8c21f97ef200987db3d3432e4f26da2b67004d19..3d5ad7423bf8fb7521b755ad4a5bb1564668d836 100755
|
| --- a/build/android/provision_devices.py
|
| +++ b/build/android/provision_devices.py
|
| @@ -295,15 +295,26 @@ def SetProperties(device, options):
|
| check_return=True)
|
|
|
| if options.remove_system_webview:
|
| - if device.HasRoot():
|
| - # This is required, e.g., to replace the system webview on a device.
|
| - device.adb.Remount()
|
| - device.RunShellCommand(['stop'], check_return=True)
|
| - device.RunShellCommand(['rm', '-rf'] + _SYSTEM_WEBVIEW_PATHS,
|
| - check_return=True)
|
| - device.RunShellCommand(['start'], check_return=True)
|
| + if any(device.PathExists(p) for p in _SYSTEM_WEBVIEW_PATHS):
|
| + logging.info('System WebView exists and needs to be removed')
|
| + if device.HasRoot():
|
| + # Disabled Marshmallow's Verity security feature
|
| + if device.build_version_sdk >= version_codes.MARSHMALLOW:
|
| + device.adb.DisableVerity()
|
| + device.Reboot()
|
| + device.WaitUntilFullyBooted()
|
| + device.EnableRoot()
|
| +
|
| + # This is required, e.g., to replace the system webview on a device.
|
| + device.adb.Remount()
|
| + device.RunShellCommand(['stop'], check_return=True)
|
| + device.RunShellCommand(['rm', '-rf'] + _SYSTEM_WEBVIEW_PATHS,
|
| + check_return=True)
|
| + device.RunShellCommand(['start'], check_return=True)
|
| + else:
|
| + logging.warning('Cannot remove system webview from a non-rooted device')
|
| else:
|
| - logging.warning('Cannot remove system webview from a non-rooted device')
|
| + logging.info('System WebView already removed')
|
|
|
| # Some device types can momentarily disappear after setting properties.
|
| device.adb.WaitForDevice()
|
|
|