| #!/usr/bin/env python |
| # Copyright (c) 2012 The Chromium 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 logging |
| import sys |
| |
| import pyauto_functional # Must be imported before pyauto |
| import pyauto |
| |
| sys.path.append('/usr/local') # To make autotest libs importable. |
| from autotest.cros import cros_ui |
| from autotest.cros import ownership |
| |
| |
| class ChromeosTime(pyauto.PyUITest): |
| """Tests for the ChromeOS status area clock and timezone settings.""" |
| |
| def setUp(self): |
| cros_ui.fake_ownership() |
| pyauto.PyUITest.setUp(self) |
| self._initial_timezone = self.GetTimeInfo()['timezone'] |
| |
| def tearDown(self): |
| self.SetTimezone(self._initial_timezone) |
| pyauto.PyUITest.tearDown(self) |
| ownership.clear_ownership() |
| |
| def testTimeInfo(self): |
| """Print the the display time, date, and timezone.""" |
| logging.debug(self.GetTimeInfo()) |
| |
| def testSetTimezone(self): |
| """Sanity test to make sure setting the timezone works.""" |
| self.SetTimezone('America/Los_Angeles') |
| pacific_time = self.GetTimeInfo()['display_time'] |
| self.SetTimezone('America/New_York') |
| eastern_time = self.GetTimeInfo()['display_time'] |
| |
| self.assertNotEqual(pacific_time, eastern_time, |
| 'Time zone changed but display time did not.') |
| |
| def _IsTimezoneEditable(self): |
| """Check if the timezone is editable. |
| |
| It will navigate to the system settings page and verify that the |
| timezone settings drop down is not disabled. |
| |
| Returns: |
| True, if timezone dropdown is enabled |
| False, otherwise |
| """ |
| self.NavigateToURL('chrome://settings-frame') |
| ret = self.ExecuteJavascript(""" |
| var disabled = true; |
| var timezone = document.getElementById('timezone-select'); |
| if (timezone) |
| disabled = timezone.disabled; |
| domAutomationController.send(disabled.toString()); |
| """) |
| return ret == 'false' |
| |
| def testTimezoneIsEditable(self): |
| """Test that the timezone is always editable.""" |
| # This test only makes sense if we are not running as the owner. |
| self.assertFalse(self.GetLoginInfo()['is_owner']) |
| editable = self._IsTimezoneEditable() |
| self.assertTrue(editable, msg='Timezone is not editable when not owner.') |
| |
| def _SetTimezoneInUI(self, timezone): |
| self.NavigateToURL('chrome://settings-frame/settings') |
| self.ExecuteJavascript(""" |
| var selectElement = document.getElementById('timezone-select'); |
| selectElement.value = "%s"; |
| var event = document.createEvent("HTMLEvents"); |
| event.initEvent("change", true, true); |
| selectElement.dispatchEvent(event); |
| domAutomationController.send(""); |
| """ % timezone) |
| |
| def testSetTimezoneUI(self): |
| """Test that the timezone UI changes internal settings. |
| |
| Set the Timezone on the settings page. Check the internal timezone |
| afterwards. Timezones should be always editable.""" |
| |
| for timezone in ['America/Barbados', 'Europe/Helsinki']: |
| self._SetTimezoneInUI(timezone) |
| self.assertTrue(self.WaitUntil(lambda: self.GetTimeInfo()['timezone'], |
| expect_retval=timezone), |
| 'Timezone not changed as expected.'); |
| |
| if __name__ == '__main__': |
| pyauto_functional.Main() |