summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/policy/asynchronous_policy_loader_unittest.cc1
-rw-r--r--chrome/browser/policy/asynchronous_policy_provider.cc7
-rw-r--r--chrome/browser/policy/asynchronous_policy_provider.h2
-rw-r--r--chrome/browser/policy/asynchronous_policy_provider_unittest.cc16
-rw-r--r--chrome/browser/policy/asynchronous_policy_test_base.cc3
-rw-r--r--chrome/browser/policy/asynchronous_policy_test_base.h5
-rw-r--r--chrome/browser/policy/cloud_policy_provider_impl.cc5
-rw-r--r--chrome/browser/policy/cloud_policy_provider_impl.h2
-rw-r--r--chrome/browser/policy/cloud_policy_provider_unittest.cc20
-rw-r--r--chrome/browser/policy/config_dir_policy_provider_unittest.cc20
-rw-r--r--chrome/browser/policy/configuration_policy_pref_store.cc53
-rw-r--r--chrome/browser/policy/configuration_policy_pref_store.h19
-rw-r--r--chrome/browser/policy/configuration_policy_provider.cc16
-rw-r--r--chrome/browser/policy/configuration_policy_provider.h24
-rw-r--r--chrome/browser/policy/configuration_policy_provider_mac.h1
-rw-r--r--chrome/browser/policy/configuration_policy_provider_mac_unittest.cc25
-rw-r--r--chrome/browser/policy/configuration_policy_provider_win_unittest.cc28
-rw-r--r--chrome/browser/policy/configuration_policy_reader.cc88
-rw-r--r--chrome/browser/policy/configuration_policy_store_interface.h56
-rw-r--r--chrome/browser/policy/dummy_cloud_policy_provider.cc3
-rw-r--r--chrome/browser/policy/dummy_cloud_policy_provider.h2
-rw-r--r--chrome/browser/policy/dummy_configuration_policy_provider.cc3
-rw-r--r--chrome/browser/policy/dummy_configuration_policy_provider.h2
-rw-r--r--chrome/browser/policy/file_based_policy_provider_unittest.cc16
-rw-r--r--chrome/browser/policy/mock_configuration_policy_provider.cc10
-rw-r--r--chrome/browser/policy/mock_configuration_policy_provider.h4
-rw-r--r--chrome/browser/policy/mock_configuration_policy_store.cc29
-rw-r--r--chrome/browser/policy/mock_configuration_policy_store.h44
-rw-r--r--chrome/browser/policy/policy_map.cc7
-rw-r--r--chrome/browser/policy/policy_map.h1
-rw-r--r--chrome/browser/policy/user_policy_cache.cc20
-rw-r--r--chrome/chrome_tests.gypi2
32 files changed, 197 insertions, 337 deletions
diff --git a/chrome/browser/policy/asynchronous_policy_loader_unittest.cc b/chrome/browser/policy/asynchronous_policy_loader_unittest.cc
index b3e4534..44ab3c2 100644
--- a/chrome/browser/policy/asynchronous_policy_loader_unittest.cc
+++ b/chrome/browser/policy/asynchronous_policy_loader_unittest.cc
@@ -6,7 +6,6 @@
#include "chrome/browser/policy/asynchronous_policy_provider.h"
#include "chrome/browser/policy/asynchronous_policy_test_base.h"
#include "chrome/browser/policy/mock_configuration_policy_provider.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
#include "testing/gmock/include/gmock/gmock.h"
using ::testing::_;
diff --git a/chrome/browser/policy/asynchronous_policy_provider.cc b/chrome/browser/policy/asynchronous_policy_provider.cc
index 9b050ad..38b00e5 100644
--- a/chrome/browser/policy/asynchronous_policy_provider.cc
+++ b/chrome/browser/policy/asynchronous_policy_provider.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -21,11 +21,10 @@ AsynchronousPolicyProvider::~AsynchronousPolicyProvider() {
loader_->Stop();
}
-bool AsynchronousPolicyProvider::Provide(
- ConfigurationPolicyStoreInterface* store) {
+bool AsynchronousPolicyProvider::Provide(PolicyMap* map) {
DCHECK(CalledOnValidThread());
DCHECK(loader_->policy());
- ApplyPolicyValueTree(loader_->policy(), store);
+ ApplyPolicyValueTree(loader_->policy(), map);
return true;
}
diff --git a/chrome/browser/policy/asynchronous_policy_provider.h b/chrome/browser/policy/asynchronous_policy_provider.h
index c030972..3c15a74 100644
--- a/chrome/browser/policy/asynchronous_policy_provider.h
+++ b/chrome/browser/policy/asynchronous_policy_provider.h
@@ -39,7 +39,7 @@ class AsynchronousPolicyProvider
virtual ~AsynchronousPolicyProvider();
// ConfigurationPolicyProvider implementation.
- virtual bool Provide(ConfigurationPolicyStoreInterface* store);
+ virtual bool Provide(PolicyMap* map);
// For tests to trigger reloads.
scoped_refptr<AsynchronousPolicyLoader> loader();
diff --git a/chrome/browser/policy/asynchronous_policy_provider_unittest.cc b/chrome/browser/policy/asynchronous_policy_provider_unittest.cc
index 9d186b8..c078bf0 100644
--- a/chrome/browser/policy/asynchronous_policy_provider_unittest.cc
+++ b/chrome/browser/policy/asynchronous_policy_provider_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,7 +6,6 @@
#include "chrome/browser/policy/asynchronous_policy_provider.h"
#include "chrome/browser/policy/asynchronous_policy_test_base.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
#include "policy/policy_constants.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -23,11 +22,13 @@ TEST_F(AsynchronousPolicyTestBase, Provide) {
DictionaryValue* policies = new DictionaryValue();
policies->SetBoolean(policy::key::kSyncDisabled, true);
EXPECT_CALL(*delegate_, Load()).WillOnce(Return(policies));
- EXPECT_CALL(*store_, Apply(policy::kPolicySyncDisabled, _)).Times(1);
AsynchronousPolicyProvider provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
new AsynchronousPolicyLoader(delegate_.release(), 10));
- provider.Provide(store_.get());
+ PolicyMap policy_map;
+ provider.Provide(&policy_map);
+ EXPECT_TRUE(policy_map.Get(policy::kPolicySyncDisabled));
+ EXPECT_EQ(1U, policy_map.size());
}
@@ -49,9 +50,10 @@ TEST_F(AsynchronousPolicyTestBase, ProvideAfterRefresh) {
loader);
loop_.RunAllPending();
loader->Reload();
- loop_.RunAllPending();
- EXPECT_CALL(*store_, Apply(policy::kPolicyJavascriptEnabled, _)).Times(1);
- provider.Provide(store_.get());
+ PolicyMap policy_map;
+ provider.Provide(&policy_map);
+ EXPECT_TRUE(policy_map.Get(policy::kPolicySyncDisabled));
+ EXPECT_EQ(1U, policy_map.size());
}
} // namespace policy
diff --git a/chrome/browser/policy/asynchronous_policy_test_base.cc b/chrome/browser/policy/asynchronous_policy_test_base.cc
index eadf41f..c7d9490 100644
--- a/chrome/browser/policy/asynchronous_policy_test_base.cc
+++ b/chrome/browser/policy/asynchronous_policy_test_base.cc
@@ -4,8 +4,6 @@
#include "chrome/browser/policy/asynchronous_policy_test_base.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
-
namespace policy {
ProviderDelegateMock::ProviderDelegateMock()
@@ -21,7 +19,6 @@ AsynchronousPolicyTestBase::~AsynchronousPolicyTestBase() {}
void AsynchronousPolicyTestBase::SetUp() {
delegate_.reset(new ProviderDelegateMock());
- store_.reset(new MockConfigurationPolicyStore);
}
void AsynchronousPolicyTestBase::TearDown() {
diff --git a/chrome/browser/policy/asynchronous_policy_test_base.h b/chrome/browser/policy/asynchronous_policy_test_base.h
index a393852..4737261 100644
--- a/chrome/browser/policy/asynchronous_policy_test_base.h
+++ b/chrome/browser/policy/asynchronous_policy_test_base.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -14,8 +14,6 @@
namespace policy {
-class MockConfigurationPolicyStore;
-
// A delegate for testing that can feed arbitrary information to the loader.
class ProviderDelegateMock : public AsynchronousPolicyProvider::Delegate {
public:
@@ -42,7 +40,6 @@ class AsynchronousPolicyTestBase : public testing::Test {
// The mocks that are used in the test must outlive the scope of the test
// because they still get accessed in the RunAllPending of the TearDown.
- scoped_ptr<MockConfigurationPolicyStore> store_;
scoped_ptr<ProviderDelegateMock> delegate_;
private:
diff --git a/chrome/browser/policy/cloud_policy_provider_impl.cc b/chrome/browser/policy/cloud_policy_provider_impl.cc
index 1ec3f71..ddec786 100644
--- a/chrome/browser/policy/cloud_policy_provider_impl.cc
+++ b/chrome/browser/policy/cloud_policy_provider_impl.cc
@@ -26,9 +26,8 @@ CloudPolicyProviderImpl::~CloudPolicyProviderImpl() {
observer_list_, OnProviderGoingAway());
}
-bool CloudPolicyProviderImpl::Provide(
- ConfigurationPolicyStoreInterface* store) {
- ApplyPolicyMap(&combined_, store);
+bool CloudPolicyProviderImpl::Provide(PolicyMap* result) {
+ result->CopyFrom(combined_);
return true;
}
diff --git a/chrome/browser/policy/cloud_policy_provider_impl.h b/chrome/browser/policy/cloud_policy_provider_impl.h
index 4ebfe4d..ed1d33a 100644
--- a/chrome/browser/policy/cloud_policy_provider_impl.h
+++ b/chrome/browser/policy/cloud_policy_provider_impl.h
@@ -21,7 +21,7 @@ class CloudPolicyProviderImpl : public CloudPolicyProvider,
virtual ~CloudPolicyProviderImpl();
// ConfigurationPolicyProvider implementation.
- virtual bool Provide(ConfigurationPolicyStoreInterface* store) OVERRIDE;
+ virtual bool Provide(PolicyMap* result) OVERRIDE;
virtual bool IsInitializationComplete() const OVERRIDE;
virtual void AddObserver(ConfigurationPolicyProvider::Observer* observer)
OVERRIDE;
diff --git a/chrome/browser/policy/cloud_policy_provider_unittest.cc b/chrome/browser/policy/cloud_policy_provider_unittest.cc
index f8f8768..11454f1 100644
--- a/chrome/browser/policy/cloud_policy_provider_unittest.cc
+++ b/chrome/browser/policy/cloud_policy_provider_unittest.cc
@@ -9,7 +9,6 @@
#include "chrome/browser/policy/cloud_policy_cache_base.h"
#include "chrome/browser/policy/cloud_policy_provider_impl.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
#include "testing/gmock/include/gmock/gmock.h"
using testing::AnyNumber;
@@ -63,33 +62,32 @@ class CloudPolicyProviderTest : public testing::Test {
}
// Appends the caches to a provider and then provides the policies to
- // |store_|.
+ // |policy_map_|.
void RunCachesThroughProvider(MockCloudPolicyCache caches[], int n,
CloudPolicyCacheBase::PolicyLevel level) {
- store_.reset(new MockConfigurationPolicyStore);
CloudPolicyProviderImpl provider(
policy::ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
level);
for (int i = 0; i < n; i++) {
provider.AppendCache(&caches[i]);
}
- EXPECT_CALL(*store_.get(), Apply(_, _)).Times(AnyNumber());
- provider.Provide(store_.get());
+ policy_map_.reset(new PolicyMap());
+ provider.Provide(policy_map_.get());
}
- // Checks a string policy in |store_|.
+ // Checks a string policy in |policy_map_|.
void ExpectStringPolicy(const std::string& expected,
ConfigurationPolicyType type) {
- const Value* value = store_->Get(type);
+ const Value* value = policy_map_->Get(type);
std::string string_value;
ASSERT_TRUE(value != NULL);
EXPECT_TRUE(value->GetAsString(&string_value));
EXPECT_EQ(expected, string_value);
}
- // Checks a boolean policy in |store_|.
+ // Checks a boolean policy in |policy_map_|.
void ExpectBoolPolicy(bool expected, ConfigurationPolicyType type) {
- const Value* value = store_->Get(type);
+ const Value* value = policy_map_->Get(type);
bool bool_value;
ASSERT_TRUE(value != NULL);
EXPECT_TRUE(value->GetAsBoolean(&bool_value));
@@ -97,7 +95,7 @@ class CloudPolicyProviderTest : public testing::Test {
}
void ExpectNoPolicy(ConfigurationPolicyType type) {
- EXPECT_TRUE(NULL == store_->Get(type));
+ EXPECT_TRUE(NULL == policy_map_->Get(type));
}
void CombineTwoPolicyMaps(const PolicyMap& base,
@@ -114,7 +112,7 @@ class CloudPolicyProviderTest : public testing::Test {
static const ConfigurationPolicyType simple_policies[];
scoped_ptr<CloudPolicyProviderImpl> cloud_policy_provider_;
- scoped_ptr<MockConfigurationPolicyStore> store_;
+ scoped_ptr<PolicyMap> policy_map_;
};
// Proxy setting distributed over multiple caches.
diff --git a/chrome/browser/policy/config_dir_policy_provider_unittest.cc b/chrome/browser/policy/config_dir_policy_provider_unittest.cc
index 629a635..0b3b32c 100644
--- a/chrome/browser/policy/config_dir_policy_provider_unittest.cc
+++ b/chrome/browser/policy/config_dir_policy_provider_unittest.cc
@@ -10,7 +10,6 @@
#include "base/string_number_conversions.h"
#include "chrome/browser/policy/config_dir_policy_provider.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
#include "content/browser/browser_thread.h"
#include "content/common/json_value_serializer.h"
#include "policy/policy_constants.h"
@@ -179,8 +178,6 @@ class ConfigDirPolicyProviderValueTest
loop_.RunAllPending();
}
- MockConfigurationPolicyStore policy_store_;
-
private:
MessageLoop loop_;
BrowserThread ui_thread_;
@@ -191,8 +188,9 @@ TEST_P(ConfigDirPolicyProviderValueTest, Default) {
ConfigDirPolicyProvider provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
test_dir());
- EXPECT_TRUE(provider.Provide(&policy_store_));
- EXPECT_TRUE(policy_store_.policy_map().empty());
+ PolicyMap policy_map;
+ EXPECT_TRUE(provider.Provide(&policy_map));
+ EXPECT_TRUE(policy_map.empty());
}
TEST_P(ConfigDirPolicyProviderValueTest, NullValue) {
@@ -202,8 +200,9 @@ TEST_P(ConfigDirPolicyProviderValueTest, NullValue) {
ConfigDirPolicyProvider provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
test_dir());
- EXPECT_TRUE(provider.Provide(&policy_store_));
- EXPECT_TRUE(policy_store_.policy_map().empty());
+ PolicyMap policy_map;
+ EXPECT_TRUE(provider.Provide(&policy_map));
+ EXPECT_TRUE(policy_map.empty());
}
TEST_P(ConfigDirPolicyProviderValueTest, TestValue) {
@@ -213,9 +212,10 @@ TEST_P(ConfigDirPolicyProviderValueTest, TestValue) {
ConfigDirPolicyProvider provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
test_dir());
- EXPECT_TRUE(provider.Provide(&policy_store_));
- EXPECT_EQ(1U, policy_store_.policy_map().size());
- const Value* value = policy_store_.Get(GetParam().type());
+ PolicyMap policy_map;
+ EXPECT_TRUE(provider.Provide(&policy_map));
+ EXPECT_EQ(1U, policy_map.size());
+ const Value* value = policy_map.Get(GetParam().type());
ASSERT_TRUE(value);
EXPECT_TRUE(GetParam().test_value()->Equals(value));
}
diff --git a/chrome/browser/policy/configuration_policy_pref_store.cc b/chrome/browser/policy/configuration_policy_pref_store.cc
index 2a99298..65011dd 100644
--- a/chrome/browser/policy/configuration_policy_pref_store.cc
+++ b/chrome/browser/policy/configuration_policy_pref_store.cc
@@ -35,8 +35,7 @@ namespace policy {
// Accepts policy settings from a ConfigurationPolicyProvider, converts them
// to preferences and caches the result.
-class ConfigurationPolicyPrefKeeper
- : private ConfigurationPolicyStoreInterface {
+class ConfigurationPolicyPrefKeeper {
public:
explicit ConfigurationPolicyPrefKeeper(ConfigurationPolicyProvider* provider);
virtual ~ConfigurationPolicyPrefKeeper();
@@ -51,8 +50,8 @@ class ConfigurationPolicyPrefKeeper
std::vector<std::string>* differing_prefs) const;
private:
- // ConfigurationPolicyStore methods:
- virtual void Apply(ConfigurationPolicyType setting, Value* value);
+ // Apply the policy settings stored in |policies|.
+ void Apply(PolicyMap* policies);
// Policies that map to a single preference are handled
// by an automated converter. Each one of these policies
@@ -351,8 +350,11 @@ const ConfigurationPolicyPrefKeeper::PolicyToPreferenceMapEntry
ConfigurationPolicyPrefKeeper::ConfigurationPolicyPrefKeeper(
ConfigurationPolicyProvider* provider) {
- if (!provider->Provide(this))
+ scoped_ptr<PolicyMap> policies(new PolicyMap());
+ if (!provider->Provide(policies.get()))
LOG(WARNING) << "Failed to get policy from provider.";
+
+ Apply(policies.get());
FinalizeProxyPolicySettings();
FinalizeDefaultSearchPolicySettings();
FinalizeIncognitoModeSettings();
@@ -385,24 +387,31 @@ void ConfigurationPolicyPrefKeeper::GetDifferingPrefPaths(
prefs_.GetDifferingKeys(&other->prefs_, differing_prefs);
}
-void ConfigurationPolicyPrefKeeper::Apply(ConfigurationPolicyType policy,
- Value* value) {
- if (ApplyProxyPolicy(policy, value) ||
- ApplySyncPolicy(policy, value) ||
- ApplyAutofillPolicy(policy, value) ||
- ApplyDownloadDirPolicy(policy, value) ||
- ApplyDiskCacheDirPolicy(policy, value) ||
- ApplyFileSelectionDialogsPolicy(policy, value) ||
- ApplyDefaultSearchPolicy(policy, value) ||
- ApplyIncognitoModePolicy(policy, value) ||
- ApplyBookmarksPolicy(policy, value) ||
- ApplyPolicyFromMap(policy, value, kSimplePolicyMap,
- arraysize(kSimplePolicyMap)))
- return;
+void ConfigurationPolicyPrefKeeper::Apply(PolicyMap* policies) {
+ PolicyMap::const_iterator current = policies->begin();
+ for ( ; current != policies->end(); ++current) {
+ // TODO(simo) Use a separate ConfigurationPolicyHandler class to apply
+ // policy settings.
+ Value* value = current->second->DeepCopy();
+ if (ApplyProxyPolicy(current->first, value) ||
+ ApplySyncPolicy(current->first, value) ||
+ ApplyAutofillPolicy(current->first, value) ||
+ ApplyDownloadDirPolicy(current->first, value) ||
+ ApplyDiskCacheDirPolicy(current->first, value) ||
+ ApplyFileSelectionDialogsPolicy(current->first,
+ value) ||
+ ApplyDefaultSearchPolicy(current->first, value) ||
+ ApplyIncognitoModePolicy(current->first, value) ||
+ ApplyBookmarksPolicy(current->first, value) ||
+ ApplyPolicyFromMap(current->first, value,
+ kSimplePolicyMap, arraysize(kSimplePolicyMap))) {
+ continue;
+ }
+ delete value;
- // Other policy implementations go here.
- NOTIMPLEMENTED();
- delete value;
+ // Other policy implementations should go into the conditional above.
+ NOTIMPLEMENTED();
+ }
}
bool ConfigurationPolicyPrefKeeper::RemovePreferencesOfMap(
diff --git a/chrome/browser/policy/configuration_policy_pref_store.h b/chrome/browser/policy/configuration_policy_pref_store.h
index 1d24b82..1ac47db 100644
--- a/chrome/browser/policy/configuration_policy_pref_store.h
+++ b/chrome/browser/policy/configuration_policy_pref_store.h
@@ -14,13 +14,30 @@
#include "base/observer_list.h"
#include "base/values.h"
#include "chrome/browser/policy/configuration_policy_provider.h"
-#include "chrome/browser/policy/configuration_policy_store_interface.h"
#include "chrome/common/pref_store.h"
namespace policy {
class ConfigurationPolicyPrefKeeper;
+// Constants for the "Proxy Server Mode" defined in the policies.
+// Note that these diverge from internal presentation defined in
+// ProxyPrefs::ProxyMode for legacy reasons. The following four
+// PolicyProxyModeType types were not very precise and had overlapping use
+// cases.
+enum PolicyProxyModeType {
+ // Disable Proxy, connect directly.
+ kPolicyNoProxyServerMode = 0,
+ // Auto detect proxy or use specific PAC script if given.
+ kPolicyAutoDetectProxyServerMode = 1,
+ // Use manually configured proxy servers (fixed servers).
+ kPolicyManuallyConfiguredProxyServerMode = 2,
+ // Use system proxy server.
+ kPolicyUseSystemProxyServerMode = 3,
+
+ MODE_COUNT
+};
+
// An implementation of PrefStore that bridges policy settings as read from a
// ConfigurationPolicyProvider to preferences.
class ConfigurationPolicyPrefStore
diff --git a/chrome/browser/policy/configuration_policy_provider.cc b/chrome/browser/policy/configuration_policy_provider.cc
index 3f8e3fd..1c9e80d 100644
--- a/chrome/browser/policy/configuration_policy_provider.cc
+++ b/chrome/browser/policy/configuration_policy_provider.cc
@@ -24,31 +24,19 @@ bool ConfigurationPolicyProvider::IsInitializationComplete() const {
void ConfigurationPolicyProvider::ApplyPolicyValueTree(
const DictionaryValue* policies,
- ConfigurationPolicyStoreInterface* store) {
+ PolicyMap* result) {
const PolicyDefinitionList* policy_list(policy_definition_list());
for (const PolicyDefinitionList::Entry* i = policy_list->begin;
i != policy_list->end; ++i) {
Value* value;
if (policies->Get(i->name, &value) && value->IsType(i->value_type))
- store->Apply(i->policy_type, value->DeepCopy());
+ result->Set(i->policy_type, value->DeepCopy());
}
// TODO(mnissler): Handle preference overrides once |ConfigurationPolicyStore|
// supports it.
}
-void ConfigurationPolicyProvider::ApplyPolicyMap(
- const PolicyMap* policies,
- ConfigurationPolicyStoreInterface* store) {
- const PolicyDefinitionList* policy_list(policy_definition_list());
- for (const PolicyDefinitionList::Entry* i = policy_list->begin;
- i != policy_list->end; ++i) {
- const Value* value = policies->Get(i->policy_type);
- if (value && value->IsType(i->value_type))
- store->Apply(i->policy_type, value->DeepCopy());
- }
-}
-
// Class ConfigurationPolicyObserverRegistrar.
ConfigurationPolicyObserverRegistrar::ConfigurationPolicyObserverRegistrar()
diff --git a/chrome/browser/policy/configuration_policy_provider.h b/chrome/browser/policy/configuration_policy_provider.h
index 27b5472..1f21899 100644
--- a/chrome/browser/policy/configuration_policy_provider.h
+++ b/chrome/browser/policy/configuration_policy_provider.h
@@ -12,7 +12,7 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "base/values.h"
-#include "chrome/browser/policy/configuration_policy_store_interface.h"
+#include "chrome/browser/policy/policy_map.h"
#include "policy/configuration_policy_type.h"
namespace policy {
@@ -49,12 +49,12 @@ class ConfigurationPolicyProvider {
virtual ~ConfigurationPolicyProvider();
// Must be implemented by provider subclasses to specify the provider-specific
- // policy decisions. The preference service invokes this |Provide| method when
- // it needs a policy provider to specify its policy choices. In |Provide|, the
- // |ConfigurationPolicyProvider| must make calls to the |Apply| method of
- // |store| to apply specific policies. Returns true if the policy could be
- // provided, otherwise false.
- virtual bool Provide(ConfigurationPolicyStoreInterface* store) = 0;
+ // policy decisions. The ConfigurationPolicyPrefStore invokes this |Provide|
+ // method when it needs a policy provider to specify its policy choices. In
+ // |Provide|, the |ConfigurationPolicyProvider| fills the given |result| with
+ // policy values. Returns true if the policy could be provided and false
+ // otherwise.
+ virtual bool Provide(PolicyMap* result) = 0;
// Check whether this provider has completed initialization. This is used to
// detect whether initialization is done in case providers implementations
@@ -62,14 +62,8 @@ class ConfigurationPolicyProvider {
virtual bool IsInitializationComplete() const;
protected:
- // Decodes the value tree and writes the configuration to the given |store|.
- void ApplyPolicyValueTree(const DictionaryValue* policies,
- ConfigurationPolicyStoreInterface* store);
-
- // Writes the configuration found in the already-decoded map |policies| to
- // the given |store|.
- void ApplyPolicyMap(const PolicyMap* policies,
- ConfigurationPolicyStoreInterface* store);
+ // Decodes the value tree and writes the configuration to |result|.
+ void ApplyPolicyValueTree(const DictionaryValue* policies, PolicyMap* result);
const PolicyDefinitionList* policy_definition_list() const {
return policy_definition_list_;
diff --git a/chrome/browser/policy/configuration_policy_provider_mac.h b/chrome/browser/policy/configuration_policy_provider_mac.h
index 8be0d44..4f2e35f 100644
--- a/chrome/browser/policy/configuration_policy_provider_mac.h
+++ b/chrome/browser/policy/configuration_policy_provider_mac.h
@@ -7,7 +7,6 @@
#pragma once
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/policy/configuration_policy_store_interface.h"
#include "chrome/browser/policy/file_based_policy_provider.h"
#include "chrome/browser/preferences_mac.h"
diff --git a/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc b/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc
index f248bb5..e273f09 100644
--- a/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc
+++ b/chrome/browser/policy/configuration_policy_provider_mac_unittest.cc
@@ -9,7 +9,6 @@
#include "base/sys_string_conversions.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
#include "chrome/browser/policy/configuration_policy_provider_mac.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
#include "chrome/browser/preferences_mock_mac.h"
#include "policy/policy_constants.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -132,19 +131,18 @@ class ConfigurationPolicyProviderMacTest
public:
virtual void SetUp() {
prefs_ = new MockPreferences;
- store_.reset(new MockConfigurationPolicyStore);
}
protected:
MockPreferences* prefs_;
- scoped_ptr<MockConfigurationPolicyStore> store_;
};
TEST_P(ConfigurationPolicyProviderMacTest, Default) {
ConfigurationPolicyProviderMac provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(), prefs_);
- EXPECT_TRUE(provider.Provide(store_.get()));
- EXPECT_TRUE(store_->policy_map().empty());
+ PolicyMap policy_map;
+ EXPECT_TRUE(provider.Provide(&policy_map));
+ EXPECT_TRUE(policy_map.empty());
}
TEST_P(ConfigurationPolicyProviderMacTest, Invalid) {
@@ -157,8 +155,9 @@ TEST_P(ConfigurationPolicyProviderMacTest, Invalid) {
// Create the provider and have it read |prefs_|.
ConfigurationPolicyProviderMac provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(), prefs_);
- EXPECT_TRUE(provider.Provide(store_.get()));
- EXPECT_TRUE(store_->policy_map().empty());
+ PolicyMap policy_map;
+ EXPECT_TRUE(provider.Provide(&policy_map));
+ EXPECT_TRUE(policy_map.empty());
}
TEST_P(ConfigurationPolicyProviderMacTest, TestNonForcedValue) {
@@ -172,8 +171,9 @@ TEST_P(ConfigurationPolicyProviderMacTest, TestNonForcedValue) {
// Create the provider and have it read |prefs_|.
ConfigurationPolicyProviderMac provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(), prefs_);
- EXPECT_TRUE(provider.Provide(store_.get()));
- EXPECT_TRUE(store_->policy_map().empty());
+ PolicyMap policy_map;
+ EXPECT_TRUE(provider.Provide(&policy_map));
+ EXPECT_TRUE(policy_map.empty());
}
TEST_P(ConfigurationPolicyProviderMacTest, TestValue) {
@@ -187,9 +187,10 @@ TEST_P(ConfigurationPolicyProviderMacTest, TestValue) {
// Create the provider and have it read |prefs_|.
ConfigurationPolicyProviderMac provider(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(), prefs_);
- EXPECT_TRUE(provider.Provide(store_.get()));
- ASSERT_EQ(1U, store_->policy_map().size());
- const Value* value = store_->Get(GetParam().type());
+ PolicyMap policy_map;
+ EXPECT_TRUE(provider.Provide(&policy_map));
+ ASSERT_EQ(1U, policy_map.size());
+ const Value* value = policy_map.Get(GetParam().type());
ASSERT_TRUE(value);
EXPECT_TRUE(GetParam().test_value()->Equals(value));
}
diff --git a/chrome/browser/policy/configuration_policy_provider_win_unittest.cc b/chrome/browser/policy/configuration_policy_provider_win_unittest.cc
index 43879b1..383d84a 100644
--- a/chrome/browser/policy/configuration_policy_provider_win_unittest.cc
+++ b/chrome/browser/policy/configuration_policy_provider_win_unittest.cc
@@ -15,7 +15,6 @@
#include "chrome/browser/policy/asynchronous_policy_loader.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
#include "chrome/browser/policy/configuration_policy_provider_win.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
#include "chrome/common/pref_names.h"
#include "content/browser/browser_thread.h"
#include "policy/policy_constants.h"
@@ -150,7 +149,6 @@ class ConfigurationPolicyProviderWinTest
void WriteInvalidValue(HKEY hive, const char* name, const Value* value);
protected:
- scoped_ptr<MockConfigurationPolicyStore> store_;
scoped_ptr<ConfigurationPolicyProviderWin> provider_;
// A message loop must be declared and instantiated for these tests,
@@ -193,7 +191,6 @@ void ConfigurationPolicyProviderWinTest::SetUp() {
ActivateOverrides();
- store_.reset(new MockConfigurationPolicyStore);
provider_.reset(new ConfigurationPolicyProviderWin(
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList()));
}
@@ -296,8 +293,9 @@ void ConfigurationPolicyProviderWinTest::WriteInvalidValue(HKEY hive,
}
TEST_P(ConfigurationPolicyProviderWinTest, Default) {
- provider_->Provide(store_.get());
- EXPECT_TRUE(store_->policy_map().empty());
+ PolicyMap policy_map;
+ provider_->Provide(&policy_map);
+ EXPECT_TRUE(policy_map.empty());
}
TEST_P(ConfigurationPolicyProviderWinTest, InvalidValue) {
@@ -309,8 +307,9 @@ TEST_P(ConfigurationPolicyProviderWinTest, InvalidValue) {
GetParam().hkcu_value());
provider_->loader()->Reload();
loop_.RunAllPending();
- provider_->Provide(store_.get());
- EXPECT_TRUE(store_->policy_map().empty());
+ PolicyMap policy_map;
+ provider_->Provide(&policy_map);
+ EXPECT_TRUE(policy_map.empty());
}
TEST_P(ConfigurationPolicyProviderWinTest, HKLM) {
@@ -319,8 +318,9 @@ TEST_P(ConfigurationPolicyProviderWinTest, HKLM) {
GetParam().hklm_value());
provider_->loader()->Reload();
loop_.RunAllPending();
- provider_->Provide(store_.get());
- const Value* value = store_->Get(GetParam().type());
+ PolicyMap policy_map;
+ provider_->Provide(&policy_map);
+ const Value* value = policy_map.Get(GetParam().type());
ASSERT_TRUE(value);
EXPECT_TRUE(value->Equals(GetParam().hklm_value()));
}
@@ -331,8 +331,9 @@ TEST_P(ConfigurationPolicyProviderWinTest, HKCU) {
GetParam().hkcu_value());
provider_->loader()->Reload();
loop_.RunAllPending();
- provider_->Provide(store_.get());
- const Value* value = store_->Get(GetParam().type());
+ PolicyMap policy_map;
+ provider_->Provide(&policy_map);
+ const Value* value = policy_map.Get(GetParam().type());
ASSERT_TRUE(value);
EXPECT_TRUE(value->Equals(GetParam().hkcu_value()));
}
@@ -346,8 +347,9 @@ TEST_P(ConfigurationPolicyProviderWinTest, HKLMOverHKCU) {
GetParam().hkcu_value());
provider_->loader()->Reload();
loop_.RunAllPending();
- provider_->Provide(store_.get());
- const Value* value = store_->Get(GetParam().type());
+ PolicyMap policy_map;
+ provider_->Provide(&policy_map);
+ const Value* value = policy_map.Get(GetParam().type());
ASSERT_TRUE(value);
EXPECT_TRUE(value->Equals(GetParam().hklm_value()));
}
diff --git a/chrome/browser/policy/configuration_policy_reader.cc b/chrome/browser/policy/configuration_policy_reader.cc
index 472a151..c8bf7e1 100644
--- a/chrome/browser/policy/configuration_policy_reader.cc
+++ b/chrome/browser/policy/configuration_policy_reader.cc
@@ -12,23 +12,19 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/policy/browser_policy_connector.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
-#include "chrome/browser/policy/configuration_policy_store_interface.h"
+#include "chrome/browser/policy/policy_map.h"
namespace policy {
// This class functions as a container for policy status information used by the
// ConfigurationPolicyReader class. It obtains policy values from a
// ConfigurationPolicyProvider and maps them to their status information.
-class ConfigurationPolicyStatusKeeper
- : public ConfigurationPolicyStoreInterface {
+class ConfigurationPolicyStatusKeeper {
public:
ConfigurationPolicyStatusKeeper(ConfigurationPolicyProvider* provider,
PolicyStatusInfo::PolicyLevel policy_level);
virtual ~ConfigurationPolicyStatusKeeper();
- // ConfigurationPolicyStoreInterface methods.
- virtual void Apply(ConfigurationPolicyType policy, base::Value* value);
-
// Returns a pointer to a DictionaryValue containing the status information
// of the policy |policy|. The caller acquires ownership of the returned
// value. Returns NULL if no such policy is stored in this keeper.
@@ -40,6 +36,9 @@ class ConfigurationPolicyStatusKeeper
typedef ConfigurationPolicyProvider::PolicyDefinitionList
PolicyDefinitionList;
+ // Calls Provide() on the passed in |provider| to get policy values.
+ void GetPoliciesFromProvider(ConfigurationPolicyProvider* provider);
+
// Mapping from ConfigurationPolicyType to PolicyStatusInfo.
PolicyStatusMap policy_map_;
@@ -54,9 +53,7 @@ class ConfigurationPolicyStatusKeeper
ConfigurationPolicyStatusKeeper::ConfigurationPolicyStatusKeeper(
ConfigurationPolicyProvider* provider,
PolicyStatusInfo::PolicyLevel policy_level) : policy_level_(policy_level) {
-
- if (!provider->Provide(this))
- LOG(WARNING) << "Failed to get policy from provider.";
+ GetPoliciesFromProvider(provider);
}
ConfigurationPolicyStatusKeeper::~ConfigurationPolicyStatusKeeper() {
@@ -64,26 +61,6 @@ ConfigurationPolicyStatusKeeper::~ConfigurationPolicyStatusKeeper() {
policy_map_.clear();
}
-void ConfigurationPolicyStatusKeeper::Apply(
- ConfigurationPolicyType policy, base::Value* value) {
- string16 name = PolicyStatus::GetPolicyName(policy);
-
- if (name == string16()) {
- NOTREACHED();
- }
-
- // TODO(simo) actually determine whether the policy is a user or a device one
- // and whether the policy could be enforced or not once this information
- // is available.
- PolicyStatusInfo* info = new PolicyStatusInfo(name,
- PolicyStatusInfo::USER,
- policy_level_,
- value,
- PolicyStatusInfo::ENFORCED,
- string16());
- policy_map_[policy] = info;
-}
-
DictionaryValue* ConfigurationPolicyStatusKeeper::GetPolicyStatus(
ConfigurationPolicyType policy) const {
PolicyStatusMap::const_iterator entry = policy_map_.find(policy);
@@ -91,7 +68,47 @@ DictionaryValue* ConfigurationPolicyStatusKeeper::GetPolicyStatus(
(entry->second)->GetDictionaryValue() : NULL;
}
+void ConfigurationPolicyStatusKeeper::GetPoliciesFromProvider(
+ ConfigurationPolicyProvider* provider) {
+ scoped_ptr<PolicyMap> policies(new PolicyMap());
+ if (!provider->Provide(policies.get()))
+ LOG(WARNING) << "Failed to get policy from provider.";
+
+ PolicyMap::const_iterator policy = policies->begin();
+ for ( ; policy != policies->end(); ++policy) {
+ string16 name = PolicyStatus::GetPolicyName(policy->first);
+
+ if (name == string16()) {
+ NOTREACHED();
+ }
+
+ // TODO(simo) actually determine whether the policy is a user or a device
+ // one and whether the policy could be enforced or not once this information
+ // is available.
+ PolicyStatusInfo* info = new PolicyStatusInfo(name,
+ PolicyStatusInfo::USER,
+ policy_level_,
+ policy->second->DeepCopy(),
+ PolicyStatusInfo::ENFORCED,
+ string16());
+ policy_map_[policy->first] = info;
+ }
+}
+
// ConfigurationPolicyReader
+ConfigurationPolicyReader::ConfigurationPolicyReader(
+ ConfigurationPolicyProvider* provider,
+ PolicyStatusInfo::PolicyLevel policy_level)
+ : provider_(provider),
+ policy_level_(policy_level) {
+ if (provider_) {
+ // Read initial policy.
+ policy_keeper_.reset(
+ new ConfigurationPolicyStatusKeeper(provider, policy_level));
+ registrar_.Init(provider_, this);
+ }
+}
+
ConfigurationPolicyReader::~ConfigurationPolicyReader() {
}
@@ -145,19 +162,6 @@ DictionaryValue* ConfigurationPolicyReader::GetPolicyStatus(
return policy_keeper_->GetPolicyStatus(policy);
}
-ConfigurationPolicyReader::ConfigurationPolicyReader(
- ConfigurationPolicyProvider* provider,
- PolicyStatusInfo::PolicyLevel policy_level)
- : provider_(provider),
- policy_level_(policy_level) {
- if (provider_) {
- // Read initial policy.
- policy_keeper_.reset(
- new ConfigurationPolicyStatusKeeper(provider, policy_level));
- registrar_.Init(provider_, this);
- }
-}
-
ConfigurationPolicyReader::ConfigurationPolicyReader()
: provider_(NULL),
policy_level_(PolicyStatusInfo::LEVEL_UNDEFINED),
diff --git a/chrome/browser/policy/configuration_policy_store_interface.h b/chrome/browser/policy/configuration_policy_store_interface.h
deleted file mode 100644
index 2043834..0000000
--- a/chrome/browser/policy/configuration_policy_store_interface.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_STORE_INTERFACE_H_
-#define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_STORE_INTERFACE_H_
-#pragma once
-
-#include "base/basictypes.h"
-#include "policy/configuration_policy_type.h"
-
-namespace base {
-class Value;
-}
-
-namespace policy {
-
-// Constants for the "Proxy Server Mode" defined in the policies.
-// Note that these diverge from internal presentation defined in
-// ProxyPrefs::ProxyMode for legacy reasons. The following four
-// PolicyProxyModeType types were not very precise and had overlapping use
-// cases.
-enum PolicyProxyModeType {
- // Disable Proxy, connect directly.
- kPolicyNoProxyServerMode = 0,
- // Auto detect proxy or use specific PAC script if given.
- kPolicyAutoDetectProxyServerMode = 1,
- // Use manually configured proxy servers (fixed servers).
- kPolicyManuallyConfiguredProxyServerMode = 2,
- // Use system proxy server.
- kPolicyUseSystemProxyServerMode = 3,
-
- MODE_COUNT
-};
-
-// An abstract super class for policy stores that provides a method that can be
-// called by a |ConfigurationPolicyProvider| to specify a policy.
-class ConfigurationPolicyStoreInterface {
- public:
- virtual ~ConfigurationPolicyStoreInterface() {}
-
- // A |ConfigurationPolicyProvider| specifies the value of a policy
- // setting through a call to |Apply|. The configuration policy pref
- // store takes over the ownership of |value|.
- virtual void Apply(ConfigurationPolicyType policy, base::Value* value) = 0;
-
- protected:
- ConfigurationPolicyStoreInterface() {}
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyStoreInterface);
-};
-
-} // namespace policy
-
-#endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_STORE_INTERFACE_H_
diff --git a/chrome/browser/policy/dummy_cloud_policy_provider.cc b/chrome/browser/policy/dummy_cloud_policy_provider.cc
index 6646fc1..f522388 100644
--- a/chrome/browser/policy/dummy_cloud_policy_provider.cc
+++ b/chrome/browser/policy/dummy_cloud_policy_provider.cc
@@ -23,8 +23,7 @@ void DummyCloudPolicyProvider::AppendCache(CloudPolicyCacheBase* cache) {
void DummyCloudPolicyProvider::PrependCache(CloudPolicyCacheBase* cache) {
}
-bool DummyCloudPolicyProvider::Provide(
- ConfigurationPolicyStoreInterface* store) {
+bool DummyCloudPolicyProvider::Provide(PolicyMap* map) {
return true;
}
void DummyCloudPolicyProvider::AddObserver(
diff --git a/chrome/browser/policy/dummy_cloud_policy_provider.h b/chrome/browser/policy/dummy_cloud_policy_provider.h
index 269b5f2..3a75069 100644
--- a/chrome/browser/policy/dummy_cloud_policy_provider.h
+++ b/chrome/browser/policy/dummy_cloud_policy_provider.h
@@ -21,7 +21,7 @@ class DummyCloudPolicyProvider : public CloudPolicyProvider {
virtual void AppendCache(CloudPolicyCacheBase* cache) OVERRIDE;
virtual void PrependCache(CloudPolicyCacheBase* cache) OVERRIDE;
- virtual bool Provide(ConfigurationPolicyStoreInterface* store);
+ virtual bool Provide(PolicyMap* map);
private:
// ConfigurationPolicyProvider overrides:
diff --git a/chrome/browser/policy/dummy_configuration_policy_provider.cc b/chrome/browser/policy/dummy_configuration_policy_provider.cc
index 973ee4c..a6f3bb5 100644
--- a/chrome/browser/policy/dummy_configuration_policy_provider.cc
+++ b/chrome/browser/policy/dummy_configuration_policy_provider.cc
@@ -17,8 +17,7 @@ DummyConfigurationPolicyProvider::~DummyConfigurationPolicyProvider() {
OnProviderGoingAway());
}
-bool DummyConfigurationPolicyProvider::Provide(
- ConfigurationPolicyStoreInterface* store) {
+bool DummyConfigurationPolicyProvider::Provide(PolicyMap* map) {
return true;
}
diff --git a/chrome/browser/policy/dummy_configuration_policy_provider.h b/chrome/browser/policy/dummy_configuration_policy_provider.h
index 119a74b..5d0a956 100644
--- a/chrome/browser/policy/dummy_configuration_policy_provider.h
+++ b/chrome/browser/policy/dummy_configuration_policy_provider.h
@@ -19,7 +19,7 @@ class DummyConfigurationPolicyProvider : public ConfigurationPolicyProvider {
const PolicyDefinitionList* policy_list);
virtual ~DummyConfigurationPolicyProvider();
- virtual bool Provide(ConfigurationPolicyStoreInterface* store);
+ virtual bool Provide(PolicyMap* map);
private:
// ConfigurationPolicyProvider overrides:
diff --git a/chrome/browser/policy/file_based_policy_provider_unittest.cc b/chrome/browser/policy/file_based_policy_provider_unittest.cc
index d5d0811..aee36c7 100644
--- a/chrome/browser/policy/file_based_policy_provider_unittest.cc
+++ b/chrome/browser/policy/file_based_policy_provider_unittest.cc
@@ -1,13 +1,11 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/policy/asynchronous_policy_loader.h"
#include "chrome/browser/policy/asynchronous_policy_test_base.h"
#include "chrome/browser/policy/configuration_policy_pref_store.h"
-#include "chrome/browser/policy/configuration_policy_store_interface.h"
#include "chrome/browser/policy/file_based_policy_provider.h"
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
#include "policy/policy_constants.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -46,8 +44,10 @@ TEST_F(AsynchronousPolicyTestBase, ProviderInit) {
ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
provider_delegate);
loop_.RunAllPending();
- EXPECT_CALL(*store_, Apply(policy::kPolicySyncDisabled, _)).Times(1);
- provider.Provide(store_.get());
+ PolicyMap policy_map;
+ provider.Provide(&policy_map);
+ EXPECT_TRUE(policy_map.Get(policy::kPolicySyncDisabled));
+ EXPECT_EQ(1U, policy_map.size());
}
TEST_F(AsynchronousPolicyTestBase, ProviderRefresh) {
@@ -75,8 +75,10 @@ TEST_F(AsynchronousPolicyTestBase, ProviderRefresh) {
EXPECT_CALL(*provider_delegate, Load()).WillOnce(Return(policies));
file_based_provider.loader()->Reload();
loop_.RunAllPending();
- EXPECT_CALL(*store_, Apply(policy::kPolicySyncDisabled, _)).Times(1);
- file_based_provider.Provide(store_.get());
+ PolicyMap policy_map;
+ file_based_provider.Provide(&policy_map);
+ EXPECT_TRUE(policy_map.Get(policy::kPolicySyncDisabled));
+ EXPECT_EQ(1U, policy_map.size());
}
} // namespace policy
diff --git a/chrome/browser/policy/mock_configuration_policy_provider.cc b/chrome/browser/policy/mock_configuration_policy_provider.cc
index d09db10..b659273 100644
--- a/chrome/browser/policy/mock_configuration_policy_provider.cc
+++ b/chrome/browser/policy/mock_configuration_policy_provider.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -32,12 +32,8 @@ void MockConfigurationPolicyProvider::SetInitializationComplete(
initialization_complete_ = initialization_complete;
}
-bool MockConfigurationPolicyProvider::Provide(
- ConfigurationPolicyStoreInterface* store) {
- for (PolicyMap::const_iterator current = policy_map_.begin();
- current != policy_map_.end(); ++current) {
- store->Apply(current->first, current->second->DeepCopy());
- }
+bool MockConfigurationPolicyProvider::Provide(PolicyMap* policies) {
+ policies->CopyFrom(policy_map_);
return true;
}
diff --git a/chrome/browser/policy/mock_configuration_policy_provider.h b/chrome/browser/policy/mock_configuration_policy_provider.h
index f71f8db..de266dc 100644
--- a/chrome/browser/policy/mock_configuration_policy_provider.h
+++ b/chrome/browser/policy/mock_configuration_policy_provider.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -28,7 +28,7 @@ class MockConfigurationPolicyProvider : public ConfigurationPolicyProvider {
void SetInitializationComplete(bool initialization_complete);
// ConfigurationPolicyProvider method overrides.
- virtual bool Provide(ConfigurationPolicyStoreInterface* store);
+ virtual bool Provide(PolicyMap* policies);
virtual bool IsInitializationComplete() const;
private:
diff --git a/chrome/browser/policy/mock_configuration_policy_store.cc b/chrome/browser/policy/mock_configuration_policy_store.cc
deleted file mode 100644
index 1cbf438..0000000
--- a/chrome/browser/policy/mock_configuration_policy_store.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/policy/mock_configuration_policy_store.h"
-
-namespace policy {
-
-using ::testing::_;
-using ::testing::Invoke;
-
-MockConfigurationPolicyStore::MockConfigurationPolicyStore() {
- ON_CALL(*this, Apply(_, _)).WillByDefault(
- Invoke(this, &MockConfigurationPolicyStore::ApplyToMap));
-}
-
-MockConfigurationPolicyStore::~MockConfigurationPolicyStore() {}
-
-const Value* MockConfigurationPolicyStore::Get(
- ConfigurationPolicyType type) const {
- return policy_map_.Get(type);
-}
-
-void MockConfigurationPolicyStore::ApplyToMap(
- ConfigurationPolicyType policy, Value* value) {
- policy_map_.Set(policy, value);
-}
-
-} // namespace policy
diff --git a/chrome/browser/policy/mock_configuration_policy_store.h b/chrome/browser/policy/mock_configuration_policy_store.h
deleted file mode 100644
index 658c82d..0000000
--- a/chrome/browser/policy/mock_configuration_policy_store.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_POLICY_MOCK_CONFIGURATION_POLICY_STORE_H_
-#define CHROME_BROWSER_POLICY_MOCK_CONFIGURATION_POLICY_STORE_H_
-#pragma once
-
-#include <map>
-#include <utility>
-
-#include "base/stl_util.h"
-#include "base/values.h"
-#include "chrome/browser/policy/configuration_policy_store_interface.h"
-#include "chrome/browser/policy/policy_map.h"
-#include "testing/gmock/include/gmock/gmock.h"
-
-namespace policy {
-
-// Mock ConfigurationPolicyStore implementation that records values for policy
-// settings as they get set.
-class MockConfigurationPolicyStore : public ConfigurationPolicyStoreInterface {
- public:
- MockConfigurationPolicyStore();
- virtual ~MockConfigurationPolicyStore();
-
- const PolicyMap& policy_map() const { return policy_map_; }
-
- // Get a value for the given policy. Returns NULL if that key doesn't exist.
- const Value* Get(ConfigurationPolicyType type) const;
- // ConfigurationPolicyStore implementation.
- void ApplyToMap(ConfigurationPolicyType policy, Value* value);
-
- MOCK_METHOD2(Apply, void(ConfigurationPolicyType policy, Value* value));
-
- private:
- PolicyMap policy_map_;
-
- DISALLOW_COPY_AND_ASSIGN(MockConfigurationPolicyStore);
-};
-
-} // namespace policy
-
-#endif // CHROME_BROWSER_POLICY_MOCK_CONFIGURATION_POLICY_STORE_H_
diff --git a/chrome/browser/policy/policy_map.cc b/chrome/browser/policy/policy_map.cc
index 894d62a..9d93172 100644
--- a/chrome/browser/policy/policy_map.cc
+++ b/chrome/browser/policy/policy_map.cc
@@ -39,6 +39,13 @@ void PolicyMap::Swap(PolicyMap* other) {
map_.swap(other->map_);
}
+void PolicyMap::CopyFrom(const PolicyMap& other) {
+ Clear();
+ for (const_iterator i = other.begin(); i != other.end(); ++i) {
+ Set(i->first, i->second->DeepCopy());
+ }
+}
+
bool PolicyMap::Equals(const PolicyMap& other) const {
return other.map_.size() == map_.size() &&
std::equal(map_.begin(), map_.end(), other.map_.begin(), MapEntryEquals);
diff --git a/chrome/browser/policy/policy_map.h b/chrome/browser/policy/policy_map.h
index c9e3d03..8a71ccc 100644
--- a/chrome/browser/policy/policy_map.h
+++ b/chrome/browser/policy/policy_map.h
@@ -34,6 +34,7 @@ class PolicyMap {
void Erase(ConfigurationPolicyType policy);
void Swap(PolicyMap* other);
+ void CopyFrom(const PolicyMap& other);
bool Equals(const PolicyMap& other) const;
bool empty() const;
diff --git a/chrome/browser/policy/user_policy_cache.cc b/chrome/browser/policy/user_policy_cache.cc
index f4be837..c546600 100644
--- a/chrome/browser/policy/user_policy_cache.cc
+++ b/chrome/browser/policy/user_policy_cache.cc
@@ -114,23 +114,6 @@ bool UserPolicyCache::DecodePolicyData(const em::PolicyData& policy_data,
using google::protobuf::RepeatedField;
using google::protobuf::RepeatedPtrField;
-class PolicyMapProxy : public ConfigurationPolicyStoreInterface {
- public:
- // Does not take ownership of |policy_map|, and callers need to make sure
- // that |policy_map| outlives this PolicyMapProxy.
- explicit PolicyMapProxy(PolicyMap* policy_map)
- : policy_map_(policy_map) {}
- virtual ~PolicyMapProxy() {}
- virtual void Apply(ConfigurationPolicyType policy, Value* value) {
- policy_map_->Set(policy, value);
- }
-
- private:
- PolicyMap* policy_map_;
-
- DISALLOW_COPY_AND_ASSIGN(PolicyMapProxy);
-};
-
void UserPolicyCache::MaybeDecodeOldstylePolicy(
const std::string& policy_data,
PolicyMap* mandatory,
@@ -160,9 +143,8 @@ void UserPolicyCache::MaybeDecodeOldstylePolicy(
}
// Hack: Let one of the providers do the transformation from DictionaryValue
// to PolicyMap, since they have the required code anyway.
- PolicyMapProxy map_proxy(mandatory);
g_browser_process->browser_policy_connector()->GetManagedCloudProvider()->
- ApplyPolicyValueTree(&result, &map_proxy);
+ ApplyPolicyValueTree(&result, mandatory);
}
Value* UserPolicyCache::DecodeIntegerValue(
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 1096d6e..f8a48be 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -1380,8 +1380,6 @@
'browser/policy/mock_configuration_policy_provider.h',
'browser/policy/mock_configuration_policy_reader.cc',
'browser/policy/mock_configuration_policy_reader.h',
- 'browser/policy/mock_configuration_policy_store.cc',
- 'browser/policy/mock_configuration_policy_store.h',
'browser/policy/mock_device_management_backend.cc',
'browser/policy/mock_device_management_backend.h',
'browser/policy/policy_map_unittest.cc',