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")), &registrar));
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_CALL(*service(),
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              AddPrefObserver(Eq(std::string("test.pref.2")), &registrar));
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")), &registrar));
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_CALL(*service(),
782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              RemovePrefObserver(Eq(std::string("test.pref.2")), &registrar));
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")), &registrar));
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")), &registrar));
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")), &registrar));
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_CALL(*service(),
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              AddPrefObserver(Eq(std::string("test.pref.2")), &registrar));
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")), &registrar));
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_CALL(*service(),
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              RemovePrefObserver(Eq(std::string("test.pref.2")), &registrar));
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