172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 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#include <windows.h> 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "base/message_loop.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" 1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/asynchronous_policy_loader.h" 16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/configuration_policy_pref_store.h" 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/configuration_policy_provider_win.h" 18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/mock_configuration_policy_store.h" 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/common/pref_names.h" 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/browser_thread.h" 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "policy/policy_constants.h" 22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 24731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickusing base::win::RegKey; 25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace policy { 27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenconst wchar_t kUnitTestRegistrySubKey[] = L"SOFTWARE\\Chromium Unit Tests"; 29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenconst wchar_t kUnitTestMachineOverrideSubKey[] = 30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen L"SOFTWARE\\Chromium Unit Tests\\HKLM Override"; 31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenconst wchar_t kUnitTestUserOverrideSubKey[] = 32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen L"SOFTWARE\\Chromium Unit Tests\\HKCU Override"; 33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 34513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace { 35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Holds policy type, corresponding policy name string and a valid value for use 37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// in parametrized value tests. 38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass PolicyTestParams { 39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Assumes ownership of |hklm_value| and |hkcu_value|. 41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch PolicyTestParams(ConfigurationPolicyType type, 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const char* policy_name, 43513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch Value* hklm_value, 44513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch Value* hkcu_value) 45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen : type_(type), 46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name_(policy_name), 47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value_(hklm_value), 48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value_(hkcu_value) {} 49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // testing::TestWithParam does copy the parameters, so provide copy 51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // constructor and assignment operator. 52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams(const PolicyTestParams& other) 53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen : type_(other.type_), 54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name_(other.policy_name_), 55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value_(other.hklm_value_->DeepCopy()), 56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value_(other.hkcu_value_->DeepCopy()) {} 57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const PolicyTestParams& operator=(PolicyTestParams other) { 59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen swap(other); 60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return *this; 61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void swap(PolicyTestParams& other) { 64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::swap(type_, other.type_); 65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::swap(policy_name_, other.policy_name_); 66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value_.swap(other.hklm_value_); 67bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value_.swap(other.hkcu_value_); 68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 70513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ConfigurationPolicyType type() const { return type_; } 71bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name() const { return policy_name_; } 72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* hklm_value() const { return hklm_value_.get(); } 73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* hkcu_value() const { return hkcu_value_.get(); } 74bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 75bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Factory methods for different value types. 76bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForStringPolicy( 77513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ConfigurationPolicyType type, 78bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 79bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, 80bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name, 81bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateStringValue("string_a"), 82bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateStringValue("string_b")); 83bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 84bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForBooleanPolicy( 85513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ConfigurationPolicyType type, 86bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 87bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, 88bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name, 89bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateBooleanValue(true), 90bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateBooleanValue(false)); 91bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 92bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForIntegerPolicy( 93513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ConfigurationPolicyType type, 94bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 95bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, 96bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen policy_name, 97bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateIntegerValue(42), 98bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen Value::CreateIntegerValue(17)); 99bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 100bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen static PolicyTestParams ForListPolicy( 101513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ConfigurationPolicyType type, 102bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name) { 103bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ListValue* hklm_value = new ListValue; 104bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hklm_value->Set(0U, Value::CreateStringValue("It's a plane!")); 105bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ListValue* hkcu_value = new ListValue; 106bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value->Set(0U, Value::CreateStringValue("It's a bird!")); 107bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hkcu_value->Set(0U, Value::CreateStringValue("It's a flying carpet!")); 108bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return PolicyTestParams(type, policy_name, hklm_value, hkcu_value); 109bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 110bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 111bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 112513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ConfigurationPolicyType type_; 113bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* policy_name_; 114bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<Value> hklm_value_; 115bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<Value> hkcu_value_; 116bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 117bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 118513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} // namespace 119513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 120bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// This test class provides sandboxing and mocking for the parts of the 121bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Windows Registry implementing Group Policy. The |SetUp| method prepares 122bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// two temporary sandbox keys in |kUnitTestRegistrySubKey|, one for HKLM and one 123bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// for HKCU. A test's calls to the registry are redirected by Windows to these 124bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// sandboxes, allowing the tests to manipulate and access policy as if it 125bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// were active, but without actually changing the parts of the Registry that 126bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// are managed by Group Policy. 127bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyProviderWinTest 128bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen : public testing::TestWithParam<PolicyTestParams> { 129bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 130bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyProviderWinTest(); 131bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 132bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // testing::Test method overrides: 133bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void SetUp(); 134bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual void TearDown(); 135bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 136bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void ActivateOverrides(); 137bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void DeactivateOverrides(); 138bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 139bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Deletes the registry key created during the tests. 140bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void DeleteRegistrySandbox(); 141bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 142bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write a string value to the registry. 143bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteString(HKEY hive, const char* name, const wchar_t* value); 144bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write a DWORD value to the registry. 145bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteDWORD(HKEY hive, const char* name, DWORD value); 146bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 147bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write the given value to the registry. 148bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteValue(HKEY hive, const char* name, const Value* value); 149bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Write a value that is not compatible with the given |value|. 150bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void WriteInvalidValue(HKEY hive, const char* name, const Value* value); 151bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 152bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen protected: 153bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<MockConfigurationPolicyStore> store_; 154bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen scoped_ptr<ConfigurationPolicyProviderWin> provider_; 155bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 156bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // A message loop must be declared and instantiated for these tests, 157bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // because Windows policy provider create WaitableEvents and 158bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // ObjectWatchers that require the tests to have a MessageLoop associated 159bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // with the thread executing the tests. 160bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen MessageLoop loop_; 161bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 16221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen private: 16321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen BrowserThread ui_thread_; 16421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen BrowserThread file_thread_; 16521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 166bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Keys are created for the lifetime of a test to contain 167bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // the sandboxed HKCU and HKLM hives, respectively. 168bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey temp_hkcu_hive_key_; 169bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey temp_hklm_hive_key_; 170bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 171bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 172bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenConfigurationPolicyProviderWinTest::ConfigurationPolicyProviderWinTest() 17321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen : ui_thread_(BrowserThread::UI, &loop_), 17421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen file_thread_(BrowserThread::FILE, &loop_), 17521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen temp_hklm_hive_key_(HKEY_CURRENT_USER, kUnitTestMachineOverrideSubKey, 176bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_READ), 177bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_(HKEY_CURRENT_USER, kUnitTestUserOverrideSubKey, 178bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_READ) { 179bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 180bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 181bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::SetUp() { 182bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Cleanup any remnants of previous tests. 183bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DeleteRegistrySandbox(); 184bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 185bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Create the subkeys to hold the overridden HKLM and HKCU 186bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // policy settings. 187bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hklm_hive_key_.Create(HKEY_CURRENT_USER, 188bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen kUnitTestMachineOverrideSubKey, 189bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_ALL_ACCESS); 190bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_.Create(HKEY_CURRENT_USER, 191bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen kUnitTestUserOverrideSubKey, 192bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_ALL_ACCESS); 193bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 194bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ActivateOverrides(); 195bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 196bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen store_.reset(new MockConfigurationPolicyStore); 197513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch provider_.reset(new ConfigurationPolicyProviderWin( 198513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList())); 199bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 200bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 201bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::TearDown() { 202bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DeactivateOverrides(); 203bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DeleteRegistrySandbox(); 20421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loop_.RunAllPending(); 205bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 206bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 207bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::ActivateOverrides() { 208bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen HRESULT result = RegOverridePredefKey(HKEY_LOCAL_MACHINE, 209bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hklm_hive_key_.Handle()); 210bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 211bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen result = RegOverridePredefKey(HKEY_CURRENT_USER, 212bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_.Handle()); 213bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 214bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 215bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 216bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::DeactivateOverrides() { 217bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen uint32 result = RegOverridePredefKey(HKEY_LOCAL_MACHINE, 0); 218bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 219bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen result = RegOverridePredefKey(HKEY_CURRENT_USER, 0); 220bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_EQ(ERROR_SUCCESS, result); 221bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 222bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 223bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::DeleteRegistrySandbox() { 224bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hklm_hive_key_.Close(); 225bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen temp_hkcu_hive_key_.Close(); 226bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(HKEY_CURRENT_USER, kUnitTestRegistrySubKey, KEY_ALL_ACCESS); 227bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.DeleteKey(L""); 228bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 229bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 230bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteString(HKEY hive, 231bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 232bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const wchar_t* value) { 233bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(hive, policy::kRegistrySubKey, KEY_ALL_ACCESS); 234bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.WriteValue(UTF8ToUTF16(name).c_str(), value); 235bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 236bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 237bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteDWORD(HKEY hive, 238bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 239bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DWORD value) { 240bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(hive, policy::kRegistrySubKey, KEY_ALL_ACCESS); 241bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.WriteValue(UTF8ToUTF16(name).c_str(), value); 242bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 243bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 244bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteValue(HKEY hive, 245bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 246bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value) { 247bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen switch (value->GetType()) { 248bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_BOOLEAN: { 249bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen bool v; 250bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value->GetAsBoolean(&v)); 251bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteDWORD(hive, name, v); 252bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 253bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 254bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_INTEGER: { 255bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int v; 256bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value->GetAsInteger(&v)); 257bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteDWORD(hive, name, v); 258bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 259bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 260bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_STRING: { 261bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::string v; 262bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value->GetAsString(&v)); 263bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteString(hive, name, UTF8ToUTF16(v).c_str()); 264bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 265bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 266bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen case Value::TYPE_LIST: { 267bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const ListValue* list = static_cast<const ListValue*>(value); 268bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen RegKey key(hive, 269bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen (string16(policy::kRegistrySubKey) + ASCIIToUTF16("\\") + 270513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch UTF8ToUTF16(name)).c_str(), 271bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen KEY_ALL_ACCESS); 272bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen int index = 1; 273bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen for (ListValue::const_iterator element(list->begin()); 274bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen element != list->end(); ++element) { 275bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE((*element)->IsType(Value::TYPE_STRING)); 276bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen std::string element_value; 277bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE((*element)->GetAsString(&element_value)); 278bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key.WriteValue(base::IntToString16(index++).c_str(), 279bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen UTF8ToUTF16(element_value).c_str()); 280bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 281bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 282bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 283bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen default: 284bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen FAIL() << "Unsupported value type " << value->GetType(); 285bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen break; 286bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 287bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 288bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 289bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenvoid ConfigurationPolicyProviderWinTest::WriteInvalidValue(HKEY hive, 290bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const char* name, 291bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value) { 292bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (value->IsType(Value::TYPE_STRING)) 293bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteDWORD(hive, name, -1); 294bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen else 295bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteString(hive, name, L"bad value"); 296bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 297bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 298bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, Default) { 299bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 300bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(store_->policy_map().empty()); 301bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 302bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 303bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, InvalidValue) { 304bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteInvalidValue(HKEY_LOCAL_MACHINE, 305bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 306bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hklm_value()); 307bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteInvalidValue(HKEY_CURRENT_USER, 308bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 309bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hkcu_value()); 31021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen provider_->loader()->Reload(); 31121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loop_.RunAllPending(); 312bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 313bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(store_->policy_map().empty()); 314bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 315bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 316bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, HKLM) { 317bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_LOCAL_MACHINE, 318bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 319bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hklm_value()); 32021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen provider_->loader()->Reload(); 32121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loop_.RunAllPending(); 322bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 323bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value = store_->Get(GetParam().type()); 324bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value); 325bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(value->Equals(GetParam().hklm_value())); 326bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 327bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 328bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, HKCU) { 329bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_CURRENT_USER, 330bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 331bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hkcu_value()); 33221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen provider_->loader()->Reload(); 33321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loop_.RunAllPending(); 334bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 335bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value = store_->Get(GetParam().type()); 336bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value); 337bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(value->Equals(GetParam().hkcu_value())); 338bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 339bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 340bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyProviderWinTest, HKLMOverHKCU) { 341bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_LOCAL_MACHINE, 342bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 343bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hklm_value()); 344bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen WriteValue(HKEY_CURRENT_USER, 345bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().policy_name(), 346bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen GetParam().hkcu_value()); 34721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen provider_->loader()->Reload(); 34821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loop_.RunAllPending(); 349bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen provider_->Provide(store_.get()); 350bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen const Value* value = store_->Get(GetParam().type()); 351bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ASSERT_TRUE(value); 352bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen EXPECT_TRUE(value->Equals(GetParam().hklm_value())); 353bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} 354bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 355bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Instantiate the test case for all supported policies. 356bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P( 357bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyProviderWinTestInstance, 358bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ConfigurationPolicyProviderWinTest, 359bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen testing::Values( 360bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 36172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyHomepageLocation, 362bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kHomepageLocation), 363bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 364513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyHomepageIsNewTabPage, 365bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kHomepageIsNewTabPage), 366bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForIntegerPolicy( 367513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyRestoreOnStartup, 368bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kRestoreOnStartup), 369bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 37072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyRestoreOnStartupURLs, 37172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kRestoreOnStartupURLs), 372731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick PolicyTestParams::ForBooleanPolicy( 373513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDefaultSearchProviderEnabled, 374731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick key::kDefaultSearchProviderEnabled), 375bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 376513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDefaultSearchProviderName, 377bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderName), 378bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 379513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDefaultSearchProviderKeyword, 380bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderKeyword), 381bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 382513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDefaultSearchProviderSearchURL, 383bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderSearchURL), 384bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 385513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDefaultSearchProviderSuggestURL, 386bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderSuggestURL), 387bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 38872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyDefaultSearchProviderInstantURL, 38972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kDefaultSearchProviderInstantURL), 39072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PolicyTestParams::ForStringPolicy( 391513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDefaultSearchProviderIconURL, 392bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderIconURL), 393bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 394513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDefaultSearchProviderEncodings, 395bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDefaultSearchProviderEncodings), 39672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PolicyTestParams::ForStringPolicy( 39721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen kPolicyProxyMode, 39821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen key::kProxyMode), 39972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PolicyTestParams::ForIntegerPolicy( 40072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyProxyServerMode, 40172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kProxyServerMode), 402bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 403513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyProxyServer, 404bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kProxyServer), 405bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 406513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyProxyPacUrl, 407bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kProxyPacUrl), 408bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 409513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyProxyBypassList, 410bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kProxyBypassList), 411bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 412513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyAlternateErrorPagesEnabled, 413bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kAlternateErrorPagesEnabled), 414bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 415513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicySearchSuggestEnabled, 416bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kSearchSuggestEnabled), 417bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 418513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDnsPrefetchingEnabled, 419bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDnsPrefetchingEnabled), 420bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 421513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicySafeBrowsingEnabled, 422bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kSafeBrowsingEnabled), 423bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 424513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyMetricsReportingEnabled, 425bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kMetricsReportingEnabled), 426bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 427513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyPasswordManagerEnabled, 428bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kPasswordManagerEnabled), 429bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 430513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyDisabledPlugins, 431bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kDisabledPlugins), 432dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen PolicyTestParams::ForListPolicy( 433dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen kPolicyDisabledPluginsExceptions, 434dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen key::kDisabledPluginsExceptions), 435dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen PolicyTestParams::ForListPolicy( 436dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen kPolicyEnabledPlugins, 437dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen key::kEnabledPlugins), 438bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 439513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyAutoFillEnabled, 440bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kAutoFillEnabled), 441bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 442513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicySyncDisabled, 443bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kSyncDisabled), 444bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForStringPolicy( 44572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyApplicationLocaleValue, 446bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kApplicationLocaleValue), 447bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 44872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyExtensionInstallWhitelist, 44972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kExtensionInstallWhitelist), 450bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForListPolicy( 45172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyExtensionInstallBlacklist, 45272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kExtensionInstallBlacklist), 453bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 454513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyShowHomeButton, 455bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen key::kShowHomeButton), 456bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen PolicyTestParams::ForBooleanPolicy( 457513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kPolicyPrintingEnabled, 45872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kPrintingEnabled), 45972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PolicyTestParams::ForIntegerPolicy( 46072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyPolicyRefreshRate, 46172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kPolicyRefreshRate), 46272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PolicyTestParams::ForBooleanPolicy( 46372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyInstantEnabled, 46472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kInstantEnabled), 46572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PolicyTestParams::ForBooleanPolicy( 46672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyIncognitoEnabled, 46772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen key::kIncognitoEnabled), 46872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PolicyTestParams::ForBooleanPolicy( 469ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyDisablePluginFinder, 470ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kDisablePluginFinder), 471ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 472ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyClearSiteDataOnExit, 473ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kClearSiteDataOnExit), 474ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForStringPolicy( 475ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyDownloadDirectory, 476ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kDownloadDirectory), 477ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 478ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyDefaultBrowserSettingEnabled, 479ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kDefaultBrowserSettingEnabled), 480ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 48172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen kPolicyCloudPrintProxyEnabled, 482ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kCloudPrintProxyEnabled), 483ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 484ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyTranslateEnabled, 485ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kTranslateEnabled), 486ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 487ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyAllowOutdatedPlugins, 488ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kAllowOutdatedPlugins), 489ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 490ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyBookmarkBarEnabled, 491ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kBookmarkBarEnabled), 492ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 493ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyEditBookmarksEnabled, 494ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kEditBookmarksEnabled), 495ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForBooleanPolicy( 496ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyAllowFileSelectionDialogs, 497ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kAllowFileSelectionDialogs), 498ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PolicyTestParams::ForListPolicy( 499ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kPolicyDisabledSchemes, 500ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen key::kDisabledSchemes))); 501bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 502bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} // namespace policy 503