- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / functional / chromeos_time.py
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()