| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/prefs/public/pref_change_registrar.h" | 7 #include "base/prefs/public/pref_change_registrar.h" |
| 8 #include "base/prefs/public/pref_observer.h" | 8 #include "base/prefs/public/pref_observer.h" |
| 9 #include "chrome/test/base/testing_pref_service.h" | 9 #include "chrome/test/base/testing_pref_service.h" |
| 10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 using testing::Mock; | 13 using testing::Mock; |
| 14 using testing::Eq; | 14 using testing::Eq; |
| 15 | 15 |
| 16 namespace base { |
| 16 namespace { | 17 namespace { |
| 17 | 18 |
| 18 const char kHomePage[] = "homepage"; | 19 const char kHomePage[] = "homepage"; |
| 19 const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage"; | 20 const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage"; |
| 20 const char kApplicationLocale[] = "intl.app_locale"; | 21 const char kApplicationLocale[] = "intl.app_locale"; |
| 21 | 22 |
| 22 // A mock provider that allows us to capture pref observer changes. | 23 // A mock provider that allows us to capture pref observer changes. |
| 23 class MockPrefService : public TestingPrefService { | 24 class MockPrefService : public TestingPrefService { |
| 24 public: | 25 public: |
| 25 MockPrefService() {} | 26 MockPrefService() {} |
| 26 virtual ~MockPrefService() {} | 27 virtual ~MockPrefService() {} |
| 27 | 28 |
| 28 MOCK_METHOD2(AddPrefObserver, | 29 MOCK_METHOD2(AddPrefObserver, |
| 29 void(const char*, PrefObserver*)); | 30 void(const char*, PrefObserver*)); |
| 30 MOCK_METHOD2(RemovePrefObserver, | 31 MOCK_METHOD2(RemovePrefObserver, |
| 31 void(const char*, PrefObserver*)); | 32 void(const char*, PrefObserver*)); |
| 32 }; | 33 }; |
| 33 | 34 |
| 34 } // namespace | 35 } // namespace |
| 35 | 36 |
| 36 class PrefChangeRegistrarTest : public testing::Test { | 37 class PrefChangeRegistrarTest : public testing::Test { |
| 37 public: | 38 public: |
| 38 PrefChangeRegistrarTest() {} | 39 PrefChangeRegistrarTest() {} |
| 39 virtual ~PrefChangeRegistrarTest() {} | 40 virtual ~PrefChangeRegistrarTest() {} |
| 40 | 41 |
| 41 protected: | 42 protected: |
| 42 virtual void SetUp(); | 43 virtual void SetUp() OVERRIDE; |
| 43 | 44 |
| 44 base::Closure observer() const { | 45 base::Closure observer() const { |
| 45 return base::Bind(&base::DoNothing); | 46 return base::Bind(&base::DoNothing); |
| 46 } | 47 } |
| 47 | 48 |
| 48 MockPrefService* service() const { return service_.get(); } | 49 MockPrefService* service() const { return service_.get(); } |
| 49 | 50 |
| 50 private: | 51 private: |
| 51 scoped_ptr<MockPrefService> service_; | 52 scoped_ptr<MockPrefService> service_; |
| 52 }; | 53 }; |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); | 157 scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); |
| 157 EXPECT_TRUE(pref_set->IsObserved(kHomePage)); | 158 EXPECT_TRUE(pref_set->IsObserved(kHomePage)); |
| 158 EXPECT_TRUE(pref_set->IsObserved(kHomePageIsNewTabPage)); | 159 EXPECT_TRUE(pref_set->IsObserved(kHomePageIsNewTabPage)); |
| 159 EXPECT_FALSE(pref_set->IsObserved(kApplicationLocale)); | 160 EXPECT_FALSE(pref_set->IsObserved(kApplicationLocale)); |
| 160 } | 161 } |
| 161 | 162 |
| 162 TEST_F(ObserveSetOfPreferencesTest, IsManaged) { | 163 TEST_F(ObserveSetOfPreferencesTest, IsManaged) { |
| 163 scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); | 164 scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); |
| 164 EXPECT_FALSE(pref_set->IsManaged()); | 165 EXPECT_FALSE(pref_set->IsManaged()); |
| 165 pref_service_->SetManagedPref(kHomePage, | 166 pref_service_->SetManagedPref(kHomePage, |
| 166 Value::CreateStringValue("http://crbug.com")); | 167 new StringValue("http://crbug.com")); |
| 167 EXPECT_TRUE(pref_set->IsManaged()); | 168 EXPECT_TRUE(pref_set->IsManaged()); |
| 168 pref_service_->SetManagedPref(kHomePageIsNewTabPage, | 169 pref_service_->SetManagedPref(kHomePageIsNewTabPage, |
| 169 Value::CreateBooleanValue(true)); | 170 new FundamentalValue(true)); |
| 170 EXPECT_TRUE(pref_set->IsManaged()); | 171 EXPECT_TRUE(pref_set->IsManaged()); |
| 171 pref_service_->RemoveManagedPref(kHomePage); | 172 pref_service_->RemoveManagedPref(kHomePage); |
| 172 EXPECT_TRUE(pref_set->IsManaged()); | 173 EXPECT_TRUE(pref_set->IsManaged()); |
| 173 pref_service_->RemoveManagedPref(kHomePageIsNewTabPage); | 174 pref_service_->RemoveManagedPref(kHomePageIsNewTabPage); |
| 174 EXPECT_FALSE(pref_set->IsManaged()); | 175 EXPECT_FALSE(pref_set->IsManaged()); |
| 175 } | 176 } |
| 176 | 177 |
| 177 TEST_F(ObserveSetOfPreferencesTest, Observe) { | 178 TEST_F(ObserveSetOfPreferencesTest, Observe) { |
| 178 using testing::_; | 179 using testing::_; |
| 179 using testing::Mock; | 180 using testing::Mock; |
| 180 | 181 |
| 181 PrefChangeRegistrar pref_set; | 182 PrefChangeRegistrar pref_set; |
| 182 PrefChangeRegistrar::NamedChangeCallback callback = base::Bind( | 183 PrefChangeRegistrar::NamedChangeCallback callback = base::Bind( |
| 183 &ObserveSetOfPreferencesTest::OnPreferenceChanged, | 184 &ObserveSetOfPreferencesTest::OnPreferenceChanged, |
| 184 base::Unretained(this)); | 185 base::Unretained(this)); |
| 185 pref_set.Init(pref_service_.get()); | 186 pref_set.Init(pref_service_.get()); |
| 186 pref_set.Add(kHomePage, callback); | 187 pref_set.Add(kHomePage, callback); |
| 187 pref_set.Add(kHomePageIsNewTabPage, callback); | 188 pref_set.Add(kHomePageIsNewTabPage, callback); |
| 188 | 189 |
| 189 EXPECT_CALL(*this, OnPreferenceChanged(kHomePage)); | 190 EXPECT_CALL(*this, OnPreferenceChanged(kHomePage)); |
| 190 pref_service_->SetUserPref(kHomePage, | 191 pref_service_->SetUserPref(kHomePage, new StringValue("http://crbug.com")); |
| 191 Value::CreateStringValue("http://crbug.com")); | |
| 192 Mock::VerifyAndClearExpectations(this); | 192 Mock::VerifyAndClearExpectations(this); |
| 193 | 193 |
| 194 EXPECT_CALL(*this, OnPreferenceChanged(kHomePageIsNewTabPage)); | 194 EXPECT_CALL(*this, OnPreferenceChanged(kHomePageIsNewTabPage)); |
| 195 pref_service_->SetUserPref(kHomePageIsNewTabPage, | 195 pref_service_->SetUserPref(kHomePageIsNewTabPage, |
| 196 Value::CreateBooleanValue(true)); | 196 new FundamentalValue(true)); |
| 197 Mock::VerifyAndClearExpectations(this); | 197 Mock::VerifyAndClearExpectations(this); |
| 198 | 198 |
| 199 EXPECT_CALL(*this, OnPreferenceChanged(_)).Times(0); | 199 EXPECT_CALL(*this, OnPreferenceChanged(_)).Times(0); |
| 200 pref_service_->SetUserPref(kApplicationLocale, | 200 pref_service_->SetUserPref(kApplicationLocale, new StringValue("en_US.utf8")); |
| 201 Value::CreateStringValue("en_US.utf8")); | |
| 202 Mock::VerifyAndClearExpectations(this); | 201 Mock::VerifyAndClearExpectations(this); |
| 203 } | 202 } |
| 203 |
| 204 } // namespace base |
| OLD | NEW |