on xenial help sign in
Don't allow swiping greeter when in tablet mode; fix lockscreen autopilot tests to use tablet prompt when appropriate
commitc612a9fca238485df6a00a4ac8cc19c3ba3fcac4 authorMichael Terry <michael.terry@canonical.com> dateFri 26 Jul 2013, 17:34 (13 years ago) parenta809721
4 files changed+66−30
Greeter/Greeter.qml+2−2 Shell.qml+1−1 tests/autopilot/unity8/shell/emulators/greeter.py+4−1 tests/autopilot/unity8/shell/tests/test_lock_screen.py+59−26
Greeter/Greeter.qml+2−2
@@ -34,7 +34,7 @@ Showable {
3434
3535 property alias dragHandleWidth: dragHandle.width
3636 property alias model: greeterContentLoader.model
37− property bool locked: shown && multiUser && !greeterContentLoader.promptless
37+ property bool locked: shown && !greeterContentLoader.promptless
3838
3939 readonly property bool narrowMode: !multiUser && width <= units.gu(60)
4040 readonly property bool multiUser: LightDM.Users.count > 1
@@ -113,7 +113,7 @@ Showable {
113113 // UI element)
114114 distanceThreshold: 0
115115
116− enabled: !greeter.locked
116+ enabled: greeter.narrowMode
117117
118118 direction: Direction.Leftwards
119119 }
Shell.qml+1−1
@@ -552,7 +552,7 @@ FocusScope {
552552 anchors.bottom: parent.bottom
553553 width: parent.width
554554 dragAreaWidth: shell.edgeSize
555− available: !greeter.locked
555+ available: greeter.narrowMode
556556 onDashItemSelected: {
557557 greeter.hide()
558558 // Animate if moving between application and dash
tests/autopilot/unity8/shell/emulators/greeter.py+4−1
@@ -25,7 +25,7 @@ class Greeter(UnityEmulatorBase):
2525
2626 """An emulator that understands the greeter screen."""
2727
28− def unlock(self):
28+ def swipe(self):
2929 """Swipe the greeter screen away."""
3030 self.created.wait_for(True)
3131 touch = Touch.create()
@@ -38,3 +38,6 @@ class Greeter(UnityEmulatorBase):
3838 touch.drag(start_x, start_y, stop_x, stop_y)
3939
4040 self.created.wait_for(False)
41+
42+ def get_prompt(self):
43+ return self.select_single("TextField", objectName="passwordInput")
tests/autopilot/unity8/shell/tests/test_lock_screen.py+59−26
@@ -40,52 +40,68 @@ class TestLockscreen(UnityTestCase):
4040 """Must be able to unlock the PIN entry lock screen."""
4141 self.launch_unity()
4242 greeter = self.main_window.get_greeter()
43− greeter.unlock()
4443
45− lockscreen = self._wait_for_lockscreen()
46− self._enter_pincode("1234")
47−
48− self.assertThat(lockscreen.shown, Eventually(Equals(False)))
44+ if greeter.narrowMode:
45+ greeter.swipe()
46+ lockscreen = self._wait_for_lockscreen()
47+ self._enter_pincode("1234")
48+ self.assertThat(lockscreen.shown, Eventually(Equals(False)))
49+ else:
50+ self._enter_prompt_passphrase("1234")
51+ self.assertThat(greeter.shown, Eventually(Equals(False)))
4952
5053 @with_lightdm_mock("single-passphrase")
5154 def test_can_unlock_passphrase_screen(self):
5255 """Must be able to unlock the passphrase entry screen."""
5356 self.launch_unity()
5457 greeter = self.main_window.get_greeter()
55− greeter.unlock()
56−
57− lockscreen = self._wait_for_lockscreen()
58− self._enter_passphrase("password")
5958
60− self.assertThat(lockscreen.shown, Eventually(Equals(False)))
59+ if greeter.narrowMode:
60+ greeter.swipe()
61+ lockscreen = self._wait_for_lockscreen()
62+ self._enter_pin_passphrase("password")
63+ self.assertThat(lockscreen.shown, Eventually(Equals(False)))
64+ else:
65+ self._enter_prompt_passphrase("password")
66+ self.assertThat(greeter.shown, Eventually(Equals(False)))
6167
6268 @with_lightdm_mock("single-pin")
6369 def test_pin_screen_wrong_code(self):
6470 """Entering the wrong pin code must not dismiss the lock screen."""
6571 self.launch_unity()
6672 greeter = self.main_window.get_greeter()
67− greeter.unlock()
68−
69− lockscreen = self._wait_for_lockscreen()
70− self._enter_pincode("4321")
7173
72− pinentryField = self.main_window.get_pinentryField()
73− self.assertThat(pinentryField.text, Eventually(Equals("")))
74− self.assertThat(lockscreen.shown, Eventually(Equals(True)))
74+ if greeter.narrowMode:
75+ greeter.swipe()
76+ lockscreen = self._wait_for_lockscreen()
77+ self._enter_pincode("4321")
78+ pinentryField = self.main_window.get_pinentryField()
79+ self.assertThat(pinentryField.text, Eventually(Equals("")))
80+ self.assertThat(lockscreen.shown, Eventually(Equals(True)))
81+ else:
82+ self._enter_prompt_passphrase("4231")
83+ prompt = self.main_window.get_greeter().get_prompt()
84+ self.assertThat(prompt.text, Eventually(Equals("")))
85+ self.assertThat(greeter.shown, Eventually(Equals(True)))
7586
7687 @with_lightdm_mock("single-passphrase")
7788 def test_passphrase_screen_wrong_password(self):
7889 """Entering the wrong password must not dismiss the lock screen."""
7990 self.launch_unity()
8091 greeter = self.main_window.get_greeter()
81− greeter.unlock()
8292
83− lockscreen = self._wait_for_lockscreen()
84− self._enter_passphrase("foobar")
85−
86− pinentryField = self.main_window.get_pinentryField()
87− self.assertThat(pinentryField.text, Eventually(Equals("")))
88− self.assertThat(lockscreen.shown, Eventually(Equals(True)))
93+ if greeter.narrowMode:
94+ greeter.swipe()
95+ lockscreen = self._wait_for_lockscreen()
96+ self._enter_pin_passphrase("foobar")
97+ pinentryField = self.main_window.get_pinentryField()
98+ self.assertThat(pinentryField.text, Eventually(Equals("")))
99+ self.assertThat(lockscreen.shown, Eventually(Equals(True)))
100+ else:
101+ self._enter_prompt_passphrase("foobar")
102+ prompt = self.main_window.get_greeter().get_prompt()
103+ self.assertThat(prompt.text, Eventually(Equals("")))
104+ self.assertThat(greeter.shown, Eventually(Equals(True)))
89105
90106 def _wait_for_lockscreen(self):
91107 """Wait for the lock screen to load, and return it."""
@@ -114,9 +130,9 @@ class TestLockscreen(UnityTestCase):
114130 )
115131 self.touch.tap_object(self.main_window.get_pinPadButton(int(num)))
116132
117− def _enter_passphrase(self, passphrase):
133+ def _enter_pin_passphrase(self, passphrase):
118134 """Enter the password specified in 'passphrase' into the password entry
119− field.
135+ field of the pin lock screen.
120136
121137 :param passphrase: The string you want to enter.
122138 :raises: TypeError if passphrase is not a string.
@@ -129,3 +145,20 @@ class TestLockscreen(UnityTestCase):
129145 self.touch.tap_object(pinentryField)
130146 self.keyboard.type(passphrase)
131147 self.keyboard.type("\n")
148+
149+ def _enter_prompt_passphrase(self, passphrase):
150+ """Enter the password specified in 'passphrase' into the password entry
151+ field of the main user list's prompt.
152+
153+ :param passphrase: The string you want to enter.
154+ :raises: TypeError if passphrase is not a string.
155+
156+ """
157+ if not isinstance(passphrase, basestring):
158+ raise TypeError("'passphrase' parameter must be a string.")
159+
160+ prompt = self.main_window.get_greeter().get_prompt()
161+ self.touch.tap_object(prompt)
162+ self.keyboard.type(passphrase)
163+ self.keyboard.type("\n")
164+