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