configuration_policy_provider_win_unittest.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
1bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <gtest/gtest.h> 6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <windows.h> 8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/scoped_ptr.h" 10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/stl_util-inl.h" 11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/string_number_conversions.h" 12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/string_piece.h" 13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/utf_string_conversions.h" 14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/win/registry.h" 15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/configuration_policy_pref_store.h" 16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/configuration_policy_provider_win.h" 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/mock_configuration_policy_store.h" 18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/common/policy_constants.h" 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/common/pref_names.h" 20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickusing base::win::RegKey; 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace policy { 25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenconst wchar_t kUnitTestRegistrySubKey[] = L"SOFTWARE\\Chromium Unit Tests"; 27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenconst wchar_t kUnitTestMachineOverrideSubKey[] = 28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen L"SOFTWARE\\Chromium Unit Tests\\HKLM Override"; 29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenconst wchar_t kUnitTestUserOverrideSubKey[] = 30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen L"SOFTWARE\\Chromium Unit Tests\\HKCU Override"; 31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Holds policy type, corresponding policy name string and a valid value for use 33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// in parametrized value tests. 34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass PolicyTestParams { 35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Assumes ownership of |hklm_value| and |hkcu_value|. 37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams(ConfigurationPolicyStore::PolicyType type, 38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name, 39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value* hklm_value, 40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value* hkcu_value) 41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen : type_(type), 42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name_(policy_name), 43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value_(hklm_value), 44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value_(hkcu_value) {} 45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // testing::TestWithParam does copy the parameters, so provide copy 47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // constructor and assignment operator. 48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams(const PolicyTestParams& other) 49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen : type_(other.type_), 50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name_(other.policy_name_), 51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value_(other.hklm_value_->DeepCopy()), 52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value_(other.hkcu_value_->DeepCopy()) {} 53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const PolicyTestParams& operator=(PolicyTestParams other) { 55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen swap(other); 56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return *this; 57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void swap(PolicyTestParams& other) { 60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::swap(type_, other.type_); 61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::swap(policy_name_, other.policy_name_); 62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value_.swap(other.hklm_value_); 63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value_.swap(other.hkcu_value_); 64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::PolicyType type() const { return type_; } 67bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name() const { return policy_name_; } 68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* hklm_value() const { return hklm_value_.get(); } 69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* hkcu_value() const { return hkcu_value_.get(); } 70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 71bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Factory methods for different value types. 72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForStringPolicy( 73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::PolicyType type, 74bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 75bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, 76bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name, 77bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateStringValue("string_a"), 78bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateStringValue("string_b")); 79bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 80bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForBooleanPolicy( 81bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::PolicyType type, 82bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 83bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, 84bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name, 85bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateBooleanValue(true), 86bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateBooleanValue(false)); 87bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 88bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForIntegerPolicy( 89bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::PolicyType type, 90bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 91bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, 92bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name, 93bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateIntegerValue(42), 94bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateIntegerValue(17)); 95bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 96bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForListPolicy( 97bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::PolicyType type, 98bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 99bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ListValue* hklm_value = new ListValue; 100bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value->Set(0U, Value::CreateStringValue("It's a plane!")); 101bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ListValue* hkcu_value = new ListValue; 102bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value->Set(0U, Value::CreateStringValue("It's a bird!")); 103bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value->Set(0U, Value::CreateStringValue("It's a flying carpet!")); 104bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, policy_name, hklm_value, hkcu_value); 105bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 106bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 107bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 108bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::PolicyType type_; 109bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name_; 110bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<Value> hklm_value_; 111bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<Value> hkcu_value_; 112bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 113bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 114bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// This test class provides sandboxing and mocking for the parts of the 115bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Windows Registry implementing Group Policy. The |SetUp| method prepares 116bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// two temporary sandbox keys in |kUnitTestRegistrySubKey|, one for HKLM and one 117bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// for HKCU. A test's calls to the registry are redirected by Windows to these 118bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// sandboxes, allowing the tests to manipulate and access policy as if it 119bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// were active, but without actually changing the parts of the Registry that 120bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// are managed by Group Policy. 121bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyProviderWinTest 122bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen : public testing::TestWithParam<PolicyTestParams> { 123bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 124bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyProviderWinTest(); 125bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 126bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // testing::Test method overrides: 127bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void SetUp(); 128bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void TearDown(); 129bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 130bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void ActivateOverrides(); 131bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void DeactivateOverrides(); 132bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 133bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Deletes the registry key created during the tests. 134bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void DeleteRegistrySandbox(); 135bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 136bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write a string value to the registry. 137bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteString(HKEY hive, const char* name, const wchar_t* value); 138bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write a DWORD value to the registry. 139bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteDWORD(HKEY hive, const char* name, DWORD value); 140bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 141bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write the given value to the registry. 142bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteValue(HKEY hive, const char* name, const Value* value); 143bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write a value that is not compatible with the given |value|. 144bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteInvalidValue(HKEY hive, const char* name, const Value* value); 145bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 146bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen protected: 147bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<MockConfigurationPolicyStore> store_; 148bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<ConfigurationPolicyProviderWin> provider_; 149bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 150bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 151bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // A message loop must be declared and instantiated for these tests, 152bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // because Windows policy provider create WaitableEvents and 153bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // ObjectWatchers that require the tests to have a MessageLoop associated 154bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // with the thread executing the tests. 155bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen MessageLoop loop_; 156bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 157bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Keys are created for the lifetime of a test to contain 158bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // the sandboxed HKCU and HKLM hives, respectively. 159bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey temp_hkcu_hive_key_; 160bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey temp_hklm_hive_key_; 161bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 162bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 163bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenConfigurationPolicyProviderWinTest::ConfigurationPolicyProviderWinTest() 164bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen : temp_hklm_hive_key_(HKEY_CURRENT_USER, kUnitTestMachineOverrideSubKey, 165bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_READ), 166bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_(HKEY_CURRENT_USER, kUnitTestUserOverrideSubKey, 167bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_READ) { 168bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 169bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 170bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::SetUp() { 171bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Cleanup any remnants of previous tests. 172bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DeleteRegistrySandbox(); 173bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 174bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Create the subkeys to hold the overridden HKLM and HKCU 175bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // policy settings. 176bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hklm_hive_key_.Create(HKEY_CURRENT_USER, 177bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen kUnitTestMachineOverrideSubKey, 178bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_ALL_ACCESS); 179bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_.Create(HKEY_CURRENT_USER, 180bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen kUnitTestUserOverrideSubKey, 181bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_ALL_ACCESS); 182bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 183bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ActivateOverrides(); 184bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 185bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen store_.reset(new MockConfigurationPolicyStore); 186bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_.reset( 187bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen new ConfigurationPolicyProviderWin( 188bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyPrefStore::GetChromePolicyValueMap())); 189bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 190bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 191bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::TearDown() { 192bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DeactivateOverrides(); 193bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DeleteRegistrySandbox(); 194bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 195bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 196bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::ActivateOverrides() { 197bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen HRESULT result = RegOverridePredefKey(HKEY_LOCAL_MACHINE, 198bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hklm_hive_key_.Handle()); 199bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 200bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen result = RegOverridePredefKey(HKEY_CURRENT_USER, 201bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_.Handle()); 202bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 203bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 204bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 205bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::DeactivateOverrides() { 206bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen uint32 result = RegOverridePredefKey(HKEY_LOCAL_MACHINE, 0); 207bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 208bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen result = RegOverridePredefKey(HKEY_CURRENT_USER, 0); 209bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 210bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 211bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 212bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::DeleteRegistrySandbox() { 213bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hklm_hive_key_.Close(); 214bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_.Close(); 215bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(HKEY_CURRENT_USER, kUnitTestRegistrySubKey, KEY_ALL_ACCESS); 216bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.DeleteKey(L""); 217bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 218bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 219bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteString(HKEY hive, 220bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 221bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const wchar_t* value) { 222bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(hive, policy::kRegistrySubKey, KEY_ALL_ACCESS); 223bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.WriteValue(UTF8ToUTF16(name).c_str(), value); 224bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 225bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 226bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteDWORD(HKEY hive, 227bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 228bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DWORD value) { 229bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(hive, policy::kRegistrySubKey, KEY_ALL_ACCESS); 230bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.WriteValue(UTF8ToUTF16(name).c_str(), value); 231bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 232bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 233bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteValue(HKEY hive, 234bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 235bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value) { 236bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen switch (value->GetType()) { 237bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_BOOLEAN: { 238bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen bool v; 239bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value->GetAsBoolean(&v)); 240bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteDWORD(hive, name, v); 241bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 242bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 243bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_INTEGER: { 244bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int v; 245bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value->GetAsInteger(&v)); 246bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteDWORD(hive, name, v); 247bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 248bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 249bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_STRING: { 250bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::string v; 251bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value->GetAsString(&v)); 252bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteString(hive, name, UTF8ToUTF16(v).c_str()); 253bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 254bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 255bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_LIST: { 256bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const ListValue* list = static_cast<const ListValue*>(value); 257bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(hive, 258bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen (string16(policy::kRegistrySubKey) + ASCIIToUTF16("\\") + 259bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen UTF8ToUTF16(name)).c_str(), 260bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_ALL_ACCESS); 261bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int index = 1; 262bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen for (ListValue::const_iterator element(list->begin()); 263bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen element != list->end(); ++element) { 264bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE((*element)->IsType(Value::TYPE_STRING)); 265bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::string element_value; 266bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE((*element)->GetAsString(&element_value)); 267bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.WriteValue(base::IntToString16(index++).c_str(), 268bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen UTF8ToUTF16(element_value).c_str()); 269bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 270bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 271bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 272bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen default: 273bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen FAIL() << "Unsupported value type " << value->GetType(); 274bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 275bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 276bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 277bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 278bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteInvalidValue(HKEY hive, 279bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 280bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value) { 281bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (value->IsType(Value::TYPE_STRING)) 282bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteDWORD(hive, name, -1); 283bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen else 284bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteString(hive, name, L"bad value"); 285bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 286bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 287bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, Default) { 288bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 289bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(store_->policy_map().empty()); 290bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 291bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 292bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, InvalidValue) { 293bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteInvalidValue(HKEY_LOCAL_MACHINE, 294bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 295bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hklm_value()); 296bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteInvalidValue(HKEY_CURRENT_USER, 297bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 298bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hkcu_value()); 299bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 300bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(store_->policy_map().empty()); 301bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 302bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 303bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, HKLM) { 304bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_LOCAL_MACHINE, 305bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 306bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hklm_value()); 307bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 308bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value = store_->Get(GetParam().type()); 309bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value); 310bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(value->Equals(GetParam().hklm_value())); 311bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 312bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 313bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, HKCU) { 314bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_CURRENT_USER, 315bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 316bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hkcu_value()); 317bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 318bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value = store_->Get(GetParam().type()); 319bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value); 320bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(value->Equals(GetParam().hkcu_value())); 321bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 322bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 323bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, HKLMOverHKCU) { 324bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_LOCAL_MACHINE, 325bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 326bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hklm_value()); 327bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_CURRENT_USER, 328bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 329bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hkcu_value()); 330bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 331bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value = store_->Get(GetParam().type()); 332bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value); 333bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(value->Equals(GetParam().hklm_value())); 334bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 335bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 336bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Instantiate the test case for all supported policies. 337bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P( 338bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyProviderWinTestInstance, 339bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyProviderWinTest, 340bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen testing::Values( 341bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 342bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyHomePage, 343bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kHomepageLocation), 344bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 345bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyHomepageIsNewTabPage, 346bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kHomepageIsNewTabPage), 347bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForIntegerPolicy( 348bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyRestoreOnStartup, 349bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kRestoreOnStartup), 350bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 351bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyURLsToRestoreOnStartup, 352bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kURLsToRestoreOnStartup), 353731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick PolicyTestParams::ForBooleanPolicy( 354731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ConfigurationPolicyStore::kPolicyDefaultSearchProviderEnabled, 355731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick key::kDefaultSearchProviderEnabled), 356bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 357bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDefaultSearchProviderName, 358bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderName), 359bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 360bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDefaultSearchProviderKeyword, 361bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderKeyword), 362bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 363bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDefaultSearchProviderSearchURL, 364bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderSearchURL), 365bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 366bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDefaultSearchProviderSuggestURL, 367bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderSuggestURL), 368bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 369bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDefaultSearchProviderIconURL, 370bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderIconURL), 371bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 372bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDefaultSearchProviderEncodings, 373bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderEncodings), 374bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForIntegerPolicy( 375bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyProxyServerMode, 376bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kProxyServerMode), 377bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 378bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyProxyServer, 379bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kProxyServer), 380bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 381bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyProxyPacUrl, 382bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kProxyPacUrl), 383bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 384bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyProxyBypassList, 385bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kProxyBypassList), 386bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 387bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyAlternateErrorPagesEnabled, 388bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kAlternateErrorPagesEnabled), 389bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 390bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicySearchSuggestEnabled, 391bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kSearchSuggestEnabled), 392bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 393bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDnsPrefetchingEnabled, 394bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDnsPrefetchingEnabled), 395bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 396bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicySafeBrowsingEnabled, 397bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kSafeBrowsingEnabled), 398bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 399bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyMetricsReportingEnabled, 400bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kMetricsReportingEnabled), 401bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 402bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyPasswordManagerEnabled, 403bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kPasswordManagerEnabled), 404bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 405bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyDisabledPlugins, 406bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDisabledPlugins), 407bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 408bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyAutoFillEnabled, 409bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kAutoFillEnabled), 410bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 411bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicySyncDisabled, 412bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kSyncDisabled), 413bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 414bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyApplicationLocale, 415bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kApplicationLocaleValue), 416bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 417bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyExtensionInstallAllowList, 418bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kExtensionInstallAllowList), 419bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 420bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyExtensionInstallDenyList, 421bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kExtensionInstallDenyList), 422bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 423bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyShowHomeButton, 424bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kShowHomeButton), 425bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 426bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyStore::kPolicyPrintingEnabled, 427bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kPrintingEnabled))); 428bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 429bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} // namespace policy 430