Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / chrome / test / functional / chromeos_volume.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 os
8 import subprocess
9 import sys
10
11 import pyauto_functional  # Must be imported before pyauto
12 import pyauto
13
14 sys.path.append('/usr/local')  # To make autotest libs importable.
15 from autotest.cros import cros_ui
16 from autotest.cros import cryptohome
17
18
19 class ChromeosVolume(pyauto.PyUITest):
20   """Test case for volume levels.
21
22   Test volume and mute changes with different state like, login,
23   lock, logout, etc...
24   """
25
26   def setUp(self):
27     # We want a clean session_manager instance for every run,
28     # so restart ui now.
29     cros_ui.stop(allow_fail=True)
30     cryptohome.remove_all_vaults()
31     cros_ui.start(wait_for_login_prompt=False)
32     pyauto.PyUITest.setUp(self)
33     self._initial_volume_info = self.GetVolumeInfo()
34
35   def tearDown(self):
36     self.SetVolume(self._initial_volume_info['volume'])
37     self.SetMute(self._initial_volume_info['is_mute'])
38     pyauto.PyUITest.tearDown(self)
39
40   def ShouldAutoLogin(self):
41     return False
42
43   def _Login(self):
44     """Perform login"""
45     credentials = self.GetPrivateInfo()['test_google_account']
46     self.Login(credentials['username'], credentials['password'])
47     logging.info('Logged in as %s' % credentials['username'])
48     login_info = self.GetLoginInfo()
49     self.assertTrue(login_info['is_logged_in'], msg='Login failed.')
50
51   def testDefaultVolume(self):
52     """Test the default volume settings"""
53     self._Login()
54     board_name = self.ChromeOSBoard()
55     default_volume = self.GetPrivateInfo()['default_volume']
56     assert default_volume.get(board_name), \
57            'No volume settings available for %s.' % board_name
58     expected = {u'volume': default_volume[board_name],
59                 u'is_mute': default_volume['is_mute']}
60     volume = self.GetVolumeInfo()
61     self.assertEqual(volume.get('is_mute'), expected.get('is_mute'))
62     self.assertAlmostEqual(volume.get('volume'), expected.get('volume'),
63         msg='Volume settings are set to %s, not matching with default '
64             'volume settings %s.' % (volume, expected))
65
66   def testLoginLogoutVolume(self):
67     """Test that volume settings are preserved after login and logout"""
68     before_login = self.GetVolumeInfo()
69     self._Login()
70     after_login = self.GetVolumeInfo()
71     self.assertEqual(before_login, after_login,
72         msg='Before login : %s and after login : %s, volume states are not '
73             'matching' % (before_login, after_login))
74     self.Logout()
75     after_logout = self.GetVolumeInfo()
76     self.assertEqual(after_login, after_logout,
77         msg='Before logout : %s and after logout : %s, volume states are not '
78             'matching' % (after_login, after_logout))
79
80   def testLoginLockoutVolume(self):
81     """Test that volume changes on the lock screen, are preserved"""
82     lock_volume = {u'volume': 50.000000000000014, u'is_mute': True}
83     self._Login()
84     login_vol = self.GetVolumeInfo()
85     self.LockScreen()
86     self.SetVolume(lock_volume['volume'])
87     self.SetMute(lock_volume['is_mute'])
88     self.UnlockScreen(self.GetPrivateInfo()['test_google_account']['password'])
89     after_login = self.GetVolumeInfo()
90     self.assertEqual(lock_volume, after_login,
91         msg='Locking screen volume changes are not preserved')
92
93
94 if __name__ == '__main__':
95   pyauto_functional.Main()