1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-09-02 19:32:34 +01:00

AndroidDevice: Fixed swipe_to_unlock

Previously swipe_to_unlock was not used and conflicted with a method
of the same name.

 - swipe_to_unlock() renamed perform_unlock_swipe()
 - swipe_to_unlock parameter now takes a direction, this allows swipe unlocking on Android M devices
 - ensure_screen_is_on() will now also unlock the screen if swipe_to_unlock is set
This commit is contained in:
Sebastian Goscik
2015-12-11 10:58:32 +00:00
parent a330a64340
commit d3470dca73

View File

@@ -32,7 +32,7 @@ from wlauto.utils.android import (adb_shell, adb_background_shell, adb_list_devi
adb_command, AndroidProperties, ANDROID_VERSION_MAP) adb_command, AndroidProperties, ANDROID_VERSION_MAP)
SCREEN_STATE_REGEX = re.compile('(?:mPowerState|mScreenOn)=([0-9]+|true|false)', re.I) SCREEN_STATE_REGEX = re.compile('(?:mPowerState|mScreenOn|Display Power: state)=([0-9]+|true|false|ON|OFF)', re.I)
SCREEN_SIZE_REGEX = re.compile(r'mUnrestrictedScreen=\(\d+,\d+\)\s+(?P<width>\d+)x(?P<height>\d+)') SCREEN_SIZE_REGEX = re.compile(r'mUnrestrictedScreen=\(\d+,\d+\)\s+(?P<width>\d+)x(?P<height>\d+)')
@@ -72,9 +72,10 @@ class AndroidDevice(BaseLinuxDevice): # pylint: disable=W0223
Specified whether the device should make sure that the screen is on Specified whether the device should make sure that the screen is on
during initialization. during initialization.
"""), """),
Parameter('swipe_to_unlock', kind=boolean, default=False, Parameter('swipe_to_unlock', kind=str, default=None,
allowed_values=[None, "horizontal", "vertical"],
description=""" description="""
If set to ``True``, a horisonal swipe will be performed 2/3 down the screen. If set a swipe of the specified direction will be performed.
This should unlock the screen. This should unlock the screen.
"""), """),
] ]
@@ -569,13 +570,20 @@ class AndroidDevice(BaseLinuxDevice): # pylint: disable=W0223
else: else:
return (0, 0) return (0, 0)
def swipe_to_unlock(self): def perform_unlock_swipe(self):
width, height = self.get_screen_size() width, height = self.get_screen_size()
command = 'input swipe {} {} {} {}'
if self.swipe_to_unlock == "horizontal":
swipe_heigh = height * 2 // 3 swipe_heigh = height * 2 // 3
start = 100 start = 100
stop = width - start stop = width - start
command = 'input swipe {} {} {} {}'
self.execute(command.format(start, swipe_heigh, stop, swipe_heigh)) self.execute(command.format(start, swipe_heigh, stop, swipe_heigh))
if self.swipe_to_unlock == "vertical":
swipe_middle = height / 2
swipe_heigh = height * 2 // 3
self.execute(command.format(swipe_middle, swipe_heigh, swipe_middle, 0))
else: # Should never reach here
raise DeviceError("Invalid swipe direction: {}".format(self.swipe_to_unlock))
def capture_screen(self, filepath): def capture_screen(self, filepath):
"""Caputers the current device screen into the specified file in a PNG format.""" """Caputers the current device screen into the specified file in a PNG format."""
@@ -596,6 +604,8 @@ class AndroidDevice(BaseLinuxDevice): # pylint: disable=W0223
def ensure_screen_is_on(self): def ensure_screen_is_on(self):
if not self.is_screen_on(): if not self.is_screen_on():
self.execute('input keyevent 26') self.execute('input keyevent 26')
if self.swipe_to_unlock:
self.perform_unlock_swipe()
def disable_screen_lock(self): def disable_screen_lock(self):
""" """