Chromium Code Reviews| Index: base/prefs/public/pref_change_registrar_unittest.cc |
| diff --git a/base/prefs/public/pref_change_registrar_unittest.cc b/base/prefs/public/pref_change_registrar_unittest.cc |
| index e2224439db425a5ecf92674a562aaeaa6a675533..074614879e5b849c19e634c0e58751608d919dba 100644 |
| --- a/base/prefs/public/pref_change_registrar_unittest.cc |
| +++ b/base/prefs/public/pref_change_registrar_unittest.cc |
| @@ -2,6 +2,8 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "base/bind.h" |
| +#include "base/bind_helpers.h" |
| #include "base/prefs/public/pref_change_registrar.h" |
| #include "base/prefs/public/pref_observer.h" |
| #include "chrome/test/base/testing_pref_service.h" |
| @@ -17,14 +19,6 @@ const char kHomePage[] = "homepage"; |
| const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage"; |
| const char kApplicationLocale[] = "intl.app_locale"; |
| -// TODO(joi): Use PrefObserverMock once it moves to base/prefs/. |
| -class MockPrefObserver : public PrefObserver { |
| - public: |
| - virtual ~MockPrefObserver() {} |
| - |
| - MOCK_METHOD2(OnPreferenceChanged, void(PrefServiceBase*, const std::string&)); |
| -}; |
| - |
| // A mock provider that allows us to capture pref observer changes. |
| class MockPrefService : public TestingPrefService { |
| public: |
| @@ -47,17 +41,18 @@ class PrefChangeRegistrarTest : public testing::Test { |
| protected: |
| virtual void SetUp(); |
| - PrefObserver* observer() const { return observer_.get(); } |
| + base::Closure observer() const { |
| + return base::Bind(&base::DoNothing); |
| + } |
| + |
| MockPrefService* service() const { return service_.get(); } |
| private: |
| scoped_ptr<MockPrefService> service_; |
| - scoped_ptr<MockPrefObserver> observer_; |
| }; |
| void PrefChangeRegistrarTest::SetUp() { |
| service_.reset(new MockPrefService()); |
| - observer_.reset(new MockPrefObserver()); |
| } |
| TEST_F(PrefChangeRegistrarTest, AddAndRemove) { |
| @@ -128,8 +123,7 @@ TEST_F(PrefChangeRegistrarTest, RemoveAll) { |
| Mock::VerifyAndClearExpectations(service()); |
| } |
| -class ObserveSetOfPreferencesTest : public testing::Test, |
| - public PrefObserver { |
| +class ObserveSetOfPreferencesTest : public testing::Test { |
| public: |
| virtual void SetUp() { |
| pref_service_.reset(new TestingPrefService); |
| @@ -144,35 +138,27 @@ class ObserveSetOfPreferencesTest : public testing::Test, |
| PrefService::UNSYNCABLE_PREF); |
| } |
| - PrefChangeRegistrar* CreatePrefChangeRegistrar( |
| - PrefObserver* observer) { |
| - if (!observer) |
| - observer = this; |
| + PrefChangeRegistrar* CreatePrefChangeRegistrar() { |
| PrefChangeRegistrar* pref_set = new PrefChangeRegistrar(); |
| + base::Closure callback = base::Bind(&base::DoNothing); |
| pref_set->Init(pref_service_.get()); |
| - pref_set->Add(kHomePage, observer); |
| - pref_set->Add(kHomePageIsNewTabPage, observer); |
| + pref_set->Add(kHomePage, callback); |
| + pref_set->Add(kHomePageIsNewTabPage, callback); |
| return pref_set; |
| } |
| - // PrefObserver (used to enable NULL as parameter to |
| - // CreatePrefChangeRegistrar above). |
| - virtual void OnPreferenceChanged(PrefServiceBase* service, |
| - const std::string& pref_name) OVERRIDE { |
| - } |
| - |
| scoped_ptr<TestingPrefService> pref_service_; |
| }; |
| TEST_F(ObserveSetOfPreferencesTest, IsObserved) { |
| - scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar(NULL)); |
| + scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); |
| EXPECT_TRUE(pref_set->IsObserved(kHomePage)); |
| EXPECT_TRUE(pref_set->IsObserved(kHomePageIsNewTabPage)); |
| EXPECT_FALSE(pref_set->IsObserved(kApplicationLocale)); |
| } |
| TEST_F(ObserveSetOfPreferencesTest, IsManaged) { |
| - scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar(NULL)); |
| + scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); |
| EXPECT_FALSE(pref_set->IsManaged()); |
| pref_service_->SetManagedPref(kHomePage, |
| Value::CreateStringValue("http://crbug.com")); |
| @@ -186,26 +172,37 @@ TEST_F(ObserveSetOfPreferencesTest, IsManaged) { |
| EXPECT_FALSE(pref_set->IsManaged()); |
| } |
| +class MockPrefChangeCallback { |
| + public: |
| + virtual ~MockPrefChangeCallback() {} |
| + |
| + MOCK_METHOD1(OnPreferenceChanged, void(const std::string&)); |
|
Mattias Nissler (ping if slow)
2012/12/04 10:10:34
optional: You can move that declaration to the tes
Jói
2012/12/04 10:55:57
Done.
|
| +}; |
| + |
| TEST_F(ObserveSetOfPreferencesTest, Observe) { |
| using testing::_; |
| using testing::Mock; |
| - MockPrefObserver observer; |
| - scoped_ptr<PrefChangeRegistrar> pref_set( |
| - CreatePrefChangeRegistrar(&observer)); |
| + MockPrefChangeCallback observer; |
| + PrefChangeRegistrar pref_set; |
| + PrefChangeRegistrar::NamedChangeCallback callback = base::Bind( |
| + &MockPrefChangeCallback::OnPreferenceChanged, |
| + base::Unretained(&observer)); |
| + pref_set.Init(pref_service_.get()); |
| + pref_set.Add(kHomePage, callback); |
| + pref_set.Add(kHomePageIsNewTabPage, callback); |
| - EXPECT_CALL(observer, OnPreferenceChanged(pref_service_.get(), kHomePage)); |
| + EXPECT_CALL(observer, OnPreferenceChanged(kHomePage)); |
| pref_service_->SetUserPref(kHomePage, |
| Value::CreateStringValue("http://crbug.com")); |
| Mock::VerifyAndClearExpectations(&observer); |
| - EXPECT_CALL(observer, OnPreferenceChanged(pref_service_.get(), |
| - kHomePageIsNewTabPage)); |
| + EXPECT_CALL(observer, OnPreferenceChanged(kHomePageIsNewTabPage)); |
| pref_service_->SetUserPref(kHomePageIsNewTabPage, |
| Value::CreateBooleanValue(true)); |
| Mock::VerifyAndClearExpectations(&observer); |
| - EXPECT_CALL(observer, OnPreferenceChanged(_, _)).Times(0); |
| + EXPECT_CALL(observer, OnPreferenceChanged(_)).Times(0); |
| pref_service_->SetUserPref(kApplicationLocale, |
| Value::CreateStringValue("en_US.utf8")); |
| Mock::VerifyAndClearExpectations(&observer); |