| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 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/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/prefs/scoped_user_pref_update.h" | 6 #include "base/prefs/scoped_user_pref_update.h" |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "chrome/browser/prefs/pref_model_associator.h" | 8 #include "chrome/browser/prefs/pref_model_associator.h" |
| 9 #include "chrome/common/pref_names.h" | 9 #include "chrome/common/pref_names.h" |
| 10 #include "chrome/test/base/testing_profile.h" | 10 #include "chrome/test/base/testing_profile.h" |
| 11 #include "content/public/test/test_browser_thread_bundle.h" | 11 #include "content/public/test/test_browser_thread_bundle.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 13 |
| 14 class AbstractPreferenceMergeTest : public testing::Test { | 14 class AbstractPreferenceMergeTest : public testing::Test { |
| 15 protected: | 15 protected: |
| 16 void SetUp() override { pref_service_ = profile_.GetPrefs(); } | 16 void SetUp() override { pref_service_ = profile_.GetPrefs(); } |
| 17 | 17 |
| 18 void SetContentPattern(base::DictionaryValue* patterns_dict, | 18 void SetContentPattern(base::DictionaryValue* patterns_dict, |
| 19 const std::string& expression, | 19 const std::string& expression, |
| 20 const std::string& content_type, | |
| 21 int setting) { | 20 int setting) { |
| 22 base::DictionaryValue* expression_dict; | 21 base::DictionaryValue* expression_dict; |
| 23 bool found = | 22 bool found = |
| 24 patterns_dict->GetDictionaryWithoutPathExpansion(expression, | 23 patterns_dict->GetDictionaryWithoutPathExpansion(expression, |
| 25 &expression_dict); | 24 &expression_dict); |
| 26 if (!found) { | 25 if (!found) { |
| 27 expression_dict = new base::DictionaryValue; | 26 expression_dict = new base::DictionaryValue; |
| 28 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); | 27 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); |
| 29 } | 28 } |
| 30 expression_dict->SetWithoutPathExpansion( | 29 expression_dict->SetWithoutPathExpansion( |
| 31 content_type, new base::FundamentalValue(setting)); | 30 "setting", new base::FundamentalValue(setting)); |
| 32 } | 31 } |
| 33 | 32 |
| 34 void SetPrefToEmpty(const std::string& pref_name) { | 33 void SetPrefToEmpty(const std::string& pref_name) { |
| 35 scoped_ptr<base::Value> empty_value; | 34 scoped_ptr<base::Value> empty_value; |
| 36 const PrefService::Preference* pref = | 35 const PrefService::Preference* pref = |
| 37 pref_service_->FindPreference(pref_name.c_str()); | 36 pref_service_->FindPreference(pref_name.c_str()); |
| 38 ASSERT_TRUE(pref); | 37 ASSERT_TRUE(pref); |
| 39 base::Value::Type type = pref->GetType(); | 38 base::Value::Type type = pref->GetType(); |
| 40 if (type == base::Value::TYPE_DICTIONARY) | 39 if (type == base::Value::TYPE_DICTIONARY) |
| 41 empty_value.reset(new base::DictionaryValue); | 40 empty_value.reset(new base::DictionaryValue); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 server_url_list_)); | 195 server_url_list_)); |
| 197 EXPECT_TRUE(merged_value->Equals(original.get())); | 196 EXPECT_TRUE(merged_value->Equals(original.get())); |
| 198 } | 197 } |
| 199 | 198 |
| 200 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { | 199 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { |
| 201 protected: | 200 protected: |
| 202 DictionaryPreferenceMergeTest() : | 201 DictionaryPreferenceMergeTest() : |
| 203 expression0_("expression0"), | 202 expression0_("expression0"), |
| 204 expression1_("expression1"), | 203 expression1_("expression1"), |
| 205 expression2_("expression2"), | 204 expression2_("expression2"), |
| 206 content_type0_("content_type0"), | 205 expression3_("expression3"), |
| 207 content_type1_("content_type1") {} | 206 expression4_("expression4") {} |
| 208 | 207 |
| 209 void SetUp() override { | 208 void SetUp() override { |
| 210 AbstractPreferenceMergeTest::SetUp(); | 209 AbstractPreferenceMergeTest::SetUp(); |
| 211 SetContentPattern(&server_patterns_, expression0_, content_type0_, 1); | 210 SetContentPattern(&server_patterns_, expression0_, 1); |
| 212 SetContentPattern(&server_patterns_, expression0_, content_type1_, 2); | 211 SetContentPattern(&server_patterns_, expression1_, 2); |
| 213 SetContentPattern(&server_patterns_, expression1_, content_type0_, 1); | 212 SetContentPattern(&server_patterns_, expression2_, 1); |
| 214 } | 213 } |
| 215 | 214 |
| 216 std::string expression0_; | 215 std::string expression0_; |
| 217 std::string expression1_; | 216 std::string expression1_; |
| 218 std::string expression2_; | 217 std::string expression2_; |
| 219 std::string content_type0_; | 218 std::string expression3_; |
| 220 std::string content_type1_; | 219 std::string expression4_; |
| 221 base::DictionaryValue server_patterns_; | 220 base::DictionaryValue server_patterns_; |
| 222 }; | 221 }; |
| 223 | 222 |
| 224 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { | 223 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { |
| 225 SetPrefToEmpty(prefs::kContentSettingsPatternPairs); | 224 SetPrefToEmpty(prefs::kContentSettingsImagesPatternPairs); |
| 226 const PrefService::Preference* pref = | 225 const PrefService::Preference* pref = |
| 227 pref_service_->FindPreference(prefs::kContentSettingsPatternPairs); | 226 pref_service_->FindPreference(prefs::kContentSettingsImagesPatternPairs); |
| 228 scoped_ptr<base::Value> merged_value( | 227 scoped_ptr<base::Value> merged_value( |
| 229 PrefModelAssociator::MergePreference(pref->name(), | 228 PrefModelAssociator::MergePreference(pref->name(), |
| 230 *pref->GetValue(), | 229 *pref->GetValue(), |
| 231 server_patterns_)); | 230 server_patterns_)); |
| 232 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 231 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
| 233 } | 232 } |
| 234 | 233 |
| 235 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { | 234 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { |
| 236 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); | 235 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); |
| 237 { | 236 { |
| 238 DictionaryPrefUpdate update(pref_service_, | 237 DictionaryPrefUpdate update(pref_service_, |
| 239 prefs::kContentSettingsPatternPairs); | 238 prefs::kContentSettingsCookiesPatternPairs); |
| 240 base::DictionaryValue* local_dict_value = update.Get(); | 239 base::DictionaryValue* local_dict_value = update.Get(); |
| 241 SetContentPattern(local_dict_value, expression2_, content_type0_, 1); | 240 SetContentPattern(local_dict_value, expression3_, 1); |
| 242 } | 241 } |
| 243 | 242 |
| 244 const PrefService::Preference* pref = | 243 const PrefService::Preference* pref = |
| 245 pref_service_->FindPreference(prefs::kContentSettingsPatternPairs); | 244 pref_service_->FindPreference(prefs::kContentSettingsCookiesPatternPairs); |
| 246 scoped_ptr<base::Value> merged_value( | 245 scoped_ptr<base::Value> merged_value( |
| 247 PrefModelAssociator::MergePreference(pref->name(), | 246 PrefModelAssociator::MergePreference(pref->name(), |
| 248 *pref->GetValue(), | 247 *pref->GetValue(), |
| 249 *null_value)); | 248 *null_value)); |
| 250 const base::DictionaryValue* local_dict_value = | 249 const base::DictionaryValue* local_dict_value = |
| 251 pref_service_->GetDictionary(prefs::kContentSettingsPatternPairs); | 250 pref_service_->GetDictionary(prefs::kContentSettingsCookiesPatternPairs); |
| 252 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 251 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
| 253 } | 252 } |
| 254 | 253 |
| 255 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { | 254 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { |
| 256 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); | 255 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); |
| 257 { | 256 { |
| 258 DictionaryPrefUpdate update(pref_service_, | 257 DictionaryPrefUpdate update(pref_service_, |
| 259 prefs::kContentSettingsPatternPairs); | 258 prefs::kContentSettingsPluginsPatternPairs); |
| 260 base::DictionaryValue* local_dict_value = update.Get(); | 259 base::DictionaryValue* local_dict_value = update.Get(); |
| 261 SetContentPattern(local_dict_value, expression2_, content_type0_, 1); | 260 SetContentPattern(local_dict_value, expression3_, 1); |
| 262 } | 261 } |
| 263 | 262 |
| 264 const PrefService::Preference* pref = | 263 const PrefService::Preference* pref = |
| 265 pref_service_->FindPreference(prefs::kContentSettingsPatternPairs); | 264 pref_service_->FindPreference( |
| 265 prefs::kContentSettingsPluginsPatternPairs); |
| 266 scoped_ptr<base::Value> merged_value( | 266 scoped_ptr<base::Value> merged_value( |
| 267 PrefModelAssociator::MergePreference(pref->name(), | 267 PrefModelAssociator::MergePreference(pref->name(), |
| 268 *pref->GetValue(), | 268 *pref->GetValue(), |
| 269 *empty_value)); | 269 *empty_value)); |
| 270 const base::DictionaryValue* local_dict_value = | 270 const base::DictionaryValue* local_dict_value = |
| 271 pref_service_->GetDictionary(prefs::kContentSettingsPatternPairs); | 271 pref_service_->GetDictionary( |
| 272 prefs::kContentSettingsPluginsPatternPairs); |
| 272 EXPECT_TRUE(merged_value->Equals(local_dict_value)); | 273 EXPECT_TRUE(merged_value->Equals(local_dict_value)); |
| 273 } | 274 } |
| 274 | 275 |
| 275 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { | 276 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { |
| 276 { | 277 { |
| 277 DictionaryPrefUpdate update(pref_service_, | 278 DictionaryPrefUpdate update(pref_service_, |
| 278 prefs::kContentSettingsPatternPairs); | 279 prefs::kContentSettingsJavaScriptPatternPairs); |
| 279 base::DictionaryValue* local_dict_value = update.Get(); | 280 base::DictionaryValue* local_dict_value = update.Get(); |
| 280 SetContentPattern(local_dict_value, expression2_, content_type0_, 1); | 281 SetContentPattern(local_dict_value, expression3_, 1); |
| 281 } | 282 } |
| 282 | 283 |
| 283 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 284 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 284 prefs::kContentSettingsPatternPairs, | 285 prefs::kContentSettingsJavaScriptPatternPairs, |
| 285 *pref_service_->FindPreference(prefs::kContentSettingsPatternPairs)-> | 286 *pref_service_->FindPreference( |
| 286 GetValue(), | 287 prefs::kContentSettingsJavaScriptPatternPairs)->GetValue(), |
| 287 server_patterns_)); | 288 server_patterns_)); |
| 288 | 289 |
| 289 base::DictionaryValue expected; | 290 base::DictionaryValue expected; |
| 290 SetContentPattern(&expected, expression0_, content_type0_, 1); | 291 SetContentPattern(&expected, expression0_, 1); |
| 291 SetContentPattern(&expected, expression0_, content_type1_, 2); | 292 SetContentPattern(&expected, expression1_, 2); |
| 292 SetContentPattern(&expected, expression1_, content_type0_, 1); | 293 SetContentPattern(&expected, expression2_, 1); |
| 293 SetContentPattern(&expected, expression2_, content_type0_, 1); | 294 SetContentPattern(&expected, expression3_, 1); |
| 294 EXPECT_TRUE(merged_value->Equals(&expected)); | 295 EXPECT_TRUE(merged_value->Equals(&expected)); |
| 295 } | 296 } |
| 296 | 297 |
| 297 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { | 298 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { |
| 298 { | 299 { |
| 299 DictionaryPrefUpdate update(pref_service_, | 300 DictionaryPrefUpdate update(pref_service_, |
| 300 prefs::kContentSettingsPatternPairs); | 301 prefs::kContentSettingsPopupsPatternPairs); |
| 301 base::DictionaryValue* local_dict_value = update.Get(); | 302 base::DictionaryValue* local_dict_value = update.Get(); |
| 302 SetContentPattern(local_dict_value, expression0_, content_type0_, 2); | 303 SetContentPattern(local_dict_value, expression0_, 2); |
| 303 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); | 304 SetContentPattern(local_dict_value, expression2_, 1); |
| 304 SetContentPattern(local_dict_value, expression1_, content_type1_, 1); | 305 SetContentPattern(local_dict_value, expression3_, 1); |
| 305 SetContentPattern(local_dict_value, expression2_, content_type0_, 2); | 306 SetContentPattern(local_dict_value, expression4_, 2); |
| 306 } | 307 } |
| 307 | 308 |
| 308 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 309 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 309 prefs::kContentSettingsPatternPairs, | 310 prefs::kContentSettingsPopupsPatternPairs, |
| 310 *pref_service_->FindPreference(prefs::kContentSettingsPatternPairs)-> | 311 *pref_service_->FindPreference( |
| 311 GetValue(), | 312 prefs::kContentSettingsPopupsPatternPairs)->GetValue(), |
| 312 server_patterns_)); | 313 server_patterns_)); |
| 313 | 314 |
| 314 base::DictionaryValue expected; | 315 base::DictionaryValue expected; |
| 315 SetContentPattern(&expected, expression0_, content_type0_, 1); | 316 SetContentPattern(&expected, expression0_, 1); |
| 316 SetContentPattern(&expected, expression0_, content_type1_, 2); | 317 SetContentPattern(&expected, expression1_, 2); |
| 317 SetContentPattern(&expected, expression1_, content_type0_, 1); | 318 SetContentPattern(&expected, expression2_, 1); |
| 318 SetContentPattern(&expected, expression1_, content_type1_, 1); | 319 SetContentPattern(&expected, expression3_, 1); |
| 319 SetContentPattern(&expected, expression2_, content_type0_, 2); | 320 SetContentPattern(&expected, expression4_, 2); |
| 320 EXPECT_TRUE(merged_value->Equals(&expected)); | 321 EXPECT_TRUE(merged_value->Equals(&expected)); |
| 321 } | 322 } |
| 322 | 323 |
| 323 TEST_F(DictionaryPreferenceMergeTest, Equal) { | 324 TEST_F(DictionaryPreferenceMergeTest, Equal) { |
| 324 { | 325 { |
| 325 DictionaryPrefUpdate update(pref_service_, | 326 DictionaryPrefUpdate update(pref_service_, |
| 326 prefs::kContentSettingsPatternPairs); | 327 prefs::kContentSettingsMouseLockPatternPairs); |
| 327 base::DictionaryValue* local_dict_value = update.Get(); | 328 base::DictionaryValue* local_dict_value = update.Get(); |
| 328 SetContentPattern(local_dict_value, expression0_, content_type0_, 1); | 329 SetContentPattern(local_dict_value, expression0_, 1); |
| 329 SetContentPattern(local_dict_value, expression0_, content_type1_, 2); | 330 SetContentPattern(local_dict_value, expression1_, 2); |
| 330 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); | 331 SetContentPattern(local_dict_value, expression2_, 1); |
| 331 } | 332 } |
| 332 | 333 |
| 333 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 334 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 334 prefs::kContentSettingsPatternPairs, | 335 prefs::kContentSettingsMouseLockPatternPairs, |
| 335 *pref_service_-> | 336 *pref_service_->FindPreference( |
| 336 FindPreference(prefs::kContentSettingsPatternPairs)->GetValue(), | 337 prefs::kContentSettingsMouseLockPatternPairs)->GetValue(), |
| 337 server_patterns_)); | 338 server_patterns_)); |
| 338 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 339 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
| 339 } | 340 } |
| 340 | 341 |
| 341 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { | 342 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { |
| 342 { | 343 { |
| 343 DictionaryPrefUpdate update(pref_service_, | 344 DictionaryPrefUpdate update(pref_service_, |
| 344 prefs::kContentSettingsPatternPairs); | 345 prefs::kContentSettingsFullScreenPatternPairs); |
| 345 base::DictionaryValue* local_dict_value = update.Get(); | 346 base::DictionaryValue* local_dict_value = update.Get(); |
| 346 SetContentPattern(local_dict_value, expression0_, content_type0_, 2); | 347 SetContentPattern(local_dict_value, expression0_, 2); |
| 347 SetContentPattern(local_dict_value, expression0_, content_type1_, 2); | 348 SetContentPattern(local_dict_value, expression1_, 2); |
| 348 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); | 349 SetContentPattern(local_dict_value, expression2_, 1); |
| 349 } | 350 } |
| 350 | 351 |
| 351 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 352 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 352 prefs::kContentSettingsPatternPairs, | 353 prefs::kContentSettingsFullScreenPatternPairs, |
| 353 *pref_service_-> | 354 *pref_service_->FindPreference( |
| 354 FindPreference(prefs::kContentSettingsPatternPairs)->GetValue(), | 355 prefs::kContentSettingsFullScreenPatternPairs)->GetValue(), |
| 355 server_patterns_)); | 356 server_patterns_)); |
| 356 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); | 357 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); |
| 357 } | 358 } |
| 358 | 359 |
| 359 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { | 360 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { |
| 360 protected: | 361 protected: |
| 361 IndividualPreferenceMergeTest() : | 362 IndividualPreferenceMergeTest() : |
| 362 url0_("http://example.com/server0"), | 363 url0_("http://example.com/server0"), |
| 363 url1_("http://example.com/server1"), | 364 url1_("http://example.com/server1"), |
| 364 expression0_("expression0"), | 365 expression0_("expression0"), |
| 365 expression1_("expression1"), | 366 expression1_("expression1") {} |
| 366 content_type0_("content_type0") {} | |
| 367 | 367 |
| 368 void SetUp() override { | 368 void SetUp() override { |
| 369 AbstractPreferenceMergeTest::SetUp(); | 369 AbstractPreferenceMergeTest::SetUp(); |
| 370 server_url_list_.Append(new base::StringValue(url0_)); | 370 server_url_list_.Append(new base::StringValue(url0_)); |
| 371 SetContentPattern(&server_patterns_, expression0_, content_type0_, 1); | 371 SetContentPattern(&server_patterns_, expression0_, 1); |
| 372 } | 372 } |
| 373 | 373 |
| 374 bool MergeListPreference(const char* pref) { | 374 bool MergeListPreference(const char* pref) { |
| 375 { | 375 { |
| 376 ListPrefUpdate update(pref_service_, pref); | 376 ListPrefUpdate update(pref_service_, pref); |
| 377 base::ListValue* local_list_value = update.Get(); | 377 base::ListValue* local_list_value = update.Get(); |
| 378 local_list_value->Append(new base::StringValue(url1_)); | 378 local_list_value->Append(new base::StringValue(url1_)); |
| 379 } | 379 } |
| 380 | 380 |
| 381 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 381 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 382 pref, | 382 pref, |
| 383 *pref_service_->GetUserPrefValue(pref), | 383 *pref_service_->GetUserPrefValue(pref), |
| 384 server_url_list_)); | 384 server_url_list_)); |
| 385 | 385 |
| 386 base::ListValue expected; | 386 base::ListValue expected; |
| 387 expected.Append(new base::StringValue(url0_)); | 387 expected.Append(new base::StringValue(url0_)); |
| 388 expected.Append(new base::StringValue(url1_)); | 388 expected.Append(new base::StringValue(url1_)); |
| 389 return merged_value->Equals(&expected); | 389 return merged_value->Equals(&expected); |
| 390 } | 390 } |
| 391 | 391 |
| 392 bool MergeDictionaryPreference(const char* pref) { | 392 bool MergeDictionaryPreference(const char* pref) { |
| 393 { | 393 { |
| 394 DictionaryPrefUpdate update(pref_service_, pref); | 394 DictionaryPrefUpdate update(pref_service_, pref); |
| 395 base::DictionaryValue* local_dict_value = update.Get(); | 395 base::DictionaryValue* local_dict_value = update.Get(); |
| 396 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); | 396 SetContentPattern(local_dict_value, expression1_, 1); |
| 397 } | 397 } |
| 398 | 398 |
| 399 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( | 399 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( |
| 400 pref, | 400 pref, |
| 401 *pref_service_->GetUserPrefValue(pref), | 401 *pref_service_->GetUserPrefValue(pref), |
| 402 server_patterns_)); | 402 server_patterns_)); |
| 403 | 403 |
| 404 base::DictionaryValue expected; | 404 base::DictionaryValue expected; |
| 405 SetContentPattern(&expected, expression0_, content_type0_, 1); | 405 SetContentPattern(&expected, expression0_, 1); |
| 406 SetContentPattern(&expected, expression1_, content_type0_, 1); | 406 SetContentPattern(&expected, expression1_, 1); |
| 407 return merged_value->Equals(&expected); | 407 return merged_value->Equals(&expected); |
| 408 } | 408 } |
| 409 | 409 |
| 410 std::string url0_; | 410 std::string url0_; |
| 411 std::string url1_; | 411 std::string url1_; |
| 412 std::string expression0_; | 412 std::string expression0_; |
| 413 std::string expression1_; | 413 std::string expression1_; |
| 414 std::string content_type0_; | 414 std::string content_type0_; |
| 415 base::ListValue server_url_list_; | 415 base::ListValue server_url_list_; |
| 416 base::DictionaryValue server_patterns_; | 416 base::DictionaryValue server_patterns_; |
| 417 }; | 417 }; |
| 418 | 418 |
| 419 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { | 419 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { |
| 420 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); | 420 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); |
| 421 } | 421 } |
| OLD | NEW |