| OLD | NEW |
| (Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/pref_set_observer.h" |
| 6 #include "chrome/common/notification_observer_mock.h" |
| 7 #include "chrome/common/pref_names.h" |
| 8 #include "chrome/test/testing_pref_service.h" |
| 9 #include "testing/gmock/include/gmock/gmock.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 |
| 12 // Unit tests for PrefSetObserver. |
| 13 class PrefSetObserverTest : public testing::Test { |
| 14 public: |
| 15 virtual void SetUp() { |
| 16 pref_service_.reset(new TestingPrefService); |
| 17 pref_service_->RegisterStringPref(prefs::kHomePage, "http://google.com"); |
| 18 pref_service_->RegisterBooleanPref(prefs::kHomePageIsNewTabPage, false); |
| 19 pref_service_->RegisterStringPref(prefs::kApplicationLocale, ""); |
| 20 } |
| 21 |
| 22 PrefSetObserver* CreatePrefSetObserver(NotificationObserver* observer) { |
| 23 PrefSetObserver* pref_set = |
| 24 new PrefSetObserver(pref_service_.get(), observer); |
| 25 pref_set->AddPref(prefs::kHomePage); |
| 26 pref_set->AddPref(prefs::kHomePageIsNewTabPage); |
| 27 return pref_set; |
| 28 } |
| 29 |
| 30 scoped_ptr<TestingPrefService> pref_service_; |
| 31 }; |
| 32 |
| 33 TEST_F(PrefSetObserverTest, IsObserved) { |
| 34 scoped_ptr<PrefSetObserver> pref_set(CreatePrefSetObserver(NULL)); |
| 35 EXPECT_TRUE(pref_set->IsObserved(prefs::kHomePage)); |
| 36 EXPECT_TRUE(pref_set->IsObserved(prefs::kHomePageIsNewTabPage)); |
| 37 EXPECT_FALSE(pref_set->IsObserved(prefs::kApplicationLocale)); |
| 38 } |
| 39 |
| 40 TEST_F(PrefSetObserverTest, IsManaged) { |
| 41 scoped_ptr<PrefSetObserver> pref_set(CreatePrefSetObserver(NULL)); |
| 42 EXPECT_FALSE(pref_set->IsManaged()); |
| 43 pref_service_->SetManagedPref(prefs::kHomePage, |
| 44 Value::CreateStringValue("http://crbug.com")); |
| 45 EXPECT_TRUE(pref_set->IsManaged()); |
| 46 pref_service_->SetManagedPref(prefs::kHomePageIsNewTabPage, |
| 47 Value::CreateBooleanValue(true)); |
| 48 EXPECT_TRUE(pref_set->IsManaged()); |
| 49 pref_service_->RemoveManagedPref(prefs::kHomePage); |
| 50 EXPECT_TRUE(pref_set->IsManaged()); |
| 51 pref_service_->RemoveManagedPref(prefs::kHomePageIsNewTabPage); |
| 52 EXPECT_FALSE(pref_set->IsManaged()); |
| 53 } |
| 54 |
| 55 MATCHER_P(PrefNameDetails, name, "details references named preference") { |
| 56 std::wstring* pstr = |
| 57 reinterpret_cast<const Details<std::wstring>&>(arg).ptr(); |
| 58 return pstr && *pstr == name; |
| 59 } |
| 60 |
| 61 TEST_F(PrefSetObserverTest, Observe) { |
| 62 using testing::_; |
| 63 using testing::Mock; |
| 64 |
| 65 NotificationObserverMock observer; |
| 66 scoped_ptr<PrefSetObserver> pref_set(CreatePrefSetObserver(&observer)); |
| 67 |
| 68 EXPECT_CALL(observer, |
| 69 Observe(NotificationType(NotificationType::PREF_CHANGED), |
| 70 Source<PrefService>(pref_service_.get()), |
| 71 PrefNameDetails(prefs::kHomePage))); |
| 72 pref_service_->SetUserPref(prefs::kHomePage, |
| 73 Value::CreateStringValue("http://crbug.com")); |
| 74 Mock::VerifyAndClearExpectations(&observer); |
| 75 |
| 76 EXPECT_CALL(observer, |
| 77 Observe(NotificationType(NotificationType::PREF_CHANGED), |
| 78 Source<PrefService>(pref_service_.get()), |
| 79 PrefNameDetails(prefs::kHomePageIsNewTabPage))); |
| 80 pref_service_->SetUserPref(prefs::kHomePageIsNewTabPage, |
| 81 Value::CreateBooleanValue(true)); |
| 82 Mock::VerifyAndClearExpectations(&observer); |
| 83 |
| 84 EXPECT_CALL(observer, Observe(_, _, _)).Times(0); |
| 85 pref_service_->SetUserPref(prefs::kApplicationLocale, |
| 86 Value::CreateStringValue("en_US.utf8")); |
| 87 Mock::VerifyAndClearExpectations(&observer); |
| 88 } |
| OLD | NEW |