Add timeout for usb charging commands.
Also check that we are root, as non rooted cannot control usb charging. BUG=375178 R=tonyg@chromium.org Review URL: https://codereview.chromium.org/292743005 git-svn-id: http://src.chromium.org/svn/trunk/src/build@271670 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This commit is contained in:
Родитель
99c77ff695
Коммит
88178bfcb7
|
@ -1913,6 +1913,8 @@ class AndroidCommands(object):
|
||||||
if self._control_usb_charging_command['cached']:
|
if self._control_usb_charging_command['cached']:
|
||||||
return self._control_usb_charging_command['command']
|
return self._control_usb_charging_command['command']
|
||||||
self._control_usb_charging_command['cached'] = True
|
self._control_usb_charging_command['cached'] = True
|
||||||
|
if not self.IsRootEnabled():
|
||||||
|
return None
|
||||||
for command in CONTROL_USB_CHARGING_COMMANDS:
|
for command in CONTROL_USB_CHARGING_COMMANDS:
|
||||||
# Assert command is valid.
|
# Assert command is valid.
|
||||||
assert 'disable_command' in command
|
assert 'disable_command' in command
|
||||||
|
@ -1927,26 +1929,32 @@ class AndroidCommands(object):
|
||||||
def CanControlUsbCharging(self):
|
def CanControlUsbCharging(self):
|
||||||
return self._GetControlUsbChargingCommand() is not None
|
return self._GetControlUsbChargingCommand() is not None
|
||||||
|
|
||||||
def DisableUsbCharging(self):
|
def DisableUsbCharging(self, timeout=10):
|
||||||
command = self._GetControlUsbChargingCommand()
|
command = self._GetControlUsbChargingCommand()
|
||||||
if not command:
|
if not command:
|
||||||
raise Exception('Unable to act on usb charging.')
|
raise Exception('Unable to act on usb charging.')
|
||||||
disable_command = command['disable_command']
|
disable_command = command['disable_command']
|
||||||
|
t0 = time.time()
|
||||||
# Do not loop directly on self.IsDeviceCharging to cut the number of calls
|
# Do not loop directly on self.IsDeviceCharging to cut the number of calls
|
||||||
# to the device.
|
# to the device.
|
||||||
while True:
|
while True:
|
||||||
|
if t0 + timeout - time.time() < 0:
|
||||||
|
raise pexpect.TIMEOUT('Unable to enable USB charging in time.')
|
||||||
self.RunShellCommand(disable_command)
|
self.RunShellCommand(disable_command)
|
||||||
if not self.IsDeviceCharging():
|
if not self.IsDeviceCharging():
|
||||||
break
|
break
|
||||||
|
|
||||||
def EnableUsbCharging(self):
|
def EnableUsbCharging(self, timeout=10):
|
||||||
command = self._GetControlUsbChargingCommand()
|
command = self._GetControlUsbChargingCommand()
|
||||||
if not command:
|
if not command:
|
||||||
raise Exception('Unable to act on usb charging.')
|
raise Exception('Unable to act on usb charging.')
|
||||||
disable_command = command['enable_command']
|
disable_command = command['enable_command']
|
||||||
|
t0 = time.time()
|
||||||
# Do not loop directly on self.IsDeviceCharging to cut the number of calls
|
# Do not loop directly on self.IsDeviceCharging to cut the number of calls
|
||||||
# to the device.
|
# to the device.
|
||||||
while True:
|
while True:
|
||||||
|
if t0 + timeout - time.time() < 0:
|
||||||
|
raise pexpect.TIMEOUT('Unable to enable USB charging in time.')
|
||||||
self.RunShellCommand(disable_command)
|
self.RunShellCommand(disable_command)
|
||||||
if self.IsDeviceCharging():
|
if self.IsDeviceCharging():
|
||||||
break
|
break
|
||||||
|
|
Загрузка…
Ссылка в новой задаче