OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 import logging | |
7 import sys | |
8 | |
9 import pyauto_functional # Must be imported before pyauto | |
10 import pyauto | |
11 | |
12 sys.path.append('/usr/local') # To make autotest libs importable. | |
13 from autotest.cros import cros_ui | |
14 from autotest.cros import ownership | |
15 | |
16 | |
17 class ChromeosTime(pyauto.PyUITest): | |
18 """Tests for the ChromeOS status area clock and timezone settings.""" | |
19 | |
20 def setUp(self): | |
21 cros_ui.fake_ownership() | |
22 pyauto.PyUITest.setUp(self) | |
23 self._initial_timezone = self.GetTimeInfo()['timezone'] | |
24 | |
25 def tearDown(self): | |
26 self.SetTimezone(self._initial_timezone) | |
27 pyauto.PyUITest.tearDown(self) | |
28 ownership.clear_ownership() | |
29 | |
30 def testTimeInfo(self): | |
31 """Print the the display time, date, and timezone.""" | |
32 logging.debug(self.GetTimeInfo()) | |
33 | |
34 def testSetTimezone(self): | |
35 """Sanity test to make sure setting the timezone works.""" | |
36 self.SetTimezone('America/Los_Angeles') | |
37 pacific_time = self.GetTimeInfo()['display_time'] | |
38 self.SetTimezone('America/New_York') | |
39 eastern_time = self.GetTimeInfo()['display_time'] | |
40 | |
41 self.assertNotEqual(pacific_time, eastern_time, | |
42 'Time zone changed but display time did not.') | |
43 | |
44 def _IsTimezoneEditable(self): | |
45 """Check if the timezone is editable. | |
46 | |
47 It will navigate to the system settings page and verify that the | |
48 timezone settings drop down is not disabled. | |
49 | |
50 Returns: | |
51 True, if timezone dropdown is enabled | |
52 False, otherwise | |
53 """ | |
54 self.NavigateToURL('chrome://settings-frame') | |
55 ret = self.ExecuteJavascript(""" | |
56 var disabled = true; | |
57 var timezone = document.getElementById('timezone-select'); | |
58 if (timezone) | |
59 disabled = timezone.disabled; | |
60 domAutomationController.send(disabled.toString()); | |
61 """) | |
62 return ret == 'false' | |
63 | |
64 def testTimezoneIsEditable(self): | |
65 """Test that the timezone is always editable.""" | |
66 # This test only makes sense if we are not running as the owner. | |
67 self.assertFalse(self.GetLoginInfo()['is_owner']) | |
68 editable = self._IsTimezoneEditable() | |
69 self.assertTrue(editable, msg='Timezone is not editable when not owner.') | |
70 | |
71 def _SetTimezoneInUI(self, timezone): | |
72 self.NavigateToURL('chrome://settings-frame/settings') | |
73 self.ExecuteJavascript(""" | |
74 var selectElement = document.getElementById('timezone-select'); | |
75 selectElement.value = "%s"; | |
76 var event = document.createEvent("HTMLEvents"); | |
77 event.initEvent("change", true, true); | |
78 selectElement.dispatchEvent(event); | |
79 domAutomationController.send(""); | |
80 """ % timezone) | |
81 | |
82 def testSetTimezoneUI(self): | |
83 """Test that the timezone UI changes internal settings. | |
84 | |
85 Set the Timezone on the settings page. Check the internal timezone | |
86 afterwards. Timezones should be always editable.""" | |
87 | |
88 for timezone in ['America/Barbados', 'Europe/Helsinki']: | |
89 self._SetTimezoneInUI(timezone) | |
90 self.assertTrue(self.WaitUntil(lambda: self.GetTimeInfo()['timezone'], | |
91 expect_retval=timezone), | |
92 'Timezone not changed as expected.'); | |
93 | |
94 if __name__ == '__main__': | |
95 pyauto_functional.Main() | |
OLD | NEW |