| Index: chrome/browser/extensions/extension_pref_value_map_unittest.cc
|
| diff --git a/chrome/browser/extensions/extension_pref_value_map_unittest.cc b/chrome/browser/extensions/extension_pref_value_map_unittest.cc
|
| deleted file mode 100644
|
| index 4b8db2f974b1ccf1ac8aa1a83283f75fdf6e745a..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/extension_pref_value_map_unittest.cc
|
| +++ /dev/null
|
| @@ -1,400 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/prefs/pref_store_observer_mock.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/extensions/extension_pref_value_map.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -const char kExt1[] = "ext1";
|
| -const char kExt2[] = "ext2";
|
| -const char kExt3[] = "ext3";
|
| -
|
| -const char kPref1[] = "path1.subpath";
|
| -const char kPref2[] = "path2";
|
| -const char kPref3[] = "path3";
|
| -const char kPref4[] = "path4";
|
| -} // namespace
|
| -
|
| -static base::Value* CreateVal(const char* str) {
|
| - return new base::StringValue(str);
|
| -}
|
| -
|
| -static base::Time CreateTime(int64 t) {
|
| - return base::Time::FromInternalValue(t);
|
| -}
|
| -
|
| -template <typename BASECLASS>
|
| -class ExtensionPrefValueMapTestBase : public BASECLASS {
|
| - public:
|
| - static const extensions::ExtensionPrefsScope kRegular =
|
| - extensions::kExtensionPrefsScopeRegular;
|
| - static const extensions::ExtensionPrefsScope kRegularOnly =
|
| - extensions::kExtensionPrefsScopeRegularOnly;
|
| - static const extensions::ExtensionPrefsScope kIncognitoPersistent =
|
| - extensions::kExtensionPrefsScopeIncognitoPersistent;
|
| - static const extensions::ExtensionPrefsScope kIncognitoSessionOnly =
|
| - extensions::kExtensionPrefsScopeIncognitoSessionOnly;
|
| -
|
| - // Returns an empty string if the key is not set.
|
| - std::string GetValue(const char * key, bool incognito) const {
|
| - const base::Value *value =
|
| - epvm_.GetEffectivePrefValue(key, incognito, NULL);
|
| - std::string string_value;
|
| - if (value)
|
| - value->GetAsString(&string_value);
|
| - return string_value;
|
| - }
|
| -
|
| - protected:
|
| - ExtensionPrefValueMap epvm_;
|
| -};
|
| -
|
| -class ExtensionPrefValueMapTest
|
| - : public ExtensionPrefValueMapTestBase<testing::Test> {
|
| -};
|
| -
|
| -// A gmock-ified implementation of PrefStore::Observer.
|
| -class ExtensionPrefValueMapObserverMock
|
| - : public ExtensionPrefValueMap::Observer {
|
| - public:
|
| - ExtensionPrefValueMapObserverMock() {}
|
| - virtual ~ExtensionPrefValueMapObserverMock() {}
|
| -
|
| - MOCK_METHOD1(OnPrefValueChanged, void(const std::string&));
|
| - MOCK_METHOD0(OnInitializationCompleted, void());
|
| - MOCK_METHOD0(OnExtensionPrefValueMapDestruction, void());
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(ExtensionPrefValueMapObserverMock);
|
| -};
|
| -
|
| -TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValue) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - EXPECT_EQ("val1", GetValue(kPref1, false));
|
| -};
|
| -
|
| -TEST_F(ExtensionPrefValueMapTest, GetNotSetPrefValue) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - EXPECT_EQ("", GetValue(kPref1, false));
|
| -};
|
| -
|
| -// Make sure the last-installed extension wins for each preference.
|
| -TEST_F(ExtensionPrefValueMapTest, Override) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.RegisterExtension(kExt2, CreateTime(20), true);
|
| - epvm_.RegisterExtension(kExt3, CreateTime(30), true);
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
|
| - epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3"));
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4"));
|
| - epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5"));
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val6"));
|
| - epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val7"));
|
| - epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val8"));
|
| -
|
| - EXPECT_EQ("val3", GetValue(kPref1, false));
|
| - EXPECT_EQ("val5", GetValue(kPref2, false));
|
| - EXPECT_EQ("val8", GetValue(kPref3, false));
|
| -}
|
| -
|
| -TEST_F(ExtensionPrefValueMapTest, OverrideChecks) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.RegisterExtension(kExt2, CreateTime(20), true);
|
| - epvm_.RegisterExtension(kExt3, CreateTime(30), true);
|
| -
|
| - EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL));
|
| - EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL));
|
| - EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL));
|
| - EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt1, kPref1, false));
|
| - EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false));
|
| - EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false));
|
| -
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val1"));
|
| -
|
| - EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL));
|
| - EXPECT_TRUE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL));
|
| - EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL));
|
| - EXPECT_FALSE(epvm_.CanExtensionControlPref(kExt1, kPref1, false));
|
| - EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false));
|
| - EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false));
|
| -}
|
| -
|
| -TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValueIncognito) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - EXPECT_EQ("val1", GetValue(kPref1, true));
|
| -}
|
| -
|
| -TEST_F(ExtensionPrefValueMapTest, UninstallOnlyExtension) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - epvm_.UnregisterExtension(kExt1);
|
| -
|
| - EXPECT_EQ("", GetValue(kPref1, false));
|
| -}
|
| -
|
| -// Tests uninstalling an extension that wasn't winning for any preferences.
|
| -TEST_F(ExtensionPrefValueMapTest, UninstallIrrelevantExtension) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.RegisterExtension(kExt2, CreateTime(10), true);
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val3"));
|
| - epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val4"));
|
| -
|
| - epvm_.UnregisterExtension(kExt1);
|
| -
|
| - EXPECT_EQ("val2", GetValue(kPref1, false));
|
| - EXPECT_EQ("val4", GetValue(kPref2, false));
|
| -}
|
| -
|
| -// Tests uninstalling an extension that was winning for all preferences.
|
| -TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromTop) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.RegisterExtension(kExt2, CreateTime(20), true);
|
| - epvm_.RegisterExtension(kExt3, CreateTime(30), true);
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
|
| - epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3"));
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4"));
|
| - epvm_.SetExtensionPref(kExt3, kPref2, kRegular, CreateVal("val5"));
|
| -
|
| - epvm_.UnregisterExtension(kExt3);
|
| -
|
| - EXPECT_EQ("val2", GetValue(kPref1, false));
|
| - EXPECT_EQ("val4", GetValue(kPref2, false));
|
| -}
|
| -
|
| -// Tests uninstalling an extension that was winning for only some preferences.
|
| -TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromMiddle) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.RegisterExtension(kExt2, CreateTime(20), true);
|
| - epvm_.RegisterExtension(kExt3, CreateTime(30), true);
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
|
| - epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3"));
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4"));
|
| - epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5"));
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val6"));
|
| -
|
| - epvm_.SetExtensionPref(kExt2, kPref4, kRegular, CreateVal("val7"));
|
| -
|
| - epvm_.UnregisterExtension(kExt2);
|
| -
|
| - EXPECT_EQ("val3", GetValue(kPref1, false));
|
| - EXPECT_EQ("val4", GetValue(kPref2, false));
|
| - EXPECT_EQ("val6", GetValue(kPref3, false));
|
| - EXPECT_EQ("", GetValue(kPref4, false));
|
| -}
|
| -
|
| -// Tests triggering of notifications to registered observers.
|
| -TEST_F(ExtensionPrefValueMapTest, NotifyWhenNeeded) {
|
| - using testing::Mock;
|
| - using testing::StrEq;
|
| -
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| -
|
| - ExtensionPrefValueMapObserverMock observer;
|
| - epvm_.AddObserver(&observer);
|
| -
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Write the same value again.
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0);
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Override incognito value.
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val2"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Override non-incognito value.
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val3"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Disable.
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
|
| - epvm_.SetExtensionState(kExt1, false);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Enable.
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
|
| - epvm_.SetExtensionState(kExt1, true);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - // Uninstall
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
|
| - epvm_.UnregisterExtension(kExt1);
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -
|
| - epvm_.RemoveObserver(&observer);
|
| -
|
| - // Write new value --> no notification after removing observer.
|
| - EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0);
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val4"));
|
| - Mock::VerifyAndClearExpectations(&observer);
|
| -}
|
| -
|
| -// Tests disabling an extension.
|
| -TEST_F(ExtensionPrefValueMapTest, DisableExt) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - epvm_.SetExtensionState(kExt1, false);
|
| - EXPECT_EQ("", GetValue(kPref1, false));
|
| -}
|
| -
|
| -// Tests disabling and reenabling an extension.
|
| -TEST_F(ExtensionPrefValueMapTest, ReenableExt) {
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| -
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
|
| - epvm_.SetExtensionState(kExt1, false);
|
| - epvm_.SetExtensionState(kExt1, true);
|
| - EXPECT_EQ("val1", GetValue(kPref1, false));
|
| -}
|
| -
|
| -struct OverrideIncognitoTestCase {
|
| - OverrideIncognitoTestCase(int val_ext1_regular,
|
| - int val_ext1_regular_only,
|
| - int val_ext1_incognito_pers,
|
| - int val_ext1_incognito_sess,
|
| - int val_ext2_regular,
|
| - int val_ext2_regular_only,
|
| - int val_ext2_incognito_pers,
|
| - int val_ext2_incognito_sess,
|
| - int effective_value_regular,
|
| - int effective_value_incognito)
|
| - : val_ext1_regular_(val_ext1_regular),
|
| - val_ext1_regular_only_(val_ext1_regular_only),
|
| - val_ext1_incognito_pers_(val_ext1_incognito_pers),
|
| - val_ext1_incognito_sess_(val_ext1_incognito_sess),
|
| - val_ext2_regular_(val_ext2_regular),
|
| - val_ext2_regular_only_(val_ext2_regular_only),
|
| - val_ext2_incognito_pers_(val_ext2_incognito_pers),
|
| - val_ext2_incognito_sess_(val_ext2_incognito_sess),
|
| - effective_value_regular_(effective_value_regular),
|
| - effective_value_incognito_(effective_value_incognito) {}
|
| -
|
| - // pers. = persistent
|
| - // sess. = session only
|
| - int val_ext1_regular_; // pref value of extension 1
|
| - int val_ext1_regular_only_; // pref value of extension 1 regular-only.
|
| - int val_ext1_incognito_pers_; // pref value of extension 1 incognito pers.
|
| - int val_ext1_incognito_sess_; // pref value of extension 1 incognito sess.
|
| - int val_ext2_regular_; // pref value of extension 2
|
| - int val_ext2_regular_only_; // pref value of extension 2 regular-only.
|
| - int val_ext2_incognito_pers_; // pref value of extension 2 incognito pers.
|
| - int val_ext2_incognito_sess_; // pref value of extension 2 incognito sess.
|
| - int effective_value_regular_; // desired winner regular
|
| - int effective_value_incognito_; // desired winner incognito
|
| -};
|
| -
|
| -class ExtensionPrefValueMapTestIncognitoTests
|
| - : public ExtensionPrefValueMapTestBase<
|
| - testing::TestWithParam<OverrideIncognitoTestCase> > {
|
| -};
|
| -
|
| -TEST_P(ExtensionPrefValueMapTestIncognitoTests, OverrideIncognito) {
|
| - OverrideIncognitoTestCase test = GetParam();
|
| - const char* strings[] = {
|
| - "undefined",
|
| - "val1",
|
| - "val2",
|
| - "val3",
|
| - "val4",
|
| - "val5",
|
| - "val6",
|
| - "val7",
|
| - "val8",
|
| - };
|
| -
|
| - epvm_.RegisterExtension(kExt1, CreateTime(10), true);
|
| - epvm_.RegisterExtension(kExt2, CreateTime(20), true);
|
| - if (test.val_ext1_regular_) {
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegular,
|
| - CreateVal(strings[test.val_ext1_regular_]));
|
| - }
|
| - if (test.val_ext1_regular_only_) {
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kRegularOnly,
|
| - CreateVal(strings[test.val_ext1_regular_only_]));
|
| - }
|
| - if (test.val_ext1_incognito_pers_) {
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kIncognitoPersistent,
|
| - CreateVal(strings[test.val_ext1_incognito_pers_]));
|
| - }
|
| - if (test.val_ext1_incognito_sess_) {
|
| - epvm_.SetExtensionPref(kExt1, kPref1, kIncognitoSessionOnly,
|
| - CreateVal(strings[test.val_ext1_incognito_sess_]));
|
| - }
|
| - if (test.val_ext2_regular_) {
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kRegular,
|
| - CreateVal(strings[test.val_ext2_regular_]));
|
| - }
|
| - if (test.val_ext2_regular_only_) {
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kRegularOnly,
|
| - CreateVal(strings[test.val_ext2_regular_only_]));
|
| - }
|
| - if (test.val_ext2_incognito_pers_) {
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kIncognitoPersistent,
|
| - CreateVal(strings[test.val_ext2_incognito_pers_]));
|
| - }
|
| - if (test.val_ext2_incognito_sess_) {
|
| - epvm_.SetExtensionPref(kExt2, kPref1, kIncognitoSessionOnly,
|
| - CreateVal(strings[test.val_ext2_incognito_sess_]));
|
| - }
|
| - std::string actual;
|
| - EXPECT_EQ(strings[test.effective_value_regular_], GetValue(kPref1, false));
|
| - EXPECT_EQ(strings[test.effective_value_incognito_], GetValue(kPref1, true));
|
| - epvm_.UnregisterExtension(kExt1);
|
| - epvm_.UnregisterExtension(kExt2);
|
| -}
|
| -
|
| -INSTANTIATE_TEST_CASE_P(
|
| - ExtensionPrefValueMapTestIncognitoTestsInstance,
|
| - ExtensionPrefValueMapTestIncognitoTests,
|
| - testing::Values(
|
| - // e.g. (1, 0, 0, 0, 0, 0, 7, 0, 1, 7), means:
|
| - // ext1 regular is set to "val1", ext2 incognito persistent is set to
|
| - // "val7"
|
| - // --> the winning regular value is "val1", the winning incognito
|
| - // value is "val7".
|
| - OverrideIncognitoTestCase(1, 0, 0, 0, 0, 0, 0, 0, 1, 1),
|
| - OverrideIncognitoTestCase(1, 2, 0, 0, 0, 0, 0, 0, 2, 1),
|
| - OverrideIncognitoTestCase(1, 0, 3, 0, 0, 0, 0, 0, 1, 3),
|
| - OverrideIncognitoTestCase(1, 0, 0, 4, 0, 0, 0, 0, 1, 4),
|
| - OverrideIncognitoTestCase(1, 0, 3, 4, 0, 0, 0, 0, 1, 4),
|
| - OverrideIncognitoTestCase(1, 2, 3, 0, 0, 0, 0, 0, 2, 3),
|
| - OverrideIncognitoTestCase(1, 0, 0, 0, 5, 0, 0, 0, 5, 5),
|
| - OverrideIncognitoTestCase(1, 2, 3, 0, 5, 0, 0, 0, 5, 5),
|
| - OverrideIncognitoTestCase(1, 0, 0, 0, 0, 6, 0, 0, 6, 1),
|
| - OverrideIncognitoTestCase(1, 0, 3, 0, 5, 6, 0, 0, 6, 5),
|
| - OverrideIncognitoTestCase(1, 0, 0, 4, 5, 6, 0, 0, 6, 5),
|
| - OverrideIncognitoTestCase(1, 0, 0, 0, 0, 0, 7, 0, 1, 7),
|
| - OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 7, 0, 5, 7),
|
| - OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 0, 8, 5, 8),
|
| - OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 7, 8, 5, 8),
|
| - OverrideIncognitoTestCase(1, 2, 3, 0, 0, 6, 7, 0, 6, 7)));
|
|
|