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 "base/file_path.h"
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h"
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/configuration_policy_pref_store.h"
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/mock_configuration_policy_provider.h"
972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/prefs/proxy_config_dictionary.h"
1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/common/pref_names.h"
1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/common/pref_store_observer_mock.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_service.h"
1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "testing/gmock/include/gmock/gmock.h"
1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "testing/gtest/include/gtest/gtest.h"
1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenusing testing::_;
1721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenusing testing::Mock;
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace policy {
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Holds a set of test parameters, consisting of pref name and policy type.
22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass TypeAndName {
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public:
24513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  TypeAndName(ConfigurationPolicyType type, const char* pref_name)
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      : type_(type),
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen        pref_name_(pref_name) {}
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
28513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ConfigurationPolicyType type() const { return type_; }
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  const char* pref_name() const { return pref_name_; }
30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private:
32513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ConfigurationPolicyType type_;
33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  const char* pref_name_;
34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
3621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsentemplate<typename TESTBASE>
3721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass ConfigurationPolicyPrefStoreTestBase : public TESTBASE {
3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen protected:
3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ConfigurationPolicyPrefStoreTestBase()
4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      : provider_(),
4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        store_(new ConfigurationPolicyPrefStore(&provider_)) {}
4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider_;
4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store_;
4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for list-valued policy settings.
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreListTest
4921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : public ConfigurationPolicyPrefStoreTestBase<
5021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 testing::TestWithParam<TypeAndName> > {
51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreListTest, GetDefault) {
5421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), NULL));
56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreListTest, SetValue) {
59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ListValue* in_value = new ListValue();
60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  in_value->Append(Value::CreateStringValue("test1"));
61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  in_value->Append(Value::CreateStringValue("test2,"));
6221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(GetParam().type(), in_value);
6372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value;
6521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
6672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), &value));
6721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(in_value->Equals(value));
68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
71bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreListTestInstance,
72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreListTest,
73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
7472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyRestoreOnStartupURLs,
75bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kURLsToRestoreOnStartup),
7672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyExtensionInstallWhitelist,
77bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kExtensionInstallAllowList),
7872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyExtensionInstallBlacklist,
79bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kExtensionInstallDenyList),
80513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyDisabledPlugins,
81dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                    prefs::kPluginsDisabledPlugins),
82dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen        TypeAndName(kPolicyDisabledPluginsExceptions,
83dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen                    prefs::kPluginsDisabledPluginsExceptions),
84dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen        TypeAndName(kPolicyEnabledPlugins,
85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kPluginsEnabledPlugins),
86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyDisabledSchemes,
87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kDisabledSchemes)));
88bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
89bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for string-valued policy settings.
90bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreStringTest
9121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : public ConfigurationPolicyPrefStoreTestBase<
9221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 testing::TestWithParam<TypeAndName> > {
93bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
94bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
95bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreStringTest, GetDefault) {
9621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
9772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), NULL));
98bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
99bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
100bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreStringTest, SetValue) {
10121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(GetParam().type(),
10221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      Value::CreateStringValue("http://chromium.org"));
10372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value;
10521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
10672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), &value));
10721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue("http://chromium.org").Equals(value));
108bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
109bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
110bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
111bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreStringTestInstance,
112bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreStringTest,
113bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
11472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyHomepageLocation,
115bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kHomePage),
11672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyApplicationLocaleValue,
1174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kApplicationLocale),
11872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyApplicationLocaleValue,
1194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kApplicationLocale),
1204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyAuthSchemes,
1214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kAuthSchemes),
1224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyAuthServerWhitelist,
1234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kAuthServerWhitelist),
1244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyAuthNegotiateDelegateWhitelist,
1254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kAuthNegotiateDelegateWhitelist),
126ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyDownloadDirectory,
127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kDownloadDefaultDirectory),
1284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyGSSAPILibraryName,
1294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kGSSAPILibraryName)));
130bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
131bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for boolean-valued policy settings.
132bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreBooleanTest
13321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : public ConfigurationPolicyPrefStoreTestBase<
13421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 testing::TestWithParam<TypeAndName> > {
135bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
136bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
137bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreBooleanTest, GetDefault) {
13821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
13972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), NULL));
140bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
141bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
142bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreBooleanTest, SetValue) {
14321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(GetParam().type(), Value::CreateBooleanValue(false));
14472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
145ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value;
146bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = true;
14721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
14872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), &value));
14921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(FundamentalValue(false).Equals(value));
150bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
15121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(GetParam().type(), Value::CreateBooleanValue(true));
15272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
153bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  result = false;
15421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
15572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), &value));
15621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(FundamentalValue(true).Equals(value));
157bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
158bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
159bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
160bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreBooleanTestInstance,
161bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreBooleanTest,
162bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
163513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyHomepageIsNewTabPage,
164bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kHomePageIsNewTabPage),
165513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyAlternateErrorPagesEnabled,
166bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kAlternateErrorPagesEnabled),
167513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicySearchSuggestEnabled,
168bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kSearchSuggestEnabled),
169513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyDnsPrefetchingEnabled,
170ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kNetworkPredictionEnabled),
171513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyDisableSpdy,
172731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                    prefs::kDisableSpdy),
173513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicySafeBrowsingEnabled,
174bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kSafeBrowsingEnabled),
175513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyMetricsReportingEnabled,
176bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kMetricsReportingEnabled),
177513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyPasswordManagerEnabled,
178bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kPasswordManagerEnabled),
179513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyPasswordManagerAllowShowPasswords,
180bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kPasswordManagerAllowShowPasswords),
181513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyShowHomeButton,
182bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kShowHomeButton),
183513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyPrintingEnabled,
184bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kPrintingEnabled),
185513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyJavascriptEnabled,
186731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                    prefs::kWebKitJavascriptEnabled),
18772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyIncognitoEnabled,
18872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                    prefs::kIncognitoEnabled),
18972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyCloudPrintProxyEnabled,
19072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                    prefs::kCloudPrintProxyEnabled),
191513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicySavingBrowserHistoryDisabled,
1924a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kSavingBrowserHistoryDisabled),
1934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicySavingBrowserHistoryDisabled,
1944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kSavingBrowserHistoryDisabled),
1954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyDisableAuthNegotiateCnameLookup,
1964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kDisableAuthNegotiateCnameLookup),
1974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyEnableAuthNegotiatePort,
198ac1e49eb6695f711d72215fcdf9388548942a00dBen Murdoch                    prefs::kEnableAuthNegotiatePort),
19972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyInstantEnabled,
20072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                    prefs::kInstantEnabled),
201ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyDisablePluginFinder,
202ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kDisablePluginFinder),
203ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyClearSiteDataOnExit,
204ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kClearSiteDataOnExit),
205ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyDefaultBrowserSettingEnabled,
206ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kDefaultBrowserSettingEnabled),
207ac1e49eb6695f711d72215fcdf9388548942a00dBen Murdoch        TypeAndName(kPolicyDisable3DAPIs,
208ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kDisable3DAPIs),
209ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyTranslateEnabled,
210ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kEnableTranslate),
211ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyAllowOutdatedPlugins,
212ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kPluginsAllowOutdated),
213ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyBookmarkBarEnabled,
214ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kEnableBookmarkBar),
215ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyEditBookmarksEnabled,
216ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kEditBookmarksEnabled),
217ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        TypeAndName(kPolicyAllowFileSelectionDialogs,
218ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kAllowFileSelectionDialogs)));
219731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
220731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if defined(OS_CHROMEOS)
221731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickINSTANTIATE_TEST_CASE_P(
222731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    CrosConfigurationPolicyPrefStoreBooleanTestInstance,
223731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    ConfigurationPolicyPrefStoreBooleanTest,
224731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    testing::Values(
225513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyChromeOsLockOnIdleSuspend,
226731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                    prefs::kEnableScreenLock)));
227731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif  // defined(OS_CHROMEOS)
228bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
229bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for integer-valued policy settings.
230bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreIntegerTest
23121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : public ConfigurationPolicyPrefStoreTestBase<
23221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                 testing::TestWithParam<TypeAndName> > {
233bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
234bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
235bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreIntegerTest, GetDefault) {
23621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
23772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), NULL));
238bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
239bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
240bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreIntegerTest, SetValue) {
24121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(GetParam().type(), Value::CreateIntegerValue(2));
24272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
243ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
24421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
24572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(GetParam().pref_name(), &value));
24621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(FundamentalValue(2).Equals(value));
247bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
248bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
249bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
250bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreIntegerTestInstance,
251bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreIntegerTest,
252bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
253513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyRestoreOnStartup,
25472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                    prefs::kRestoreOnStartup),
25572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        TypeAndName(kPolicyPolicyRefreshRate,
256ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                    prefs::kPolicyRefreshRate)));
257bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
258bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for the proxy policy settings.
259bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreProxyTest : public testing::Test {
26021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen protected:
26121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // Verify that all the proxy prefs are set to the specified expected values.
26221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  static void VerifyProxyPrefs(
26321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      const ConfigurationPolicyPrefStore& store,
26421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      const std::string& expected_proxy_server,
26521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      const std::string& expected_proxy_pac_url,
26621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      const std::string& expected_proxy_bypass_list,
26721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      const ProxyPrefs::ProxyMode& expected_proxy_mode) {
268ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    const Value* value = NULL;
26972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    ASSERT_EQ(PrefStore::READ_OK,
27072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen              store.GetValue(prefs::kProxy, &value));
27172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    ASSERT_EQ(Value::TYPE_DICTIONARY, value->GetType());
272ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ProxyConfigDictionary dict(static_cast<const DictionaryValue*>(value));
27372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    std::string s;
27421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    if (expected_proxy_server.empty()) {
27572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      EXPECT_FALSE(dict.GetProxyServer(&s));
27621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    } else {
27772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      ASSERT_TRUE(dict.GetProxyServer(&s));
27872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      EXPECT_EQ(expected_proxy_server, s);
27921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    }
28021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    if (expected_proxy_pac_url.empty()) {
28172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      EXPECT_FALSE(dict.GetPacUrl(&s));
28221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    } else {
28372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      ASSERT_TRUE(dict.GetPacUrl(&s));
28472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      EXPECT_EQ(expected_proxy_pac_url, s);
28521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    }
28621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    if (expected_proxy_bypass_list.empty()) {
28772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      EXPECT_FALSE(dict.GetBypassList(&s));
28821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    } else {
28972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      ASSERT_TRUE(dict.GetBypassList(&s));
29072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      EXPECT_EQ(expected_proxy_bypass_list, s);
29121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    }
29272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    ProxyPrefs::ProxyMode mode;
29372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    ASSERT_TRUE(dict.GetMode(&mode));
29472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    EXPECT_EQ(expected_proxy_mode, mode);
29521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  }
296bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
297bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
298731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickTEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptions) {
29921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
30021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyProxyBypassList,
30121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue("http://chromium.org/override"));
30221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyProxyServer,
30321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue("chromium.org"));
30472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(kPolicyProxyServerMode,
30521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateIntegerValue(
30672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                         kPolicyManuallyConfiguredProxyServerMode));
30721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
30872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
30972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
31021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  VerifyProxyPrefs(
31172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      *store, "chromium.org", "", "http://chromium.org/override",
31221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      ProxyPrefs::MODE_FIXED_SERVERS);
313bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
314bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
31521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptionsReversedApplyOrder) {
31621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
31772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(kPolicyProxyServerMode,
31821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateIntegerValue(
31972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                         kPolicyManuallyConfiguredProxyServerMode));
32021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyProxyBypassList,
32121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue("http://chromium.org/override"));
32221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyProxyServer,
32321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue("chromium.org"));
32472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
32572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
32621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  VerifyProxyPrefs(
32772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      *store, "chromium.org", "", "http://chromium.org/override",
32821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      ProxyPrefs::MODE_FIXED_SERVERS);
329bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
330bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
331ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptionsInvalid) {
332ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockConfigurationPolicyProvider provider;
333ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  provider.AddPolicy(kPolicyProxyServerMode,
334ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                     Value::CreateIntegerValue(
335ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                         kPolicyManuallyConfiguredProxyServerMode));
336ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
337ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
338ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
339ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
340ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE, store->GetValue(prefs::kProxy, &value));
341ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
342ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
343ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
34472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxyServerMode) {
34521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
34672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(kPolicyProxyServerMode,
34721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateIntegerValue(kPolicyNoProxyServerMode));
34821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
34972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
35072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
35172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "", "", ProxyPrefs::MODE_DIRECT);
352bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
353bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
35472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxyModeName) {
35521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
35672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(
35772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      kPolicyProxyMode,
35872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      Value::CreateStringValue(ProxyPrefs::kDirectProxyModeName));
35972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
36072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
36172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
36272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "", "", ProxyPrefs::MODE_DIRECT);
36372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
36472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
36572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, AutoDetectProxyServerMode) {
36672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  MockConfigurationPolicyProvider provider;
36772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(
36872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      kPolicyProxyServerMode,
36972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      Value::CreateIntegerValue(kPolicyAutoDetectProxyServerMode));
37021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
37172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
37272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
37372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "", "", ProxyPrefs::MODE_AUTO_DETECT);
37421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
37521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
37672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, AutoDetectProxyModeName) {
37772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  MockConfigurationPolicyProvider provider;
37872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(
37972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      kPolicyProxyMode,
38072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      Value::CreateStringValue(ProxyPrefs::kAutoDetectProxyModeName));
38172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
38272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
38372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
38472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "", "", ProxyPrefs::MODE_AUTO_DETECT);
38572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
38672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
38772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, PacScriptProxyMode) {
38821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
38921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyProxyPacUrl,
39021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue("http://short.org/proxy.pac"));
3913f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  provider.AddPolicy(
3923f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen      kPolicyProxyMode,
39372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      Value::CreateStringValue(ProxyPrefs::kPacScriptProxyModeName));
39421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
39572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
39672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
39772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "http://short.org/proxy.pac", "",
39872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                   ProxyPrefs::MODE_PAC_SCRIPT);
39972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
40072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
401ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, PacScriptProxyModeInvalid) {
402ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockConfigurationPolicyProvider provider;
403ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  provider.AddPolicy(
404ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      kPolicyProxyMode,
405ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      Value::CreateStringValue(ProxyPrefs::kPacScriptProxyModeName));
406ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
407ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
408ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
409ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
410ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE, store->GetValue(prefs::kProxy, &value));
411ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
412ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
413ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Regression test for http://crbug.com/78016, CPanel returns empty strings
414ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// for unset properties.
415ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, PacScriptProxyModeBug78016) {
416ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockConfigurationPolicyProvider provider;
417ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  provider.AddPolicy(kPolicyProxyServer,
418ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                     Value::CreateStringValue(""));
419ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  provider.AddPolicy(kPolicyProxyPacUrl,
420ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                     Value::CreateStringValue("http://short.org/proxy.pac"));
421ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  provider.AddPolicy(
422ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      kPolicyProxyMode,
423ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      Value::CreateStringValue(ProxyPrefs::kPacScriptProxyModeName));
424ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
425ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
426ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
427ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  VerifyProxyPrefs(*store, "", "http://short.org/proxy.pac", "",
428ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                   ProxyPrefs::MODE_PAC_SCRIPT);
429ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
430ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
43172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystemProxyServerMode) {
43272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  MockConfigurationPolicyProvider provider;
43372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(
43472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      kPolicyProxyServerMode,
43572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      Value::CreateIntegerValue(kPolicyUseSystemProxyServerMode));
43672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
43772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
43872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
43972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "", "", ProxyPrefs::MODE_SYSTEM);
440bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
441bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
44272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystemProxyMode) {
44321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
44472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(
44572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      kPolicyProxyMode,
44672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      Value::CreateStringValue(ProxyPrefs::kSystemProxyModeName));
44721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
44872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
44972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
45072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "", "", ProxyPrefs::MODE_SYSTEM);
45172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
45272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
45372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest,
45472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen       ProxyModeOverridesProxyServerMode) {
45572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  MockConfigurationPolicyProvider provider;
45672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(kPolicyProxyServerMode,
45772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                     Value::CreateIntegerValue(kPolicyNoProxyServerMode));
45872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider.AddPolicy(
45972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      kPolicyProxyMode,
46072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      Value::CreateStringValue(ProxyPrefs::kAutoDetectProxyModeName));
46172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
46272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
46372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
46472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  VerifyProxyPrefs(*store, "", "", "", ProxyPrefs::MODE_AUTO_DETECT);
465bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
466bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
46721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, ProxyInvalid) {
46821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  for (int i = 0; i < MODE_COUNT; ++i) {
46921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    MockConfigurationPolicyProvider provider;
47072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    provider.AddPolicy(kPolicyProxyServerMode, Value::CreateIntegerValue(i));
47121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    // No mode expects all three parameters being set.
47221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    provider.AddPolicy(kPolicyProxyPacUrl,
47321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       Value::CreateStringValue("http://short.org/proxy.pac"));
47421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    provider.AddPolicy(kPolicyProxyBypassList,
47521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       Value::CreateStringValue(
47621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                           "http://chromium.org/override"));
47721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    provider.AddPolicy(kPolicyProxyServer,
47821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                       Value::CreateStringValue("chromium.org"));
47921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
48072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    scoped_refptr<ConfigurationPolicyPrefStore> store(
48172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen        new ConfigurationPolicyPrefStore(&provider));
482ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    const Value* value = NULL;
48321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    EXPECT_EQ(PrefStore::READ_NO_VALUE,
48472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen              store->GetValue(prefs::kProxy, &value));
48521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  }
486bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
487bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
488bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreDefaultSearchTest : public testing::Test {
489bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
490bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
491bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that if the policy for default search is valid, i.e. there's a
492bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// search URL, that all the elements have been given proper defaults.
493bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MinimallyDefined) {
494513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const search_url = "http://test.com/search?t={searchTerms}";
49521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
49621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderEnabled,
49721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateBooleanValue(true));
49821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderSearchURL,
49921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(search_url));
50021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
50172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
50272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
50321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
504ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
50521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
50672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSearchURL, &value));
50721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(search_url).Equals(value));
50821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
50921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
51072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderName, &value));
51121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue("test.com").Equals(value));
51221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
51321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
51472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderKeyword, &value));
51572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_TRUE(StringValue(std::string()).Equals(value));
51672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
51772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
51872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSuggestURL, &value));
51921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(std::string()).Equals(value));
52021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
52121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
52272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderIconURL, &value));
52321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(std::string()).Equals(value));
52421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
52521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
52672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderEncodings, &value));
52721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(std::string()).Equals(value));
52821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
52921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
53072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderInstantURL, &value));
53121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(std::string()).Equals(value));
532bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
533bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
534bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that for a fully defined search policy, all elements have been
535bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// read properly.
536bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, FullyDefined) {
537513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const search_url = "http://test.com/search?t={searchTerms}";
538513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const suggest_url = "http://test.com/sugg?={searchTerms}";
539513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const icon_url = "http://test.com/icon.jpg";
540513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const name = "MyName";
541513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const keyword = "MyKeyword";
542513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const encodings = "UTF-16;UTF-8";
54321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
54421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderEnabled,
54521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateBooleanValue(true));
54621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderSearchURL,
54721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(search_url));
54821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderName,
54921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(name));
55021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderKeyword,
55121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(keyword));
55221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderSuggestURL,
55321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(suggest_url));
55421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderIconURL,
55521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(icon_url));
55621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderEncodings,
55721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(encodings));
55821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
55972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
56072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
56121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
562ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
56321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
56472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSearchURL, &value));
56521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(search_url).Equals(value));
56621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
56721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
56872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderName, &value));
56921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(name).Equals(value));
57021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
57121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
57272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderKeyword, &value));
57321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(keyword).Equals(value));
57421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
57521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
57672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSuggestURL, &value));
57721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(suggest_url).Equals(value));
57821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
57921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
58072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderIconURL, &value));
58121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(icon_url).Equals(value));
58221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
58321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
58472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderEncodings, &value));
58521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue(encodings).Equals(value));
586bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
587bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
588bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that if the default search policy is missing, that no elements of the
589bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// default search policy will be present.
590bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MissingUrl) {
591513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const suggest_url = "http://test.com/sugg?t={searchTerms}";
592513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const icon_url = "http://test.com/icon.jpg";
593513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const name = "MyName";
594513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const keyword = "MyKeyword";
595513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const encodings = "UTF-16;UTF-8";
59621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
59721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderEnabled,
59821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateBooleanValue(true));
59921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderName,
60021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(name));
60121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderKeyword,
60221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(keyword));
60321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderSuggestURL,
60421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(suggest_url));
60521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderIconURL,
60621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(icon_url));
60721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderEncodings,
60821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(encodings));
60921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
61072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
61172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
61221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
61321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
61472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSearchURL, NULL));
61521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
61672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderName, NULL));
61721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
61872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderKeyword, NULL));
61921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
62072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSuggestURL, NULL));
62121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
62272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderIconURL, NULL));
62321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
62472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderEncodings, NULL));
625bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
626bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
627bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that if the default search policy is invalid, that no elements of the
628bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// default search policy will be present.
629bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, Invalid) {
630513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const bad_search_url = "http://test.com/noSearchTerms";
631513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const suggest_url = "http://test.com/sugg?t={searchTerms}";
632513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const icon_url = "http://test.com/icon.jpg";
633513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const name = "MyName";
634513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const keyword = "MyKeyword";
635513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const encodings = "UTF-16;UTF-8";
63621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  MockConfigurationPolicyProvider provider;
63721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderEnabled,
63821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateBooleanValue(true));
63921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderSearchURL,
64021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(bad_search_url));
64121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderName,
64221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(name));
64321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderKeyword,
64421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(keyword));
64521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderSuggestURL,
64621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(suggest_url));
64721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderIconURL,
64821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(icon_url));
64921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider.AddPolicy(kPolicyDefaultSearchProviderEncodings,
65021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                     Value::CreateStringValue(encodings));
65121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
65272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  scoped_refptr<ConfigurationPolicyPrefStore> store(
65372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      new ConfigurationPolicyPrefStore(&provider));
65421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
65521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
65672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSearchURL, NULL));
65721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
65872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderName, NULL));
65921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
66072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderKeyword, NULL));
66121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
66272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderSuggestURL, NULL));
66321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
66472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderIconURL, NULL));
66521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
66672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store->GetValue(prefs::kDefaultSearchProviderEncodings, NULL));
667bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
668bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
669bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for the Sync policy setting.
67021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass ConfigurationPolicyPrefStoreSyncTest
67121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : public ConfigurationPolicyPrefStoreTestBase<testing::Test> {
672bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
673bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
674bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreSyncTest, Default) {
67521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
67672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(prefs::kSyncManaged, NULL));
677bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
678bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
679bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreSyncTest, Enabled) {
68021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(kPolicySyncDisabled, Value::CreateBooleanValue(false));
68172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
682bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Enabling Sync should not set the pref.
68321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
68472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(prefs::kSyncManaged, NULL));
685bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
686bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
687bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreSyncTest, Disabled) {
68821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(kPolicySyncDisabled, Value::CreateBooleanValue(true));
68972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
690bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Sync should be flagged as managed.
691ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
69272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_EQ(PrefStore::READ_OK, store_->GetValue(prefs::kSyncManaged, &value));
69321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  ASSERT_TRUE(value != NULL);
69421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(FundamentalValue(true).Equals(value));
695bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
696bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
697ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Test cases for the Autofill policy setting.
698ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ConfigurationPolicyPrefStoreAutofillTest
69921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : public ConfigurationPolicyPrefStoreTestBase<testing::Test> {
700bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
701bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
702ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreAutofillTest, Default) {
70321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
70472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(prefs::kSyncManaged, NULL));
705bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
706bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
707ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreAutofillTest, Enabled) {
70821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(kPolicyAutoFillEnabled, Value::CreateBooleanValue(true));
70972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
710ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Enabling Autofill should not set the pref.
71121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
71272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(prefs::kSyncManaged, NULL));
713bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
714bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
715ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreAutofillTest, Disabled) {
71621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.AddPolicy(kPolicyAutoFillEnabled, Value::CreateBooleanValue(false));
71772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
718ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Disabling Autofill should switch the pref to managed.
719ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
72021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
721ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen            store_->GetValue(prefs::kAutofillEnabled, &value));
72221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(FundamentalValue(false).Equals(value));
72321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
72421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
72521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Exercises the policy refresh mechanism.
72621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass ConfigurationPolicyPrefStoreRefreshTest
72721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen    : public ConfigurationPolicyPrefStoreTestBase<testing::Test> {
72821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen protected:
72921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual void SetUp() {
73072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    store_->AddObserver(&observer_);
73121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  }
73221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
73321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual void TearDown() {
73472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    store_->RemoveObserver(&observer_);
73521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  }
73621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
73721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  PrefStoreObserverMock observer_;
73821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen};
73921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
74021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(ConfigurationPolicyPrefStoreRefreshTest, Refresh) {
741ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const Value* value = NULL;
74221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
74372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(prefs::kHomePage, NULL));
74421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
74521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_CALL(observer_, OnPrefValueChanged(prefs::kHomePage)).Times(1);
74672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider_.AddPolicy(kPolicyHomepageLocation,
74721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen                      Value::CreateStringValue("http://www.chromium.org"));
74872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
74921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  Mock::VerifyAndClearExpectations(&observer_);
75021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_OK,
75172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(prefs::kHomePage, &value));
75221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_TRUE(StringValue("http://www.chromium.org").Equals(value));
75321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
75421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_CALL(observer_, OnPrefValueChanged(_)).Times(0);
75572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
75621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  Mock::VerifyAndClearExpectations(&observer_);
75721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
75821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_CALL(observer_, OnPrefValueChanged(prefs::kHomePage)).Times(1);
75972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  provider_.RemovePolicy(kPolicyHomepageLocation);
76072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
76121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  Mock::VerifyAndClearExpectations(&observer_);
76221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_EQ(PrefStore::READ_NO_VALUE,
76372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen            store_->GetValue(prefs::kHomePage, NULL));
76421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
76521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
76621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(ConfigurationPolicyPrefStoreRefreshTest, Initialization) {
76772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_FALSE(store_->IsInitializationComplete());
76821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
76921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  EXPECT_CALL(observer_, OnInitializationCompleted()).Times(1);
77021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
77121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  provider_.SetInitializationComplete(true);
77272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_FALSE(store_->IsInitializationComplete());
77321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
77472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  store_->OnUpdatePolicy();
77521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  Mock::VerifyAndClearExpectations(&observer_);
77672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  EXPECT_TRUE(store_->IsInitializationComplete());
777bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
778bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
779bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}  // namespace policy
780