12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/bind.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/bind_helpers.h" 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_change_registrar.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_observer.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry_simple.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/testing_pref_service.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using testing::Mock; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using testing::Eq; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomePage[] = "homepage"; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage"; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kApplicationLocale[] = "intl.app_locale"; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A mock provider that allows us to capture pref observer changes. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MockPrefService : public TestingPrefServiceSimple { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockPrefService() {} 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~MockPrefService() {} 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD2(AddPrefObserver, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const char*, PrefObserver*)); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD2(RemovePrefObserver, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void(const char*, PrefObserver*)); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefChangeRegistrarTest : public testing::Test { 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrarTest() {} 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~PrefChangeRegistrarTest() {} 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() OVERRIDE; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Closure observer() const { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return base::Bind(&base::DoNothing); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MockPrefService* service() const { return service_.get(); } 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<MockPrefService> service_; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PrefChangeRegistrarTest::SetUp() { 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service_.reset(new MockPrefService()); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(PrefChangeRegistrarTest, AddAndRemove) { 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrar registrar; 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Init(service()); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Test adding. 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddPrefObserver(Eq(std::string("test.pref.1")), ®istrar)); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddPrefObserver(Eq(std::string("test.pref.2")), ®istrar)); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Add("test.pref.1", observer()); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Add("test.pref.2", observer()); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(registrar.IsEmpty()); 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Test removing. 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(service()); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RemovePrefObserver(Eq(std::string("test.pref.1")), ®istrar)); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RemovePrefObserver(Eq(std::string("test.pref.2")), ®istrar)); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Remove("test.pref.1"); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Remove("test.pref.2"); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(registrar.IsEmpty()); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Explicitly check the expectations now to make sure that the Removes 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // worked (rather than the registrar destructor doing the work). 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(service()); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(PrefChangeRegistrarTest, AutoRemove) { 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrar registrar; 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Init(service()); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Setup of auto-remove. 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddPrefObserver(Eq(std::string("test.pref.1")), ®istrar)); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Add("test.pref.1", observer()); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(service()); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(registrar.IsEmpty()); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Test auto-removing. 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RemovePrefObserver(Eq(std::string("test.pref.1")), ®istrar)); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(PrefChangeRegistrarTest, RemoveAll) { 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrar registrar; 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Init(service()); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddPrefObserver(Eq(std::string("test.pref.1")), ®istrar)); 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddPrefObserver(Eq(std::string("test.pref.2")), ®istrar)); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Add("test.pref.1", observer()); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.Add("test.pref.2", observer()); 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(service()); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RemovePrefObserver(Eq(std::string("test.pref.1")), ®istrar)); 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*service(), 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RemovePrefObserver(Eq(std::string("test.pref.2")), ®istrar)); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar.RemoveAll(); 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(registrar.IsEmpty()); 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Explicitly check the expectations now to make sure that the RemoveAll 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // worked (rather than the registrar destructor doing the work). 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(service()); 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ObserveSetOfPreferencesTest : public testing::Test { 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() { 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_.reset(new TestingPrefServiceSimple); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefRegistrySimple* registry = pref_service_->registry(); 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterStringPref(kHomePage, "http://google.com"); 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterBooleanPref(kHomePageIsNewTabPage, false); 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterStringPref(kApplicationLocale, std::string()); 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrar* CreatePrefChangeRegistrar() { 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrar* pref_set = new PrefChangeRegistrar(); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Closure callback = base::Bind(&base::DoNothing); 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_set->Init(pref_service_.get()); 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_set->Add(kHomePage, callback); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_set->Add(kHomePageIsNewTabPage, callback); 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return pref_set; 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MOCK_METHOD1(OnPreferenceChanged, void(const std::string&)); 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestingPrefServiceSimple> pref_service_; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(ObserveSetOfPreferencesTest, IsObserved) { 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(pref_set->IsObserved(kHomePage)); 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(pref_set->IsObserved(kHomePageIsNewTabPage)); 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(pref_set->IsObserved(kApplicationLocale)); 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(ObserveSetOfPreferencesTest, IsManaged) { 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefChangeRegistrar> pref_set(CreatePrefChangeRegistrar()); 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(pref_set->IsManaged()); 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_->SetManagedPref(kHomePage, 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new StringValue("http://crbug.com")); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(pref_set->IsManaged()); 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_->SetManagedPref(kHomePageIsNewTabPage, 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new FundamentalValue(true)); 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(pref_set->IsManaged()); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_->RemoveManagedPref(kHomePage); 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(pref_set->IsManaged()); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_->RemoveManagedPref(kHomePageIsNewTabPage); 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(pref_set->IsManaged()); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(ObserveSetOfPreferencesTest, Observe) { 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) using testing::_; 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) using testing::Mock; 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrar pref_set; 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefChangeRegistrar::NamedChangeCallback callback = base::Bind( 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &ObserveSetOfPreferencesTest::OnPreferenceChanged, 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this)); 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_set.Init(pref_service_.get()); 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_set.Add(kHomePage, callback); 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_set.Add(kHomePageIsNewTabPage, callback); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*this, OnPreferenceChanged(kHomePage)); 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_->SetUserPref(kHomePage, new StringValue("http://crbug.com")); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(this); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*this, OnPreferenceChanged(kHomePageIsNewTabPage)); 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_->SetUserPref(kHomePageIsNewTabPage, 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) new FundamentalValue(true)); 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(this); 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_CALL(*this, OnPreferenceChanged(_)).Times(0); 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service_->SetUserPref(kApplicationLocale, new StringValue("en_US.utf8")); 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mock::VerifyAndClearExpectations(this); 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace base 201