Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
|
gab
2015/09/10 14:15:09
Not sure why this file is marked 'D' by reitveld?!
| |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/macros.h" | |
| 6 #include "base/memory/ref_counted.h" | |
| 5 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/prefs/scoped_user_pref_update.h" | 8 #include "base/prefs/scoped_user_pref_update.h" |
| 7 #include "base/values.h" | 9 #include "base/values.h" |
| 8 #include "chrome/browser/prefs/pref_model_associator.h" | 10 #include "chrome/browser/prefs/pref_model_associator.h" |
| 9 #include "chrome/common/pref_names.h" | 11 #include "chrome/browser/prefs/pref_model_associator_client.h" |
| 10 #include "chrome/test/base/testing_profile.h" | 12 #include "chrome/browser/prefs/pref_service_mock_factory.h" |
| 11 #include "content/public/test/test_browser_thread_bundle.h" | 13 #include "chrome/browser/prefs/pref_service_syncable.h" |
| 14 #include "chrome/browser/prefs/pref_service_syncable_factory.h" | |
| 15 #include "components/pref_registry/pref_registry_syncable.h" | |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 17 |
| 14 // Any content settings pref name should do for these tests. | 18 namespace { |
| 15 const char* kContentSettingsPrefName = | 19 |
| 16 "profile.content_settings.exceptions.cookies"; | 20 const char kStringPrefName[] = "string_pref"; |
| 21 const char kListPrefName[] = "list_pref"; | |
| 22 const char kDictionaryPrefName[] = "dictionary_pref"; | |
| 23 | |
| 24 } // namespace | |
| 17 | 25 |
| 18 class AbstractPreferenceMergeTest : public testing::Test { | 26 class AbstractPreferenceMergeTest : public testing::Test { |
| 19 protected: | 27 protected: |
| 20 void SetUp() override { pref_service_ = profile_.GetPrefs(); } | 28 AbstractPreferenceMergeTest() { |
| 29 pref_model_associator_client_.RegisterPreference( | |
| 30 kListPrefName, PREF_MODEL_PREFERENCE_TYPE_LIST); | |
| 31 pref_model_associator_client_.RegisterPreference( | |
| 32 kDictionaryPrefName, PREF_MODEL_PREFERENCE_TYPE_DICT); | |
| 33 | |
| 34 PrefServiceMockFactory factory; | |
| 35 factory.SetPrefModelAssociatorClient(&pref_model_associator_client_); | |
| 36 scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry( | |
| 37 new user_prefs::PrefRegistrySyncable); | |
| 38 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
| |
| 39 | |
| 40 pref_registry->RegisterStringPref( | |
| 41 kStringPrefName, std::string(), | |
| 42 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | |
| 43 pref_registry->RegisterListPref( | |
| 44 kListPrefName, | |
| 45 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | |
| 46 pref_registry->RegisterDictionaryPref( | |
| 47 kDictionaryPrefName, | |
| 48 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); | |
| 49 } | |
| 21 | 50 |
| 22 void SetContentPattern(base::DictionaryValue* patterns_dict, | 51 void SetContentPattern(base::DictionaryValue* patterns_dict, |
| 23 const std::string& expression, | 52 const std::string& expression, |
| 24 int setting) { | 53 int setting) { |
| 25 base::DictionaryValue* expression_dict; | 54 base::DictionaryValue* expression_dict; |
| 26 bool found = | 55 bool found = patterns_dict->GetDictionaryWithoutPathExpansion( |
| 27 patterns_dict->GetDictionaryWithoutPathExpansion(expression, | 56 expression, &expression_dict); |
| 28 &expression_dict); | |
| 29 if (!found) { | 57 if (!found) { |
| 30 expression_dict = new base::DictionaryValue; | 58 expression_dict = new base::DictionaryValue; |
| 31 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); | 59 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); |
| 32 } | 60 } |
| 33 expression_dict->SetWithoutPathExpansion( | 61 expression_dict->SetWithoutPathExpansion( |
| 34 "setting", new base::FundamentalValue(setting)); | 62 "setting", new base::FundamentalValue(setting)); |
| 35 } | 63 } |
| 36 | 64 |
| 37 void SetPrefToEmpty(const std::string& pref_name) { | 65 void SetPrefToEmpty(const std::string& pref_name) { |
| 38 scoped_ptr<base::Value> empty_value; | 66 scoped_ptr<base::Value> empty_value; |
| 39 const PrefService::Preference* pref = | 67 const PrefService::Preference* pref = |
| 40 pref_service_->FindPreference(pref_name.c_str()); | 68 pref_service_->FindPreference(pref_name.c_str()); |
| 41 ASSERT_TRUE(pref); | 69 ASSERT_TRUE(pref); |
| 42 base::Value::Type type = pref->GetType(); | 70 base::Value::Type type = pref->GetType(); |
| 43 if (type == base::Value::TYPE_DICTIONARY) | 71 if (type == base::Value::TYPE_DICTIONARY) |
| 44 empty_value.reset(new base::DictionaryValue); | 72 empty_value.reset(new base::DictionaryValue); |
| 45 else if (type == base::Value::TYPE_LIST) | 73 else if (type == base::Value::TYPE_LIST) |
| 46 empty_value.reset(new base::ListValue); | 74 empty_value.reset(new base::ListValue); |
| 47 else | 75 else |
| 48 FAIL(); | 76 FAIL(); |
| 49 pref_service_->Set(pref_name.c_str(), *empty_value); | 77 pref_service_->Set(pref_name.c_str(), *empty_value); |
| 50 } | 78 } |
| 51 | 79 |
| 52 content::TestBrowserThreadBundle thread_bundle_; | 80 PrefModelAssociatorClient pref_model_associator_client_; |
| 53 TestingProfile profile_; | 81 scoped_ptr<PrefServiceSyncable> pref_service_; |
| 54 PrefService* pref_service_; | |
| 55 }; | 82 }; |
| 56 | 83 |
| 57 class ListPreferenceMergeTest : public AbstractPreferenceMergeTest { | 84 class ListPreferenceMergeTest : public AbstractPreferenceMergeTest { |
| 58 protected: | 85 protected: |
| 59 ListPreferenceMergeTest() : | 86 ListPreferenceMergeTest() |
| 60 server_url0_("http://example.com/server0"), | 87 : server_url0_("http://example.com/server0"), |
| 61 server_url1_("http://example.com/server1"), | 88 server_url1_("http://example.com/server1"), |
| 62 local_url0_("http://example.com/local0"), | 89 local_url0_("http://example.com/local0"), |
| 63 local_url1_("http://example.com/local1") {} | 90 local_url1_("http://example.com/local1") {} |
| 64 | 91 |
| 65 void SetUp() override { | 92 void SetUp() override { |
| 66 AbstractPreferenceMergeTest::SetUp(); | 93 AbstractPreferenceMergeTest::SetUp(); |
| 67 server_url_list_.Append(new base::StringValue(server_url0_)); | 94 server_url_list_.Append(new base::StringValue(server_url0_)); |
| 68 server_url_list_.Append(new base::StringValue(server_url1_)); | 95 server_url_list_.Append(new base::StringValue(server_url1_)); |
| 69 } | 96 } |
| 70 | 97 |
| 71 std::string server_url0_; | 98 std::string server_url0_; |
| 72 std::string server_url1_; | 99 std::string server_url1_; |
| 73 std::string local_url0_; | 100 std::string local_url0_; |
| 74 std::string local_url1_; | 101 std::string local_url1_; |
| 75 base::ListValue server_url_list_; | 102 base::ListValue server_url_list_; |
| 76 }; | 103 }; |
| 77 | 104 |
| 78 TEST_F(ListPreferenceMergeTest, NotListOrDictionary) { | 105 TEST_F(ListPreferenceMergeTest, NotListOrDictionary) { |
| 79 pref_service_->SetString(prefs::kHomePage, local_url0_); | 106 pref_service_->SetString(kStringPrefName, local_url0_); |
| 80 const PrefService::Preference* pref = | 107 const PrefService::Preference* pref = |
| 81 pref_service_->FindPreference(prefs::kHomePage); | 108 pref_service_->FindPreference(kStringPrefName); |
| 82 scoped_ptr<base::Value> server_value(new base::StringValue(server_url0_)); | 109 scoped_ptr<base::Value> server_value(new base::StringValue(server_url0_)); |
| 83 scoped_ptr<base::Value> merged_value( | 110 scoped_ptr<base::Value> merged_value( |
| 84 PrefModelAssociator::MergePreference(pref->name(), | 111 PrefModelAssociator::MergePreference(pref->name(), |
| 85 *pref->GetValue(), | 112 *pref->GetValue(), |
| 86 *server_value)); | 113 *server_value, |
| 114 &pref_model_associator_client_)); | |
| 87 EXPECT_TRUE(merged_value->Equals(server_value.get())); | 115 EXPECT_TRUE(merged_value->Equals(server_value.get())); |
| 88 } | 116 } |
| 89 | 117 |
| 90 TEST_F(ListPreferenceMergeTest, LocalEmpty) { | 118 TEST_F(ListPreferenceMergeTest, LocalEmpty) { |
| 91 SetPrefToEmpty(prefs::kURLsToRestoreOnStartup); | 119 SetPrefToEmpty(kListPrefName); |
| 92 const PrefService::Preference* pref = | 120 const PrefService::Preference* pref = |
| 93 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 121 pref_service_->FindPreference(kListPrefName); |
| 94 scoped_ptr<base::Value> merged_value( | 122 scoped_ptr<base::Value> merged_value( |
| 95 PrefModelAssociator::MergePreference(pref->name(), | 123 PrefModelAssociator::MergePreference(pref->name(), |
| 96 *pref->GetValue(), | 124 *pref->GetValue(), |
| 97 server_url_list_)); | 125 server_url_list_, |
| 126 &pref_model_associator_client_)); | |
| 98 EXPECT_TRUE(merged_value->Equals(&server_url_list_)); | 127 EXPECT_TRUE(merged_value->Equals(&server_url_list_)); |
| 99 } | 128 } |
| 100 | 129 |
| 101 TEST_F(ListPreferenceMergeTest, ServerNull) { | 130 TEST_F(ListPreferenceMergeTest, ServerNull) { |
| 102 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); | 131 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
| 103 { | 132 { |
| 104 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 133 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
| 105 base::ListValue* local_list_value = update.Get(); | 134 base::ListValue* local_list_value = update.Get(); |
| 106 local_list_value->Append(new base::StringValue(local_url0_)); | 135 local_list_value->Append(new base::StringValue(local_url0_)); |
| 107 } | 136 } |
| 108 | 137 |
| 109 const PrefService::Preference* pref = | 138 const PrefService::Preference* pref = |
| 110 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 139 pref_service_->FindPreference(kListPrefName); |
| 111 scoped_ptr<base::Value> merged_value( | 140 scoped_ptr<base::Value> merged_value( |
| 112 PrefModelAssociator::MergePreference(pref->name(), | 141 PrefModelAssociator::MergePreference(pref->name(), |
| 113 *pref->GetValue(), | 142 *pref->GetValue(), |
| 114 *null_value)); | 143 *null_value, |
| 144 &pref_model_associator_client_)); | |
| 115 const base::ListValue* local_list_value = | 145 const base::ListValue* local_list_value = |
| 116 pref_service_->GetList(prefs::kURLsToRestoreOnStartup); | 146 pref_service_->GetList(kListPrefName); |
| 117 EXPECT_TRUE(merged_value->Equals(local_list_value)); | 147 EXPECT_TRUE(merged_value->Equals(local_list_value)); |
| 118 } | 148 } |
| 119 | 149 |
| 120 TEST_F(ListPreferenceMergeTest, ServerEmpty) { | 150 TEST_F(ListPreferenceMergeTest, ServerEmpty) { |
| 121 scoped_ptr<base::Value> empty_value(new base::ListValue); | 151 scoped_ptr<base::Value> empty_value(new base::ListValue); |
| 122 { | 152 { |
| 123 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 153 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
| 124 base::ListValue* local_list_value = update.Get(); | 154 base::ListValue* local_list_value = update.Get(); |
| 125 local_list_value->Append(new base::StringValue(local_url0_)); | 155 local_list_value->Append(new base::StringValue(local_url0_)); |
| 126 } | 156 } |
| 127 | 157 |
| 128 const PrefService::Preference* pref = | 158 const PrefService::Preference* pref = |
| 129 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 159 pref_service_->FindPreference(kListPrefName); |
| 130 scoped_ptr<base::Value> merged_value( | 160 scoped_ptr<base::Value> merged_value( |
| 131 PrefModelAssociator::MergePreference(pref->name(), | 161 PrefModelAssociator::MergePreference(pref->name(), |
| 132 *pref->GetValue(), | 162 *pref->GetValue(), |
| 133 *empty_value)); | 163 *empty_value, |
| 164 &pref_model_associator_client_)); | |
| 134 const base::ListValue* local_list_value = | 165 const base::ListValue* local_list_value = |
| 135 pref_service_->GetList(prefs::kURLsToRestoreOnStartup); | 166 pref_service_->GetList(kListPrefName); |
| 136 EXPECT_TRUE(merged_value->Equals(local_list_value)); | 167 EXPECT_TRUE(merged_value->Equals(local_list_value)); |
| 137 } | 168 } |
| 138 | 169 |
| 139 TEST_F(ListPreferenceMergeTest, Merge) { | 170 TEST_F(ListPreferenceMergeTest, Merge) { |
| 140 { | 171 { |
| 141 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 172 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
| 142 base::ListValue* local_list_value = update.Get(); | 173 base::ListValue* local_list_value = update.Get(); |
| 143 local_list_value->Append(new base::StringValue(local_url0_)); | 174 local_list_value->Append(new base::StringValue(local_url0_)); |
| 144 local_list_value->Append(new base::StringValue(local_url1_)); | 175 local_list_value->Append(new base::StringValue(local_url1_)); |
| 145 } | 176 } |
| 146 | 177 |
| 147 const PrefService::Preference* pref = | 178 const PrefService::Preference* pref = |
| 148 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 179 pref_service_->FindPreference(kListPrefName); |
| 149 scoped_ptr<base::Value> merged_value( | 180 scoped_ptr<base::Value> merged_value( |
| 150 PrefModelAssociator::MergePreference(pref->name(), | 181 PrefModelAssociator::MergePreference(pref->name(), |
| 151 *pref->GetValue(), | 182 *pref->GetValue(), |
| 152 server_url_list_)); | 183 server_url_list_, |
| 184 &pref_model_associator_client_)); | |
| 153 | 185 |
| 154 base::ListValue expected; | 186 base::ListValue expected; |
| 155 expected.Append(new base::StringValue(server_url0_)); | 187 expected.Append(new base::StringValue(server_url0_)); |
| 156 expected.Append(new base::StringValue(server_url1_)); | 188 expected.Append(new base::StringValue(server_url1_)); |
| 157 expected.Append(new base::StringValue(local_url0_)); | 189 expected.Append(new base::StringValue(local_url0_)); |
| 158 expected.Append(new base::StringValue(local_url1_)); | 190 expected.Append(new base::StringValue(local_url1_)); |
| 159 EXPECT_TRUE(merged_value->Equals(&expected)); | 191 EXPECT_TRUE(merged_value->Equals(&expected)); |
| 160 } | 192 } |
| 161 | 193 |
| 162 TEST_F(ListPreferenceMergeTest, Duplicates) { | 194 TEST_F(ListPreferenceMergeTest, Duplicates) { |
| 163 { | 195 { |
| 164 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 196 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
| 165 base::ListValue* local_list_value = update.Get(); | 197 base::ListValue* local_list_value = update.Get(); |
| 166 local_list_value->Append(new base::StringValue(local_url0_)); | 198 local_list_value->Append(new base::StringValue(local_url0_)); |
| 167 local_list_value->Append(new base::StringValue(server_url0_)); | 199 local_list_value->Append(new base::StringValue(server_url0_)); |
| 168 local_list_value->Append(new base::StringValue(server_url1_)); | 200 local_list_value->Append(new base::StringValue(server_url1_)); |
| 169 } | 201 } |
| 170 | 202 |
| 171 const PrefService::Preference* pref = | 203 const PrefService::Preference* pref = |
| 172 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 204 pref_service_->FindPreference(kListPrefName); |
| 173 scoped_ptr<base::Value> merged_value( | 205 scoped_ptr<base::Value> merged_value( |
| 174 PrefModelAssociator::MergePreference(pref->name(), | 206 PrefModelAssociator::MergePreference(pref->name(), |
| 175 *pref->GetValue(), | 207 *pref->GetValue(), |
| 176 server_url_list_)); | 208 server_url_list_, |
| 209 &pref_model_associator_client_)); | |
| 177 | 210 |
| 178 base::ListValue expected; | 211 base::ListValue expected; |
| 179 expected.Append(new base::StringValue(server_url0_)); | 212 expected.Append(new base::StringValue(server_url0_)); |
| 180 expected.Append(new base::StringValue(server_url1_)); | 213 expected.Append(new base::StringValue(server_url1_)); |
| 181 expected.Append(new base::StringValue(local_url0_)); | 214 expected.Append(new base::StringValue(local_url0_)); |
| 182 EXPECT_TRUE(merged_value->Equals(&expected)); | 215 EXPECT_TRUE(merged_value->Equals(&expected)); |
| 183 } | 216 } |
| 184 | 217 |
| 185 TEST_F(ListPreferenceMergeTest, Equals) { | 218 TEST_F(ListPreferenceMergeTest, Equals) { |
| 186 { | 219 { |
| 187 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); | 220 ListPrefUpdate update(pref_service_.get(), kListPrefName); |
| 188 base::ListValue* local_list_value = update.Get(); | 221 base::ListValue* local_list_value = update.Get(); |
| 189 local_list_value->Append(new base::StringValue(server_url0_)); | 222 local_list_value->Append(new base::StringValue(server_url0_)); |
| 190 local_list_value->Append(new base::StringValue(server_url1_)); | 223 local_list_value->Append(new base::StringValue(server_url1_)); |
| 191 } | 224 } |
| 192 | 225 |
| 193 scoped_ptr<base::Value> original(server_url_list_.DeepCopy()); | 226 scoped_ptr<base::Value> original(server_url_list_.DeepCopy()); |
| 194 const PrefService::Preference* pref = | 227 const PrefService::Preference* pref = |
| 195 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); | 228 pref_service_->FindPreference(kListPrefName); |
| 196 scoped_ptr<base::Value> merged_value( | 229 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 197 PrefModelAssociator::MergePreference(pref->name(), | 230 pref->name(), *pref->GetValue(), server_url_list_, |
| 198 *pref->GetValue(), | 231 &pref_model_associator_client_)); |
| 199 server_url_list_)); | |
| 200 EXPECT_TRUE(merged_value->Equals(original.get())); | 232 EXPECT_TRUE(merged_value->Equals(original.get())); |
| 201 } | 233 } |
| 202 | 234 |
| 203 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { | 235 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { |
| 204 protected: | 236 protected: |
| 205 DictionaryPreferenceMergeTest() : | 237 DictionaryPreferenceMergeTest() |
| 206 expression0_("expression0"), | 238 : expression0_("expression0"), |
| 207 expression1_("expression1"), | 239 expression1_("expression1"), |
| 208 expression2_("expression2"), | 240 expression2_("expression2"), |
| 209 expression3_("expression3"), | 241 expression3_("expression3"), |
| 210 expression4_("expression4") {} | 242 expression4_("expression4") {} |
| 211 | 243 |
| 212 void SetUp() override { | 244 void SetUp() override { |
| 213 AbstractPreferenceMergeTest::SetUp(); | 245 AbstractPreferenceMergeTest::SetUp(); |
| 214 SetContentPattern(&server_patterns_, expression0_, 1); | 246 SetContentPattern(&server_patterns_, expression0_, 1); |
| 215 SetContentPattern(&server_patterns_, expression1_, 2); | 247 SetContentPattern(&server_patterns_, expression1_, 2); |
| 216 SetContentPattern(&server_patterns_, expression2_, 1); | 248 SetContentPattern(&server_patterns_, expression2_, 1); |
| 217 } | 249 } |
| 218 | 250 |
| 219 std::string expression0_; | 251 std::string expression0_; |
| 220 std::string expression1_; | 252 std::string expression1_; |
| 221 std::string expression2_; | 253 std::string expression2_; |
| 222 std::string expression3_; | 254 std::string expression3_; |
| 223 std::string expression4_; | 255 std::string expression4_; |
| 224 base::DictionaryValue server_patterns_; | 256 base::DictionaryValue server_patterns_; |
| 225 }; | 257 }; |
| 226 | 258 |
| 227 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { | 259 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { |
| 228 SetPrefToEmpty(kContentSettingsPrefName); | 260 SetPrefToEmpty(kDictionaryPrefName); |
| 229 const PrefService::Preference* pref = | 261 const PrefService::Preference* pref = |
| 230 pref_service_->FindPreference(kContentSettingsPrefName); | 262 pref_service_->FindPreference(kDictionaryPrefName); |
| 231 scoped_ptr<base::Value> merged_value( | 263 scoped_ptr<base::Value> merged_value( |
| 232 PrefModelAssociator::MergePreference(pref->name(), | 264 PrefModelAssociator::MergePreference(pref->name(), |
| 233 *pref->GetValue(), | 265 *pref->GetValue(), |
| 234 server_patterns_)); | 266 server_patterns_, |
| 267 &pref_model_associator_client_)); | |
| 235 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 268 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
| 236 } | 269 } |
| 237 | 270 |
| 238 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { | 271 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { |
| 239 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); | 272 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
| 240 { | 273 { |
| 241 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 274 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
| 242 base::DictionaryValue* local_dict_value = update.Get(); | 275 base::DictionaryValue* local_dict_value = update.Get(); |
| 243 SetContentPattern(local_dict_value, expression3_, 1); | 276 SetContentPattern(local_dict_value, expression3_, 1); |
| 244 } | 277 } |
| 245 | 278 |
| 246 const PrefService::Preference* pref = | 279 const PrefService::Preference* pref = |
| 247 pref_service_->FindPreference(kContentSettingsPrefName); | 280 pref_service_->FindPreference(kDictionaryPrefName); |
| 248 scoped_ptr<base::Value> merged_value( | 281 scoped_ptr<base::Value> merged_value( |
| 249 PrefModelAssociator::MergePreference(pref->name(), | 282 PrefModelAssociator::MergePreference(pref->name(), |
| 250 *pref->GetValue(), | 283 *pref->GetValue(), |
| 251 *null_value)); | 284 *null_value, |
| 285 &pref_model_associator_client_)); | |
| 252 const base::DictionaryValue* local_dict_value = | 286 const base::DictionaryValue* local_dict_value = |
| 253 pref_service_->GetDictionary(kContentSettingsPrefName); | 287 pref_service_->GetDictionary(kDictionaryPrefName); |
| 254 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 288 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
| 255 } | 289 } |
| 256 | 290 |
| 257 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { | 291 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { |
| 258 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); | 292 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); |
| 259 { | 293 { |
| 260 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 294 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
| 261 base::DictionaryValue* local_dict_value = update.Get(); | 295 base::DictionaryValue* local_dict_value = update.Get(); |
| 262 SetContentPattern(local_dict_value, expression3_, 1); | 296 SetContentPattern(local_dict_value, expression3_, 1); |
| 263 } | 297 } |
| 264 | 298 |
| 265 const PrefService::Preference* pref = | 299 const PrefService::Preference* pref = |
| 266 pref_service_->FindPreference(kContentSettingsPrefName); | 300 pref_service_->FindPreference(kDictionaryPrefName); |
| 267 scoped_ptr<base::Value> merged_value( | 301 scoped_ptr<base::Value> merged_value( |
| 268 PrefModelAssociator::MergePreference(pref->name(), | 302 PrefModelAssociator::MergePreference(pref->name(), |
| 269 *pref->GetValue(), | 303 *pref->GetValue(), |
| 270 *empty_value)); | 304 *empty_value, |
| 305 &pref_model_associator_client_)); | |
| 271 const base::DictionaryValue* local_dict_value = | 306 const base::DictionaryValue* local_dict_value = |
| 272 pref_service_->GetDictionary(kContentSettingsPrefName); | 307 pref_service_->GetDictionary(kDictionaryPrefName); |
| 273 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 308 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
| 274 } | 309 } |
| 275 | 310 |
| 276 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { | 311 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { |
| 277 { | 312 { |
| 278 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 313 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
| 279 base::DictionaryValue* local_dict_value = update.Get(); | 314 base::DictionaryValue* local_dict_value = update.Get(); |
| 280 SetContentPattern(local_dict_value, expression3_, 1); | 315 SetContentPattern(local_dict_value, expression3_, 1); |
| 281 } | 316 } |
| 282 | 317 |
| 283 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 318 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 284 kContentSettingsPrefName, | 319 kDictionaryPrefName, |
| 285 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 320 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
| 286 server_patterns_)); | 321 server_patterns_, |
| 322 &pref_model_associator_client_)); | |
| 287 | 323 |
| 288 base::DictionaryValue expected; | 324 base::DictionaryValue expected; |
| 289 SetContentPattern(&expected, expression0_, 1); | 325 SetContentPattern(&expected, expression0_, 1); |
| 290 SetContentPattern(&expected, expression1_, 2); | 326 SetContentPattern(&expected, expression1_, 2); |
| 291 SetContentPattern(&expected, expression2_, 1); | 327 SetContentPattern(&expected, expression2_, 1); |
| 292 SetContentPattern(&expected, expression3_, 1); | 328 SetContentPattern(&expected, expression3_, 1); |
| 293 EXPECT_TRUE(merged_value->Equals(&expected)); | 329 EXPECT_TRUE(merged_value->Equals(&expected)); |
| 294 } | 330 } |
| 295 | 331 |
| 296 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { | 332 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { |
| 297 { | 333 { |
| 298 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 334 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
| 299 base::DictionaryValue* local_dict_value = update.Get(); | 335 base::DictionaryValue* local_dict_value = update.Get(); |
| 300 SetContentPattern(local_dict_value, expression0_, 2); | 336 SetContentPattern(local_dict_value, expression0_, 2); |
| 301 SetContentPattern(local_dict_value, expression2_, 1); | 337 SetContentPattern(local_dict_value, expression2_, 1); |
| 302 SetContentPattern(local_dict_value, expression3_, 1); | 338 SetContentPattern(local_dict_value, expression3_, 1); |
| 303 SetContentPattern(local_dict_value, expression4_, 2); | 339 SetContentPattern(local_dict_value, expression4_, 2); |
| 304 } | 340 } |
| 305 | 341 |
| 306 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 342 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 307 kContentSettingsPrefName, | 343 kDictionaryPrefName, |
| 308 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 344 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
| 309 server_patterns_)); | 345 server_patterns_, |
| 346 &pref_model_associator_client_)); | |
| 310 | 347 |
| 311 base::DictionaryValue expected; | 348 base::DictionaryValue expected; |
| 312 SetContentPattern(&expected, expression0_, 1); | 349 SetContentPattern(&expected, expression0_, 1); |
| 313 SetContentPattern(&expected, expression1_, 2); | 350 SetContentPattern(&expected, expression1_, 2); |
| 314 SetContentPattern(&expected, expression2_, 1); | 351 SetContentPattern(&expected, expression2_, 1); |
| 315 SetContentPattern(&expected, expression3_, 1); | 352 SetContentPattern(&expected, expression3_, 1); |
| 316 SetContentPattern(&expected, expression4_, 2); | 353 SetContentPattern(&expected, expression4_, 2); |
| 317 EXPECT_TRUE(merged_value->Equals(&expected)); | 354 EXPECT_TRUE(merged_value->Equals(&expected)); |
| 318 } | 355 } |
| 319 | 356 |
| 320 TEST_F(DictionaryPreferenceMergeTest, MergeValueToDictionary) { | 357 TEST_F(DictionaryPreferenceMergeTest, MergeValueToDictionary) { |
| 321 base::DictionaryValue local_dict_value; | 358 base::DictionaryValue local_dict_value; |
| 322 local_dict_value.SetInteger("key", 0); | 359 local_dict_value.SetInteger("key", 0); |
| 323 | 360 |
| 324 base::DictionaryValue server_dict_value; | 361 base::DictionaryValue server_dict_value; |
| 325 server_dict_value.SetInteger("key.subkey", 0); | 362 server_dict_value.SetInteger("key.subkey", 0); |
| 326 | 363 |
| 327 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 364 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 328 kContentSettingsPrefName, | 365 kDictionaryPrefName, |
| 329 local_dict_value, | 366 local_dict_value, |
| 330 server_dict_value)); | 367 server_dict_value, |
| 368 &pref_model_associator_client_)); | |
| 331 | 369 |
| 332 EXPECT_TRUE(merged_value->Equals(&server_dict_value)); | 370 EXPECT_TRUE(merged_value->Equals(&server_dict_value)); |
| 333 } | 371 } |
| 334 | 372 |
| 335 TEST_F(DictionaryPreferenceMergeTest, Equal) { | 373 TEST_F(DictionaryPreferenceMergeTest, Equal) { |
| 336 { | 374 { |
| 337 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 375 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
| 338 base::DictionaryValue* local_dict_value = update.Get(); | 376 base::DictionaryValue* local_dict_value = update.Get(); |
| 339 SetContentPattern(local_dict_value, expression0_, 1); | 377 SetContentPattern(local_dict_value, expression0_, 1); |
| 340 SetContentPattern(local_dict_value, expression1_, 2); | 378 SetContentPattern(local_dict_value, expression1_, 2); |
| 341 SetContentPattern(local_dict_value, expression2_, 1); | 379 SetContentPattern(local_dict_value, expression2_, 1); |
| 342 } | 380 } |
| 343 | 381 |
| 344 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 382 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 345 kContentSettingsPrefName, | 383 kDictionaryPrefName, |
| 346 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 384 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
| 347 server_patterns_)); | 385 server_patterns_, |
| 386 &pref_model_associator_client_)); | |
| 348 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 387 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
| 349 } | 388 } |
| 350 | 389 |
| 351 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { | 390 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { |
| 352 { | 391 { |
| 353 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); | 392 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName); |
| 354 base::DictionaryValue* local_dict_value = update.Get(); | 393 base::DictionaryValue* local_dict_value = update.Get(); |
| 355 SetContentPattern(local_dict_value, expression0_, 2); | 394 SetContentPattern(local_dict_value, expression0_, 2); |
| 356 SetContentPattern(local_dict_value, expression1_, 2); | 395 SetContentPattern(local_dict_value, expression1_, 2); |
| 357 SetContentPattern(local_dict_value, expression2_, 1); | 396 SetContentPattern(local_dict_value, expression2_, 1); |
| 358 } | 397 } |
| 359 | 398 |
| 360 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 399 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 361 kContentSettingsPrefName, | 400 kDictionaryPrefName, |
| 362 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), | 401 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(), |
| 363 server_patterns_)); | 402 server_patterns_, |
| 403 &pref_model_associator_client_)); | |
| 364 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 404 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
| 365 } | 405 } |
| 366 | 406 |
| 367 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { | 407 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
| 368 protected: | 408 protected: |
| 369 IndividualPreferenceMergeTest() : | 409 IndividualPreferenceMergeTest() |
| 370 url0_("http://example.com/server0"), | 410 : url0_("http://example.com/server0"), |
| 371 url1_("http://example.com/server1"), | 411 url1_("http://example.com/server1"), |
| 372 expression0_("expression0"), | 412 expression0_("expression0"), |
| 373 expression1_("expression1") {} | 413 expression1_("expression1") {} |
| 374 | 414 |
| 375 void SetUp() override { | 415 void SetUp() override { |
| 376 AbstractPreferenceMergeTest::SetUp(); | 416 AbstractPreferenceMergeTest::SetUp(); |
| 377 server_url_list_.Append(new base::StringValue(url0_)); | 417 server_url_list_.Append(new base::StringValue(url0_)); |
| 378 SetContentPattern(&server_patterns_, expression0_, 1); | 418 SetContentPattern(&server_patterns_, expression0_, 1); |
| 379 } | 419 } |
| 380 | 420 |
| 381 bool MergeListPreference(const char* pref) { | 421 bool MergeListPreference(const char* pref) { |
| 382 { | 422 { |
| 383 ListPrefUpdate update(pref_service_, pref); | 423 ListPrefUpdate update(pref_service_.get(), pref); |
| 384 base::ListValue* local_list_value = update.Get(); | 424 base::ListValue* local_list_value = update.Get(); |
| 385 local_list_value->Append(new base::StringValue(url1_)); | 425 local_list_value->Append(new base::StringValue(url1_)); |
| 386 } | 426 } |
| 387 | 427 |
| 388 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 428 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 389 pref, | 429 pref, |
| 390 *pref_service_->GetUserPrefValue(pref), | 430 *pref_service_->GetUserPrefValue(pref), |
| 391 server_url_list_)); | 431 server_url_list_, |
| 432 &pref_model_associator_client_)); | |
| 392 | 433 |
| 393 base::ListValue expected; | 434 base::ListValue expected; |
| 394 expected.Append(new base::StringValue(url0_)); | 435 expected.Append(new base::StringValue(url0_)); |
| 395 expected.Append(new base::StringValue(url1_)); | 436 expected.Append(new base::StringValue(url1_)); |
| 396 return merged_value->Equals(&expected); | 437 return merged_value->Equals(&expected); |
| 397 } | 438 } |
| 398 | 439 |
| 399 bool MergeDictionaryPreference(const char* pref) { | 440 bool MergeDictionaryPreference(const char* pref) { |
| 400 { | 441 { |
| 401 DictionaryPrefUpdate update(pref_service_, pref); | 442 DictionaryPrefUpdate update(pref_service_.get(), pref); |
| 402 base::DictionaryValue* local_dict_value = update.Get(); | 443 base::DictionaryValue* local_dict_value = update.Get(); |
| 403 SetContentPattern(local_dict_value, expression1_, 1); | 444 SetContentPattern(local_dict_value, expression1_, 1); |
| 404 } | 445 } |
| 405 | 446 |
| 406 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 447 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 407 pref, | 448 pref, |
| 408 *pref_service_->GetUserPrefValue(pref), | 449 *pref_service_->GetUserPrefValue(pref), |
| 409 server_patterns_)); | 450 server_patterns_, |
| 451 &pref_model_associator_client_)); | |
| 410 | 452 |
| 411 base::DictionaryValue expected; | 453 base::DictionaryValue expected; |
| 412 SetContentPattern(&expected, expression0_, 1); | 454 SetContentPattern(&expected, expression0_, 1); |
| 413 SetContentPattern(&expected, expression1_, 1); | 455 SetContentPattern(&expected, expression1_, 1); |
| 414 return merged_value->Equals(&expected); | 456 return merged_value->Equals(&expected); |
| 415 } | 457 } |
| 416 | 458 |
| 417 std::string url0_; | 459 std::string url0_; |
| 418 std::string url1_; | 460 std::string url1_; |
| 419 std::string expression0_; | 461 std::string expression0_; |
| 420 std::string expression1_; | 462 std::string expression1_; |
| 421 std::string content_type0_; | 463 std::string content_type0_; |
| 422 base::ListValue server_url_list_; | 464 base::ListValue server_url_list_; |
| 423 base::DictionaryValue server_patterns_; | 465 base::DictionaryValue server_patterns_; |
| 424 }; | 466 }; |
| 425 | 467 |
| 426 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { | 468 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { |
|
gab
2015/09/10 14:15:09
Change name of this test to reflect its new generi
| |
| 427 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); | 469 EXPECT_TRUE(MergeListPreference(kListPrefName)); |
| 428 } | 470 } |
| OLD | NEW |