Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1498)

Unified Diff: chrome/browser/managed_mode/supervised_user_pref_store_unittest.cc

Issue 23466004: Add ManagedUserSettingsService and a SupervisedUserPrefStore using it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/managed_mode/supervised_user_pref_store.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/managed_mode/supervised_user_pref_store_unittest.cc
diff --git a/chrome/browser/managed_mode/supervised_user_pref_store_unittest.cc b/chrome/browser/managed_mode/supervised_user_pref_store_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2e5a3b87bd26493d9b8d1ce761cffdf08ffe8dfe
--- /dev/null
+++ b/chrome/browser/managed_mode/supervised_user_pref_store_unittest.cc
@@ -0,0 +1,171 @@
+// Copyright 2013 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 <set>
+#include <string>
+
+#include "base/memory/ref_counted.h"
+#include "base/prefs/testing_pref_store.h"
+#include "base/values.h"
+#include "chrome/browser/managed_mode/managed_user_constants.h"
+#include "chrome/browser/managed_mode/managed_user_settings_service.h"
+#include "chrome/browser/managed_mode/supervised_user_pref_store.h"
+#include "chrome/common/pref_names.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using base::DictionaryValue;
+using base::Value;
+
+namespace {
+
+class SupervisedUserPrefStoreFixture : public PrefStore::Observer {
+ public:
+ explicit SupervisedUserPrefStoreFixture(
+ ManagedUserSettingsService* settings_service);
+ virtual ~SupervisedUserPrefStoreFixture();
+
+ DictionaryValue* changed_prefs() {
+ return &changed_prefs_;
+ }
+
+ bool initialization_completed() const {
+ return initialization_completed_;
+ }
+
+ // PrefStore::Observer implementation:
+ virtual void OnPrefValueChanged(const std::string& key) OVERRIDE;
+ virtual void OnInitializationCompleted(bool succeeded) OVERRIDE;
+
+private:
+ scoped_refptr<SupervisedUserPrefStore> pref_store_;
+ DictionaryValue changed_prefs_;
+ bool initialization_completed_;
+};
+
+SupervisedUserPrefStoreFixture::SupervisedUserPrefStoreFixture(
+ ManagedUserSettingsService* settings_service)
+ : pref_store_(new SupervisedUserPrefStore(settings_service)),
+ initialization_completed_(pref_store_->IsInitializationComplete()) {
+ pref_store_->AddObserver(this);
+}
+
+SupervisedUserPrefStoreFixture::~SupervisedUserPrefStoreFixture() {
+ pref_store_->RemoveObserver(this);
+}
+
+void SupervisedUserPrefStoreFixture::OnPrefValueChanged(
+ const std::string& key) {
+ const Value* value = NULL;
+ ASSERT_TRUE(pref_store_->GetValue(key, &value));
+ changed_prefs_.Set(key, value->DeepCopy());
+}
+
+void SupervisedUserPrefStoreFixture::OnInitializationCompleted(bool succeeded) {
+ EXPECT_FALSE(initialization_completed_);
+ EXPECT_TRUE(succeeded);
+ EXPECT_TRUE(pref_store_->IsInitializationComplete());
+ initialization_completed_ = true;
+}
+
+} // namespace
+
+class SupervisedUserPrefStoreTest : public ::testing::Test {
+ public:
+ virtual void SetUp() OVERRIDE;
+ virtual void TearDown() OVERRIDE;
+
+ protected:
+ ManagedUserSettingsService service_;
+ scoped_refptr<TestingPrefStore> pref_store_;
+};
+
+void SupervisedUserPrefStoreTest::SetUp() {
+ pref_store_ = new TestingPrefStore();
+ service_.Init(pref_store_);
+}
+
+void SupervisedUserPrefStoreTest::TearDown() {
+ service_.Shutdown();
+}
+
+TEST_F(SupervisedUserPrefStoreTest, ConfigureSettings) {
+ SupervisedUserPrefStoreFixture fixture(&service_);
+ EXPECT_FALSE(fixture.initialization_completed());
+
+ // Prefs should not change yet when the service is ready, but not
+ // activated yet.
+ pref_store_->SetInitializationCompleted();
+ EXPECT_TRUE(fixture.initialization_completed());
+ EXPECT_EQ(0u, fixture.changed_prefs()->size());
+
+ service_.Activate();
+
+ // kAllowDeletingBrowserHistory is hardcoded to false for managed users.
+ bool allow_deleting_browser_history = true;
+ EXPECT_TRUE(fixture.changed_prefs()->GetBoolean(
+ prefs::kAllowDeletingBrowserHistory, &allow_deleting_browser_history));
+ EXPECT_FALSE(allow_deleting_browser_history);
+
+ // kManagedModeManualHosts does not have a hardcoded value.
+ DictionaryValue* manual_hosts = NULL;
+ EXPECT_FALSE(fixture.changed_prefs()->GetDictionary(
+ prefs::kManagedModeManualHosts, &manual_hosts));
+
+ // kForceSafeSearch defaults to true for managed users.
+ bool force_safesearch = false;
+ EXPECT_TRUE(fixture.changed_prefs()->GetBoolean(prefs::kForceSafeSearch,
+ &force_safesearch));
+ EXPECT_TRUE(force_safesearch);
+
+ // Activating the service again should not change anything.
+ fixture.changed_prefs()->Clear();
+ service_.Activate();
+ EXPECT_EQ(0u, fixture.changed_prefs()->size());
+
+ // kManagedModeManualHosts can be configured by the custodian.
+ scoped_ptr<DictionaryValue> dict(new DictionaryValue);
+ dict->SetBoolean("example.com", true);
+ dict->SetBoolean("moose.org", false);
+ service_.SetLocalSettingForTesting(
+ managed_users::kContentPackManualBehaviorHosts,
+ scoped_ptr<Value>(dict->DeepCopy()));
+ EXPECT_EQ(1u, fixture.changed_prefs()->size());
+ ASSERT_TRUE(fixture.changed_prefs()->GetDictionary(
+ prefs::kManagedModeManualHosts, &manual_hosts));
+ EXPECT_TRUE(manual_hosts->Equals(dict.get()));
+
+ // kForceSafeSearch can be configured by the custodian, overriding the
+ // hardcoded default.
+ fixture.changed_prefs()->Clear();
+ service_.SetLocalSettingForTesting(
+ managed_users::kForceSafeSearch,
+ scoped_ptr<Value>(new base::FundamentalValue(false)));
+ EXPECT_EQ(1u, fixture.changed_prefs()->size());
+ EXPECT_TRUE(fixture.changed_prefs()->GetBoolean(prefs::kForceSafeSearch,
+ &force_safesearch));
+ EXPECT_FALSE(force_safesearch);
+}
+
+TEST_F(SupervisedUserPrefStoreTest, ActivateSettingsBeforeInitialization) {
+ SupervisedUserPrefStoreFixture fixture(&service_);
+ EXPECT_FALSE(fixture.initialization_completed());
+
+ service_.Activate();
+ EXPECT_FALSE(fixture.initialization_completed());
+ EXPECT_EQ(0u, fixture.changed_prefs()->size());
+
+ pref_store_->SetInitializationCompleted();
+ EXPECT_TRUE(fixture.initialization_completed());
+ EXPECT_EQ(0u, fixture.changed_prefs()->size());
+}
+
+TEST_F(SupervisedUserPrefStoreTest, CreatePrefStoreAfterInitialization) {
+ pref_store_->SetInitializationCompleted();
+ service_.Activate();
+
+ SupervisedUserPrefStoreFixture fixture(&service_);
+ EXPECT_TRUE(fixture.initialization_completed());
+ EXPECT_EQ(0u, fixture.changed_prefs()->size());
+}
+
« no previous file with comments | « chrome/browser/managed_mode/supervised_user_pref_store.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698