blob: 4cd42e4ed604a30393054c56fed7f89aa4a42464 [file] [log] [blame]
#!/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()