Index: chrome/browser/prefs/pref_model_associator_unittest.cc |
diff --git a/chrome/browser/prefs/pref_model_associator_unittest.cc b/chrome/browser/prefs/pref_model_associator_unittest.cc |
index 520eea8c92cbd3c814173d3637d4de834c80d58d..8b29a453dfc7373cddfbfc39d3b2b8f3555974ba 100644 |
--- a/chrome/browser/prefs/pref_model_associator_unittest.cc |
+++ b/chrome/browser/prefs/pref_model_associator_unittest.cc |
@@ -2,30 +2,58 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/prefs/scoped_user_pref_update.h" |
#include "base/values.h" |
#include "chrome/browser/prefs/pref_model_associator.h" |
-#include "chrome/common/pref_names.h" |
-#include "chrome/test/base/testing_profile.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
+#include "chrome/browser/prefs/pref_model_associator_client.h" |
+#include "chrome/browser/prefs/pref_service_mock_factory.h" |
+#include "chrome/browser/prefs/pref_service_syncable.h" |
+#include "chrome/browser/prefs/pref_service_syncable_factory.h" |
+#include "components/pref_registry/pref_registry_syncable.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-// Any content settings pref name should do for these tests. |
-const char* kContentSettingsPrefName = |
- "profile.content_settings.exceptions.cookies"; |
+namespace { |
+ |
+const char kStringPrefName[] = "string_pref"; |
+const char kListPrefName[] = "list_pref"; |
+const char kDictionaryPrefName[] = "dictionary_pref"; |
+ |
+} // namespace |
class AbstractPreferenceMergeTest : public testing::Test { |
protected: |
- void SetUp() override { pref_service_ = profile_.GetPrefs(); } |
+ AbstractPreferenceMergeTest() { |
+ pref_model_associator_client_.RegisterPreference( |
+ kListPrefName, PREF_MODEL_PREFERENCE_TYPE_LIST); |
+ pref_model_associator_client_.RegisterPreference( |
+ kDictionaryPrefName, PREF_MODEL_PREFERENCE_TYPE_DICT); |
+ |
+ PrefServiceMockFactory factory; |
+ factory.SetPrefModelAssociatorClient(&pref_model_associator_client_); |
+ scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry( |
+ new user_prefs::PrefRegistrySyncable); |
+ pref_service_ = factory.CreateSyncable(pref_registry.get()); |
gab
2015/09/10 14:15:09
We're trying to move towards a world where all reg
|
+ |
+ pref_registry->RegisterStringPref( |
+ kStringPrefName, std::string(), |
+ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
+ pref_registry->RegisterListPref( |
+ kListPrefName, |
+ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
+ pref_registry->RegisterDictionaryPref( |
+ kDictionaryPrefName, |
+ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); |
+ } |
void SetContentPattern(base::DictionaryValue* patterns_dict, |
const std::string& expression, |
int setting) { |
base::DictionaryValue* expression_dict; |
- bool found = |
- patterns_dict->GetDictionaryWithoutPathExpansion(expression, |
- &expression_dict); |
+ bool found = patterns_dict->GetDictionaryWithoutPathExpansion( |
+ expression, &expression_dict); |
if (!found) { |
expression_dict = new base::DictionaryValue; |
patterns_dict->SetWithoutPathExpansion(expression, expression_dict); |
@@ -49,18 +77,17 @@ class AbstractPreferenceMergeTest : public testing::Test { |
pref_service_->Set(pref_name.c_str(), *empty_value); |
} |
- content::TestBrowserThreadBundle thread_bundle_; |
- TestingProfile profile_; |
- PrefService* pref_service_; |
+ PrefModelAssociatorClient pref_model_associator_client_; |
+ scoped_ptr<PrefServiceSyncable> pref_service_; |
}; |
class ListPreferenceMergeTest : public AbstractPreferenceMergeTest { |
protected: |
- ListPreferenceMergeTest() : |
- server_url0_("http://example.com/server0"), |
- server_url1_("http://example.com/server1"), |
- local_url0_("http://example.com/local0"), |
- local_url1_("http://example.com/local1") {} |
+ ListPreferenceMergeTest() |
+ : server_url0_("http://example.com/server0"), |
+ server_url1_("http://example.com/server1"), |
+ local_url0_("http://example.com/local0"), |
+ local_url1_("http://example.com/local1") {} |
void SetUp() override { |
AbstractPreferenceMergeTest::SetUp(); |
@@ -76,80 +103,85 @@ class ListPreferenceMergeTest : public AbstractPreferenceMergeTest { |
}; |
TEST_F(ListPreferenceMergeTest, NotListOrDictionary) { |
- pref_service_->SetString(prefs::kHomePage, local_url0_); |
+ pref_service_->SetString(kStringPrefName, local_url0_); |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(prefs::kHomePage); |
+ pref_service_->FindPreference(kStringPrefName); |
scoped_ptr<base::Value> server_value(new base::StringValue(server_url0_)); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- *server_value)); |
+ *server_value, |
+ &pref_model_associator_client_)); |
EXPECT_TRUE(merged_value->Equals(server_value.get())); |
} |
TEST_F(ListPreferenceMergeTest, LocalEmpty) { |
- SetPrefToEmpty(prefs::kURLsToRestoreOnStartup); |
+ SetPrefToEmpty(kListPrefName); |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); |
+ pref_service_->FindPreference(kListPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- server_url_list_)); |
+ server_url_list_, |
+ &pref_model_associator_client_)); |
EXPECT_TRUE(merged_value->Equals(&server_url_list_)); |
} |
TEST_F(ListPreferenceMergeTest, ServerNull) { |
scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
{ |
- ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); |
+ ListPrefUpdate update(pref_service_.get(), kListPrefName); |
base::ListValue* local_list_value = update.Get(); |
local_list_value->Append(new base::StringValue(local_url0_)); |
} |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); |
+ pref_service_->FindPreference(kListPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- *null_value)); |
+ *null_value, |
+ &pref_model_associator_client_)); |
const base::ListValue* local_list_value = |
- pref_service_->GetList(prefs::kURLsToRestoreOnStartup); |
+ pref_service_->GetList(kListPrefName); |
EXPECT_TRUE(merged_value->Equals(local_list_value)); |
} |
TEST_F(ListPreferenceMergeTest, ServerEmpty) { |
scoped_ptr<base::Value> empty_value(new base::ListValue); |
{ |
- ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); |
+ ListPrefUpdate update(pref_service_.get(), kListPrefName); |
base::ListValue* local_list_value = update.Get(); |
local_list_value->Append(new base::StringValue(local_url0_)); |
} |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); |
+ pref_service_->FindPreference(kListPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- *empty_value)); |
+ *empty_value, |
+ &pref_model_associator_client_)); |
const base::ListValue* local_list_value = |
- pref_service_->GetList(prefs::kURLsToRestoreOnStartup); |
+ pref_service_->GetList(kListPrefName); |
EXPECT_TRUE(merged_value->Equals(local_list_value)); |
} |
TEST_F(ListPreferenceMergeTest, Merge) { |
{ |
- ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); |
+ ListPrefUpdate update(pref_service_.get(), kListPrefName); |
base::ListValue* local_list_value = update.Get(); |
local_list_value->Append(new base::StringValue(local_url0_)); |
local_list_value->Append(new base::StringValue(local_url1_)); |
} |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); |
+ pref_service_->FindPreference(kListPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- server_url_list_)); |
+ server_url_list_, |
+ &pref_model_associator_client_)); |
base::ListValue expected; |
expected.Append(new base::StringValue(server_url0_)); |
@@ -161,7 +193,7 @@ TEST_F(ListPreferenceMergeTest, Merge) { |
TEST_F(ListPreferenceMergeTest, Duplicates) { |
{ |
- ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); |
+ ListPrefUpdate update(pref_service_.get(), kListPrefName); |
base::ListValue* local_list_value = update.Get(); |
local_list_value->Append(new base::StringValue(local_url0_)); |
local_list_value->Append(new base::StringValue(server_url0_)); |
@@ -169,11 +201,12 @@ TEST_F(ListPreferenceMergeTest, Duplicates) { |
} |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); |
+ pref_service_->FindPreference(kListPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- server_url_list_)); |
+ server_url_list_, |
+ &pref_model_associator_client_)); |
base::ListValue expected; |
expected.Append(new base::StringValue(server_url0_)); |
@@ -184,7 +217,7 @@ TEST_F(ListPreferenceMergeTest, Duplicates) { |
TEST_F(ListPreferenceMergeTest, Equals) { |
{ |
- ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); |
+ ListPrefUpdate update(pref_service_.get(), kListPrefName); |
base::ListValue* local_list_value = update.Get(); |
local_list_value->Append(new base::StringValue(server_url0_)); |
local_list_value->Append(new base::StringValue(server_url1_)); |
@@ -192,22 +225,21 @@ TEST_F(ListPreferenceMergeTest, Equals) { |
scoped_ptr<base::Value> original(server_url_list_.DeepCopy()); |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); |
- scoped_ptr<base::Value> merged_value( |
- PrefModelAssociator::MergePreference(pref->name(), |
- *pref->GetValue(), |
- server_url_list_)); |
+ pref_service_->FindPreference(kListPrefName); |
+ scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
+ pref->name(), *pref->GetValue(), server_url_list_, |
+ &pref_model_associator_client_)); |
EXPECT_TRUE(merged_value->Equals(original.get())); |
} |
class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { |
protected: |
- DictionaryPreferenceMergeTest() : |
- expression0_("expression0"), |
- expression1_("expression1"), |
- expression2_("expression2"), |
- expression3_("expression3"), |
- expression4_("expression4") {} |
+ DictionaryPreferenceMergeTest() |
+ : expression0_("expression0"), |
+ expression1_("expression1"), |
+ expression2_("expression2"), |
+ expression3_("expression3"), |
+ expression4_("expression4") {} |
void SetUp() override { |
AbstractPreferenceMergeTest::SetUp(); |
@@ -225,65 +257,69 @@ class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { |
}; |
TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { |
- SetPrefToEmpty(kContentSettingsPrefName); |
+ SetPrefToEmpty(kDictionaryPrefName); |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(kContentSettingsPrefName); |
+ pref_service_->FindPreference(kDictionaryPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- server_patterns_)); |
+ server_patterns_, |
+ &pref_model_associator_client_)); |
EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
} |
TEST_F(DictionaryPreferenceMergeTest, ServerNull) { |
scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
{ |
- DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
+ DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
base::DictionaryValue* local_dict_value = update.Get(); |
SetContentPattern(local_dict_value, expression3_, 1); |
} |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(kContentSettingsPrefName); |
+ pref_service_->FindPreference(kDictionaryPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- *null_value)); |
+ *null_value, |
+ &pref_model_associator_client_)); |
const base::DictionaryValue* local_dict_value = |
- pref_service_->GetDictionary(kContentSettingsPrefName); |
+ pref_service_->GetDictionary(kDictionaryPrefName); |
EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
} |
TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { |
scoped_ptr<base::Value> empty_value(new base::DictionaryValue); |
{ |
- DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
+ DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
base::DictionaryValue* local_dict_value = update.Get(); |
SetContentPattern(local_dict_value, expression3_, 1); |
} |
const PrefService::Preference* pref = |
- pref_service_->FindPreference(kContentSettingsPrefName); |
+ pref_service_->FindPreference(kDictionaryPrefName); |
scoped_ptr<base::Value> merged_value( |
PrefModelAssociator::MergePreference(pref->name(), |
*pref->GetValue(), |
- *empty_value)); |
+ *empty_value, |
+ &pref_model_associator_client_)); |
const base::DictionaryValue* local_dict_value = |
- pref_service_->GetDictionary(kContentSettingsPrefName); |
+ pref_service_->GetDictionary(kDictionaryPrefName); |
EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
} |
TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { |
{ |
- DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
+ DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
base::DictionaryValue* local_dict_value = update.Get(); |
SetContentPattern(local_dict_value, expression3_, 1); |
} |
scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
- kContentSettingsPrefName, |
- *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
- server_patterns_)); |
+ kDictionaryPrefName, |
+ *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
+ server_patterns_, |
+ &pref_model_associator_client_)); |
base::DictionaryValue expected; |
SetContentPattern(&expected, expression0_, 1); |
@@ -295,7 +331,7 @@ TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { |
TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { |
{ |
- DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
+ DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
base::DictionaryValue* local_dict_value = update.Get(); |
SetContentPattern(local_dict_value, expression0_, 2); |
SetContentPattern(local_dict_value, expression2_, 1); |
@@ -304,9 +340,10 @@ TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { |
} |
scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
- kContentSettingsPrefName, |
- *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
- server_patterns_)); |
+ kDictionaryPrefName, |
+ *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
+ server_patterns_, |
+ &pref_model_associator_client_)); |
base::DictionaryValue expected; |
SetContentPattern(&expected, expression0_, 1); |
@@ -325,16 +362,17 @@ TEST_F(DictionaryPreferenceMergeTest, MergeValueToDictionary) { |
server_dict_value.SetInteger("key.subkey", 0); |
scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
- kContentSettingsPrefName, |
+ kDictionaryPrefName, |
local_dict_value, |
- server_dict_value)); |
+ server_dict_value, |
+ &pref_model_associator_client_)); |
EXPECT_TRUE(merged_value->Equals(&server_dict_value)); |
} |
TEST_F(DictionaryPreferenceMergeTest, Equal) { |
{ |
- DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
+ DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
base::DictionaryValue* local_dict_value = update.Get(); |
SetContentPattern(local_dict_value, expression0_, 1); |
SetContentPattern(local_dict_value, expression1_, 2); |
@@ -342,15 +380,16 @@ TEST_F(DictionaryPreferenceMergeTest, Equal) { |
} |
scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
- kContentSettingsPrefName, |
- *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
- server_patterns_)); |
+ kDictionaryPrefName, |
+ *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
+ server_patterns_, |
+ &pref_model_associator_client_)); |
EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
} |
TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { |
{ |
- DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); |
+ DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
base::DictionaryValue* local_dict_value = update.Get(); |
SetContentPattern(local_dict_value, expression0_, 2); |
SetContentPattern(local_dict_value, expression1_, 2); |
@@ -358,19 +397,20 @@ TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { |
} |
scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
- kContentSettingsPrefName, |
- *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), |
- server_patterns_)); |
+ kDictionaryPrefName, |
+ *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
+ server_patterns_, |
+ &pref_model_associator_client_)); |
EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
} |
class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
protected: |
- IndividualPreferenceMergeTest() : |
- url0_("http://example.com/server0"), |
- url1_("http://example.com/server1"), |
- expression0_("expression0"), |
- expression1_("expression1") {} |
+ IndividualPreferenceMergeTest() |
+ : url0_("http://example.com/server0"), |
+ url1_("http://example.com/server1"), |
+ expression0_("expression0"), |
+ expression1_("expression1") {} |
void SetUp() override { |
AbstractPreferenceMergeTest::SetUp(); |
@@ -380,7 +420,7 @@ class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
bool MergeListPreference(const char* pref) { |
{ |
- ListPrefUpdate update(pref_service_, pref); |
+ ListPrefUpdate update(pref_service_.get(), pref); |
base::ListValue* local_list_value = update.Get(); |
local_list_value->Append(new base::StringValue(url1_)); |
} |
@@ -388,7 +428,8 @@ class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
pref, |
*pref_service_->GetUserPrefValue(pref), |
- server_url_list_)); |
+ server_url_list_, |
+ &pref_model_associator_client_)); |
base::ListValue expected; |
expected.Append(new base::StringValue(url0_)); |
@@ -398,7 +439,7 @@ class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
bool MergeDictionaryPreference(const char* pref) { |
{ |
- DictionaryPrefUpdate update(pref_service_, pref); |
+ DictionaryPrefUpdate update(pref_service_.get(), pref); |
base::DictionaryValue* local_dict_value = update.Get(); |
SetContentPattern(local_dict_value, expression1_, 1); |
} |
@@ -406,7 +447,8 @@ class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
pref, |
*pref_service_->GetUserPrefValue(pref), |
- server_patterns_)); |
+ server_patterns_, |
+ &pref_model_associator_client_)); |
base::DictionaryValue expected; |
SetContentPattern(&expected, expression0_, 1); |
@@ -424,5 +466,5 @@ class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
}; |
TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { |
gab
2015/09/10 14:15:09
Change name of this test to reflect its new generi
|
- EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); |
+ EXPECT_TRUE(MergeListPreference(kListPrefName)); |
} |