Index: chrome/browser/prefs/pref_notifier_impl_unittest.cc |
diff --git a/chrome/browser/prefs/pref_notifier_impl_unittest.cc b/chrome/browser/prefs/pref_notifier_impl_unittest.cc |
index 6a5388ea27317484d6b0a2a3b7e2dfafd0c1ebcd..4c5211e5758fe1559b378d1409d4f19777d0edea 100644 |
--- a/chrome/browser/prefs/pref_notifier_impl_unittest.cc |
+++ b/chrome/browser/prefs/pref_notifier_impl_unittest.cc |
@@ -2,16 +2,15 @@ |
// 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/callback.h" |
+#include "base/prefs/public/pref_observer.h" |
#include "chrome/browser/prefs/pref_notifier_impl.h" |
#include "chrome/browser/prefs/pref_observer_mock.h" |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/browser/prefs/pref_value_store.h" |
#include "chrome/common/chrome_notification_types.h" |
#include "chrome/test/base/testing_pref_service.h" |
-#include "content/public/browser/notification_details.h" |
-#include "content/public/browser/notification_registrar.h" |
-#include "content/public/browser/notification_source.h" |
-#include "content/public/test/mock_notification_observer.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -26,7 +25,22 @@ namespace { |
const char kChangedPref[] = "changed_pref"; |
const char kUnchangedPref[] = "unchanged_pref"; |
-// Test PrefNotifier that allows tracking of observers and notifications. |
+class MockPrefInitObserver { |
+ public: |
+ MOCK_METHOD1(OnInitializationCompleted, void(bool)); |
+}; |
+ |
+// This is an unmodified PrefNotifierImpl, except we make |
+// OnPreferenceChanged public for tests. |
+class TestingPrefNotifierImpl : public PrefNotifierImpl { |
+ public: |
+ TestingPrefNotifierImpl(PrefService* service) : PrefNotifierImpl(service) {} |
+ |
+ // Make public for tests. |
+ using PrefNotifierImpl::OnPreferenceChanged; |
+}; |
+ |
+// Mock PrefNotifier that allows tracking of observers and notifications. |
class MockPrefNotifier : public PrefNotifierImpl { |
public: |
explicit MockPrefNotifier(PrefService* pref_service) |
@@ -35,15 +49,15 @@ class MockPrefNotifier : public PrefNotifierImpl { |
MOCK_METHOD1(FireObservers, void(const std::string& path)); |
- size_t CountObserver(const char* path, content::NotificationObserver* obs) { |
+ size_t CountObserver(const char* path, PrefObserver* obs) { |
PrefObserverMap::const_iterator observer_iterator = |
pref_observers()->find(path); |
if (observer_iterator == pref_observers()->end()) |
return false; |
- NotificationObserverList* observer_list = observer_iterator->second; |
- NotificationObserverList::Iterator it(*observer_list); |
- content::NotificationObserver* existing_obs; |
+ PrefObserverList* observer_list = observer_iterator->second; |
+ PrefObserverList::Iterator it(*observer_list); |
+ PrefObserver* existing_obs; |
size_t count = 0; |
while ((existing_obs = it.GetNext()) != NULL) { |
if (existing_obs == obs) |
@@ -52,6 +66,10 @@ class MockPrefNotifier : public PrefNotifierImpl { |
return count; |
} |
+ |
+ // Make public for tests below. |
+ using PrefNotifierImpl::OnPreferenceChanged; |
+ using PrefNotifierImpl::OnInitializationCompleted; |
}; |
// Test fixture class. |
@@ -80,14 +98,11 @@ TEST_F(PrefNotifierTest, OnPreferenceChanged) { |
TEST_F(PrefNotifierTest, OnInitializationCompleted) { |
MockPrefNotifier notifier(&pref_service_); |
- content::MockNotificationObserver observer; |
- content::NotificationRegistrar registrar; |
- registrar.Add(&observer, chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED, |
- content::Source<PrefService>(&pref_service_)); |
- EXPECT_CALL(observer, Observe( |
- int(chrome::NOTIFICATION_PREF_INITIALIZATION_COMPLETED), |
- content::Source<PrefService>(&pref_service_), |
- Property(&content::Details<bool>::ptr, testing::Pointee(true)))); |
+ MockPrefInitObserver observer; |
+ notifier.AddInitObserver( |
+ base::Bind(&MockPrefInitObserver::OnInitializationCompleted, |
+ base::Unretained(&observer))); |
+ EXPECT_CALL(observer, OnInitializationCompleted(true)); |
notifier.OnInitializationCompleted(true); |
} |
@@ -155,13 +170,12 @@ TEST_F(PrefNotifierTest, AddAndRemovePrefObservers) { |
} |
TEST_F(PrefNotifierTest, FireObservers) { |
- base::FundamentalValue value_true(true); |
- PrefNotifierImpl notifier(&pref_service_); |
+ TestingPrefNotifierImpl notifier(&pref_service_); |
notifier.AddPrefObserver(kChangedPref, &obs1_); |
notifier.AddPrefObserver(kUnchangedPref, &obs1_); |
- obs1_.Expect(&pref_service_, kChangedPref, &value_true); |
- EXPECT_CALL(obs2_, Observe(_, _, _)).Times(0); |
+ EXPECT_CALL(obs1_, OnPreferenceChanged(&pref_service_, kChangedPref)); |
+ EXPECT_CALL(obs2_, OnPreferenceChanged(_, _)).Times(0); |
notifier.OnPreferenceChanged(kChangedPref); |
Mock::VerifyAndClearExpectations(&obs1_); |
Mock::VerifyAndClearExpectations(&obs2_); |
@@ -169,8 +183,8 @@ TEST_F(PrefNotifierTest, FireObservers) { |
notifier.AddPrefObserver(kChangedPref, &obs2_); |
notifier.AddPrefObserver(kUnchangedPref, &obs2_); |
- obs1_.Expect(&pref_service_, kChangedPref, &value_true); |
- obs2_.Expect(&pref_service_, kChangedPref, &value_true); |
+ EXPECT_CALL(obs1_, OnPreferenceChanged(&pref_service_, kChangedPref)); |
+ EXPECT_CALL(obs2_, OnPreferenceChanged(&pref_service_, kChangedPref)); |
notifier.OnPreferenceChanged(kChangedPref); |
Mock::VerifyAndClearExpectations(&obs1_); |
Mock::VerifyAndClearExpectations(&obs2_); |
@@ -178,8 +192,8 @@ TEST_F(PrefNotifierTest, FireObservers) { |
// Make sure removing an observer from one pref doesn't affect anything else. |
notifier.RemovePrefObserver(kChangedPref, &obs1_); |
- EXPECT_CALL(obs1_, Observe(_, _, _)).Times(0); |
- obs2_.Expect(&pref_service_, kChangedPref, &value_true); |
+ EXPECT_CALL(obs1_, OnPreferenceChanged(_, _)).Times(0); |
+ EXPECT_CALL(obs2_, OnPreferenceChanged(&pref_service_, kChangedPref)); |
notifier.OnPreferenceChanged(kChangedPref); |
Mock::VerifyAndClearExpectations(&obs1_); |
Mock::VerifyAndClearExpectations(&obs2_); |
@@ -187,8 +201,8 @@ TEST_F(PrefNotifierTest, FireObservers) { |
// Make sure removing an observer entirely doesn't affect anything else. |
notifier.RemovePrefObserver(kUnchangedPref, &obs1_); |
- EXPECT_CALL(obs1_, Observe(_, _, _)).Times(0); |
- obs2_.Expect(&pref_service_, kChangedPref, &value_true); |
+ EXPECT_CALL(obs1_, OnPreferenceChanged(_, _)).Times(0); |
+ EXPECT_CALL(obs2_, OnPreferenceChanged(&pref_service_, kChangedPref)); |
notifier.OnPreferenceChanged(kChangedPref); |
Mock::VerifyAndClearExpectations(&obs1_); |
Mock::VerifyAndClearExpectations(&obs2_); |