1# Copyright 2016 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import logging 6 7from autotest_lib.client.common_lib import error 8from autotest_lib.client.cros.enterprise import enterprise_policy_base 9 10 11class policy_SearchSuggestEnabled(enterprise_policy_base.EnterprisePolicyTest): 12 """ 13 Test effect of SearchSuggestEnabled policy on Chrome OS behavior. 14 15 This test verifies the behavior of Chrome OS for all valid values of the 16 SearchSuggestEnabled user policy: True, False, and Not set. 'Not set' 17 indicates no value, and will induce the default behavior that is seen by 18 an unmanaged user: checked and user-editable. 19 20 When True or Not set, search suggestions are given. When False, search 21 suggestions are not given. When set either True or False, the setting is 22 disabled, so users cannot change or override the setting. When not set 23 users can change the setting. 24 25 """ 26 version = 1 27 28 POLICY_NAME = 'SearchSuggestEnabled' 29 STARTUP_URLS = ['chrome://policy'] 30 SUPPORTING_POLICIES = { 31 'BookmarkBarEnabled': True, 32 'RestoreOnStartupURLs': STARTUP_URLS, 33 'RestoreOnStartup': 4 34 } 35 TEST_CASES = { 36 'True_Enable': True, 37 'False_Disable': False, 38 'NotSet_Enable': None 39 } 40 41 42 def _test_search_suggest_enabled(self, policy_value): 43 """ 44 Verify CrOS enforces SearchSuggestEnabled policy. 45 46 @param policy_value: policy value expected. 47 48 """ 49 setting_pref = 'search.suggest_enabled' 50 properties = self._get_settings_checkbox_properties(setting_pref) 51 setting_label = properties[self.SETTING_LABEL] 52 setting_is_checked = properties[self.SETTING_CHECKED] 53 setting_is_disabled = properties[self.SETTING_DISABLED] 54 logging.info("Check box '%s' status: checked=%s, disabled=%s", 55 setting_label, setting_is_checked, setting_is_disabled) 56 57 # Setting checked if policy is True, unchecked if False. 58 if policy_value == True and not setting_is_checked: 59 raise error.TestFail('Search Suggest should be checked.') 60 if policy_value == False and setting_is_checked: 61 raise error.TestFail('Search Suggest should be unchecked.') 62 63 # Setting is enabled if policy is Not set, disabled if True or False. 64 if policy_value == None: 65 if setting_is_disabled: 66 raise error.TestFail('Search Suggest should be editable.') 67 else: 68 if not setting_is_disabled: 69 raise error.TestFail('Search Suggest should not be editable.') 70 71 72 def run_test_case(self, case): 73 """ 74 Setup and run the test configured for the specified test case. 75 76 @param case: Name of the test case to run. 77 78 """ 79 case_value = self.TEST_CASES[case] 80 self.setup_case(self.POLICY_NAME, case_value, self.SUPPORTING_POLICIES) 81 self._test_search_suggest_enabled(case_value) 82