| Index: chrome/browser/extensions/extension_pref_store_unittest.cc
|
| diff --git a/chrome/browser/extensions/extension_pref_store_unittest.cc b/chrome/browser/extensions/extension_pref_store_unittest.cc
|
| index 45b22d541bc3dda12e1ecc87ca0f29335a7fe7e6..5381e11bcc0b5ee8ae5273d82f9905fe4a603767 100644
|
| --- a/chrome/browser/extensions/extension_pref_store_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_pref_store_unittest.cc
|
| @@ -9,15 +9,13 @@
|
| #include "base/scoped_temp_dir.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/extensions/extension_pref_store.h"
|
| -#include "chrome/browser/prefs/default_pref_store.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/browser/prefs/pref_value_store.h"
|
| #include "chrome/common/extensions/extension.h"
|
| -#include "chrome/test/testing_pref_service.h"
|
| -#include "chrome/test/testing_pref_value_store.h"
|
| +#include "chrome/common/pref_store_observer_mock.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +using testing::_;
|
| +
|
| namespace keys = extension_manifest_keys;
|
|
|
| namespace {
|
| @@ -25,11 +23,10 @@ namespace {
|
| class TestExtensionPrefStore : public ExtensionPrefStore {
|
| public:
|
| TestExtensionPrefStore()
|
| - : ExtensionPrefStore(NULL, PrefNotifier::EXTENSION_STORE),
|
| + : ExtensionPrefStore(NULL),
|
| ext1(NULL),
|
| ext2(NULL),
|
| - ext3(NULL),
|
| - pref_service_(NULL) {
|
| + ext3(NULL) {
|
| // Can't use ASSERT_TRUE here because a constructor can't return a value.
|
| if (!temp_dir_.CreateUniqueTempDir()) {
|
| ADD_FAILURE() << "Failed to create temp dir";
|
| @@ -61,15 +58,6 @@ class TestExtensionPrefStore : public ExtensionPrefStore {
|
| GetExtensionIDs(result);
|
| }
|
|
|
| - void SetPrefService(PrefService* pref_service) {
|
| - pref_service_ = pref_service;
|
| - }
|
| -
|
| - // Overridden from ExtensionPrefStore.
|
| - virtual PrefService* GetPrefService() {
|
| - return pref_service_;
|
| - }
|
| -
|
| // Weak references, for convenience.
|
| Extension* ext1;
|
| Extension* ext2;
|
| @@ -81,32 +69,6 @@ class TestExtensionPrefStore : public ExtensionPrefStore {
|
| scoped_refptr<Extension> ext1_scoped_;
|
| scoped_refptr<Extension> ext2_scoped_;
|
| scoped_refptr<Extension> ext3_scoped_;
|
| -
|
| - // Weak reference.
|
| - PrefService* pref_service_;
|
| -};
|
| -
|
| -// Mock PrefNotifier that allows the notifications to be tracked.
|
| -class MockPrefNotifier : public PrefNotifier {
|
| - public:
|
| - MockPrefNotifier(PrefService* service, PrefValueStore* value_store)
|
| - : PrefNotifier(service, value_store) {}
|
| -
|
| - virtual ~MockPrefNotifier() {}
|
| -
|
| - MOCK_METHOD1(FireObservers, void(const char* path));
|
| -};
|
| -
|
| -// Mock PrefService that allows the PrefNotifier to be injected.
|
| -class MockPrefService : public PrefService {
|
| - public:
|
| - explicit MockPrefService(PrefValueStore* pref_value_store)
|
| - : PrefService(pref_value_store) {
|
| - }
|
| -
|
| - void SetPrefNotifier(MockPrefNotifier* notifier) {
|
| - pref_notifier_.reset(notifier);
|
| - }
|
| };
|
|
|
| // Use constants to avoid confusing std::map with hard-coded strings.
|
| @@ -336,35 +298,30 @@ TEST(ExtensionPrefStoreTest, UninstallExtensionFromMiddle) {
|
| TEST(ExtensionPrefStoreTest, NotifyWhenNeeded) {
|
| using testing::Mock;
|
|
|
| - TestExtensionPrefStore* eps = new TestExtensionPrefStore;
|
| - DefaultPrefStore* dps = new DefaultPrefStore;
|
| - ASSERT_TRUE(eps->ext1 != NULL);
|
| -
|
| - // The PrefValueStore takes ownership of the PrefStores; in this case, that's
|
| - // only an ExtensionPrefStore. Likewise, the PrefService takes ownership of
|
| - // the PrefValueStore and PrefNotifier.
|
| - PrefValueStore* value_store =
|
| - new TestingPrefValueStore(NULL, NULL, eps, NULL, NULL, NULL, dps);
|
| - scoped_ptr<MockPrefService> pref_service(new MockPrefService(value_store));
|
| - MockPrefNotifier* pref_notifier = new MockPrefNotifier(pref_service.get(),
|
| - value_store);
|
| - pref_service->SetPrefNotifier(pref_notifier);
|
| -
|
| - eps->SetPrefService(pref_service.get());
|
| - pref_service->RegisterStringPref(kPref1, std::string());
|
| -
|
| - EXPECT_CALL(*pref_notifier, FireObservers(kPref1));
|
| - eps->InstallExtensionPref(eps->ext1, kPref1,
|
| + TestExtensionPrefStore eps;
|
| + ASSERT_TRUE(eps.ext1 != NULL);
|
| +
|
| + PrefStoreObserverMock observer;
|
| + eps.AddObserver(&observer);
|
| +
|
| + EXPECT_CALL(observer, OnPrefValueChanged(kPref1)).Times(1);
|
| + eps.InstallExtensionPref(eps.ext1, kPref1,
|
| Value::CreateStringValue("https://www.chromium.org"));
|
| - Mock::VerifyAndClearExpectations(pref_notifier);
|
| + Mock::VerifyAndClearExpectations(&observer);
|
|
|
| - EXPECT_CALL(*pref_notifier, FireObservers(kPref1)).Times(0);
|
| - eps->InstallExtensionPref(eps->ext1, kPref1,
|
| + EXPECT_CALL(observer, OnPrefValueChanged(_)).Times(0);
|
| + eps.InstallExtensionPref(eps.ext1, kPref1,
|
| Value::CreateStringValue("https://www.chromium.org"));
|
| - Mock::VerifyAndClearExpectations(pref_notifier);
|
| + Mock::VerifyAndClearExpectations(&observer);
|
|
|
| - EXPECT_CALL(*pref_notifier, FireObservers(kPref1)).Times(2);
|
| - eps->InstallExtensionPref(eps->ext1, kPref1,
|
| + EXPECT_CALL(observer, OnPrefValueChanged(kPref1)).Times(1);
|
| + eps.InstallExtensionPref(eps.ext1, kPref1,
|
| Value::CreateStringValue("chrome://newtab"));
|
| - eps->UninstallExtension(eps->ext1);
|
| + Mock::VerifyAndClearExpectations(&observer);
|
| +
|
| + EXPECT_CALL(observer, OnPrefValueChanged(kPref1)).Times(1);
|
| + eps.UninstallExtension(eps.ext1);
|
| + Mock::VerifyAndClearExpectations(&observer);
|
| +
|
| + eps.RemoveObserver(&observer);
|
| }
|
|
|