Index: client/site_tests/desktopui_ScreenLocker/desktopui_ScreenLocker.py |
diff --git a/client/site_tests/desktopui_ScreenLocker/desktopui_ScreenLocker.py b/client/site_tests/desktopui_ScreenLocker/desktopui_ScreenLocker.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..89ea7189b73103ef3b76840e8e7b88bafd8ba823 |
--- /dev/null |
+++ b/client/site_tests/desktopui_ScreenLocker/desktopui_ScreenLocker.py |
@@ -0,0 +1,79 @@ |
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import dbus |
+import gobject |
+import os |
+import time |
+ |
+from autotest_lib.client.bin import site_ui_test, site_utils |
+from autotest_lib.client.common_lib import error |
+from dbus.mainloop.glib import DBusGMainLoop |
+ |
+class desktopui_ScreenLocker(site_ui_test.UITest): |
+ version = 1 |
+ _POWER_MANAGER_INTERFACE = 'org.chromium.PowerManager' |
+ |
+ def locked(self): |
+ self._locked = True |
+ |
+ def unlocked(self): |
+ self._locked = False |
+ |
+ def process_event(self): |
+ """Process dbus events""" |
+ context = gobject.MainLoop().get_context() |
+ while context.iteration(False): |
+ pass |
+ |
+ def is_screen_locked(self): |
+ self.process_event() |
+ return self._locked |
+ |
+ def is_screen_unlocked(self): |
+ self.process_event() |
+ return self._locked == False |
+ |
+ def run_once(self): |
+ self._locked = False |
+ self.listen_to_signal(lambda: self.locked(), |
+ 'ScreenIsLocked', |
+ self._POWER_MANAGER_INTERFACE) |
+ self.listen_to_signal(lambda: self.unlocked(), |
+ 'ScreenIsUnlocked', |
+ self._POWER_MANAGER_INTERFACE) |
+ # wait 2 seconds to make sure chrome registers |
+ # the accelerator. |
+ time.sleep(5); |
+ |
+ ax = self.get_autox() |
+ ax.send_hotkey('Ctrl-Alt-l') |
+ |
+ site_utils.poll_for_condition( |
+ condition=lambda: self.is_screen_locked(), |
+ desc='screenlocker lock') |
+ |
+ # send an incorrect password |
+ ax.send_text('_boguspassword_') |
+ ax.send_hotkey('Return') |
+ |
+ # verify that the screen unlock attempt failed |
+ try: |
+ site_utils.poll_for_condition( |
+ condition=lambda: self.is_screen_unlocked(), |
+ desc='screen unlock', |
+ timeout=5) |
+ except error.TestError: |
+ pass |
+ else: |
+ raise error.TestFail('screen locker unlocked with bogus password.') |
+ |
+ # send the correct password |
+ ax.send_text(self.password) |
+ ax.send_hotkey('Return') |
+ |
+ # wait for screen to unlock |
+ site_utils.poll_for_condition( |
+ condition=lambda: self.is_screen_unlocked(), |
+ desc='screenlocker unlock') |