| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/syncable_prefs/pref_service_syncable.h" | 5 #include "components/syncable_prefs/pref_service_syncable.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
| 10 #include "base/json/json_string_value_serializer.h" | 10 #include "base/json/json_string_value_serializer.h" |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 EXPECT_TRUE(IsSynced(kStringPrefName)); | 247 EXPECT_TRUE(IsSynced(kStringPrefName)); |
| 248 EXPECT_TRUE(pref->IsDefaultValue()); | 248 EXPECT_TRUE(pref->IsDefaultValue()); |
| 249 EXPECT_FALSE(FindValue(kStringPrefName, out).get()); | 249 EXPECT_FALSE(FindValue(kStringPrefName, out).get()); |
| 250 } | 250 } |
| 251 | 251 |
| 252 TEST_F(PrefServiceSyncableTest, ModelAssociationEmptyCloud) { | 252 TEST_F(PrefServiceSyncableTest, ModelAssociationEmptyCloud) { |
| 253 prefs_.SetString(kStringPrefName, kExampleUrl0); | 253 prefs_.SetString(kStringPrefName, kExampleUrl0); |
| 254 { | 254 { |
| 255 ListPrefUpdate update(GetPrefs(), kListPrefName); | 255 ListPrefUpdate update(GetPrefs(), kListPrefName); |
| 256 base::ListValue* url_list = update.Get(); | 256 base::ListValue* url_list = update.Get(); |
| 257 url_list->Append(new base::StringValue(kExampleUrl0)); | 257 url_list->AppendString(kExampleUrl0); |
| 258 url_list->Append(new base::StringValue(kExampleUrl1)); | 258 url_list->AppendString(kExampleUrl1); |
| 259 } | 259 } |
| 260 syncer::SyncChangeList out; | 260 syncer::SyncChangeList out; |
| 261 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); | 261 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); |
| 262 | 262 |
| 263 std::unique_ptr<base::Value> value(FindValue(kStringPrefName, out)); | 263 std::unique_ptr<base::Value> value(FindValue(kStringPrefName, out)); |
| 264 ASSERT_TRUE(value.get()); | 264 ASSERT_TRUE(value.get()); |
| 265 EXPECT_TRUE(GetPreferenceValue(kStringPrefName).Equals(value.get())); | 265 EXPECT_TRUE(GetPreferenceValue(kStringPrefName).Equals(value.get())); |
| 266 value = FindValue(kListPrefName, out); | 266 value = FindValue(kListPrefName, out); |
| 267 ASSERT_TRUE(value.get()); | 267 ASSERT_TRUE(value.get()); |
| 268 EXPECT_TRUE(GetPreferenceValue(kListPrefName).Equals(value.get())); | 268 EXPECT_TRUE(GetPreferenceValue(kListPrefName).Equals(value.get())); |
| 269 } | 269 } |
| 270 | 270 |
| 271 TEST_F(PrefServiceSyncableTest, ModelAssociationCloudHasData) { | 271 TEST_F(PrefServiceSyncableTest, ModelAssociationCloudHasData) { |
| 272 prefs_.SetString(kStringPrefName, kExampleUrl0); | 272 prefs_.SetString(kStringPrefName, kExampleUrl0); |
| 273 { | 273 { |
| 274 ListPrefUpdate update(GetPrefs(), kListPrefName); | 274 ListPrefUpdate update(GetPrefs(), kListPrefName); |
| 275 base::ListValue* url_list = update.Get(); | 275 base::ListValue* url_list = update.Get(); |
| 276 url_list->Append(new base::StringValue(kExampleUrl0)); | 276 url_list->AppendString(kExampleUrl0); |
| 277 url_list->Append(new base::StringValue(kExampleUrl1)); | 277 url_list->AppendString(kExampleUrl1); |
| 278 } | 278 } |
| 279 | 279 |
| 280 syncer::SyncDataList in; | 280 syncer::SyncDataList in; |
| 281 syncer::SyncChangeList out; | 281 syncer::SyncChangeList out; |
| 282 AddToRemoteDataList(kStringPrefName, base::StringValue(kExampleUrl1), &in); | 282 AddToRemoteDataList(kStringPrefName, base::StringValue(kExampleUrl1), &in); |
| 283 base::ListValue urls_to_restore; | 283 base::ListValue urls_to_restore; |
| 284 urls_to_restore.Append(new base::StringValue(kExampleUrl1)); | 284 urls_to_restore.AppendString(kExampleUrl1); |
| 285 urls_to_restore.Append(new base::StringValue(kExampleUrl2)); | 285 urls_to_restore.AppendString(kExampleUrl2); |
| 286 AddToRemoteDataList(kListPrefName, urls_to_restore, &in); | 286 AddToRemoteDataList(kListPrefName, urls_to_restore, &in); |
| 287 AddToRemoteDataList(kDefaultCharsetPrefName, | 287 AddToRemoteDataList(kDefaultCharsetPrefName, |
| 288 base::StringValue(kNonDefaultCharsetValue), | 288 base::StringValue(kNonDefaultCharsetValue), |
| 289 &in); | 289 &in); |
| 290 InitWithSyncDataTakeOutput(in, &out); | 290 InitWithSyncDataTakeOutput(in, &out); |
| 291 | 291 |
| 292 ASSERT_FALSE(FindValue(kStringPrefName, out).get()); | 292 ASSERT_FALSE(FindValue(kStringPrefName, out).get()); |
| 293 ASSERT_FALSE(FindValue(kDefaultCharsetPrefName, out).get()); | 293 ASSERT_FALSE(FindValue(kDefaultCharsetPrefName, out).get()); |
| 294 | 294 |
| 295 EXPECT_EQ(kExampleUrl1, prefs_.GetString(kStringPrefName)); | 295 EXPECT_EQ(kExampleUrl1, prefs_.GetString(kStringPrefName)); |
| 296 | 296 |
| 297 std::unique_ptr<base::ListValue> expected_urls(new base::ListValue); | 297 std::unique_ptr<base::ListValue> expected_urls(new base::ListValue); |
| 298 expected_urls->Append(new base::StringValue(kExampleUrl1)); | 298 expected_urls->AppendString(kExampleUrl1); |
| 299 expected_urls->Append(new base::StringValue(kExampleUrl2)); | 299 expected_urls->AppendString(kExampleUrl2); |
| 300 expected_urls->Append(new base::StringValue(kExampleUrl0)); | 300 expected_urls->AppendString(kExampleUrl0); |
| 301 std::unique_ptr<base::Value> value(FindValue(kListPrefName, out)); | 301 std::unique_ptr<base::Value> value(FindValue(kListPrefName, out)); |
| 302 ASSERT_TRUE(value.get()); | 302 ASSERT_TRUE(value.get()); |
| 303 EXPECT_TRUE(value->Equals(expected_urls.get())); | 303 EXPECT_TRUE(value->Equals(expected_urls.get())); |
| 304 EXPECT_TRUE(GetPreferenceValue(kListPrefName).Equals(expected_urls.get())); | 304 EXPECT_TRUE(GetPreferenceValue(kListPrefName).Equals(expected_urls.get())); |
| 305 EXPECT_EQ(kNonDefaultCharsetValue, prefs_.GetString(kDefaultCharsetPrefName)); | 305 EXPECT_EQ(kNonDefaultCharsetValue, prefs_.GetString(kDefaultCharsetPrefName)); |
| 306 } | 306 } |
| 307 | 307 |
| 308 TEST_F(PrefServiceSyncableTest, FailModelAssociation) { | 308 TEST_F(PrefServiceSyncableTest, FailModelAssociation) { |
| 309 syncer::SyncChangeList output; | 309 syncer::SyncChangeList output; |
| 310 TestSyncProcessorStub* stub = new TestSyncProcessorStub(&output); | 310 TestSyncProcessorStub* stub = new TestSyncProcessorStub(&output); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kStringPrefName))); | 410 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kStringPrefName))); |
| 411 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kStringPrefName))); | 411 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kStringPrefName))); |
| 412 } | 412 } |
| 413 | 413 |
| 414 // List preferences have special handling at association time due to our ability | 414 // List preferences have special handling at association time due to our ability |
| 415 // to merge the local and sync value. Make sure the merge logic doesn't merge | 415 // to merge the local and sync value. Make sure the merge logic doesn't merge |
| 416 // managed preferences. | 416 // managed preferences. |
| 417 TEST_F(PrefServiceSyncableTest, ManagedListPreferences) { | 417 TEST_F(PrefServiceSyncableTest, ManagedListPreferences) { |
| 418 // Make the list of urls to restore on startup managed. | 418 // Make the list of urls to restore on startup managed. |
| 419 base::ListValue managed_value; | 419 base::ListValue managed_value; |
| 420 managed_value.Append(new base::StringValue(kExampleUrl0)); | 420 managed_value.AppendString(kExampleUrl0); |
| 421 managed_value.Append(new base::StringValue(kExampleUrl1)); | 421 managed_value.AppendString(kExampleUrl1); |
| 422 prefs_.SetManagedPref(kListPrefName, managed_value.DeepCopy()); | 422 prefs_.SetManagedPref(kListPrefName, managed_value.DeepCopy()); |
| 423 | 423 |
| 424 // Set a cloud version. | 424 // Set a cloud version. |
| 425 syncer::SyncDataList in; | 425 syncer::SyncDataList in; |
| 426 syncer::SyncChangeList out; | 426 syncer::SyncChangeList out; |
| 427 base::ListValue urls_to_restore; | 427 base::ListValue urls_to_restore; |
| 428 urls_to_restore.Append(new base::StringValue(kExampleUrl1)); | 428 urls_to_restore.AppendString(kExampleUrl1); |
| 429 urls_to_restore.Append(new base::StringValue(kExampleUrl2)); | 429 urls_to_restore.AppendString(kExampleUrl2); |
| 430 AddToRemoteDataList(kListPrefName, urls_to_restore, &in); | 430 AddToRemoteDataList(kListPrefName, urls_to_restore, &in); |
| 431 | 431 |
| 432 // Start sync and verify the synced value didn't get merged. | 432 // Start sync and verify the synced value didn't get merged. |
| 433 InitWithSyncDataTakeOutput(in, &out); | 433 InitWithSyncDataTakeOutput(in, &out); |
| 434 EXPECT_FALSE(FindValue(kListPrefName, out).get()); | 434 EXPECT_FALSE(FindValue(kListPrefName, out).get()); |
| 435 out.clear(); | 435 out.clear(); |
| 436 | 436 |
| 437 // Changing the user's urls to restore on startup pref should not sync | 437 // Changing the user's urls to restore on startup pref should not sync |
| 438 // anything. | 438 // anything. |
| 439 base::ListValue user_value; | 439 base::ListValue user_value; |
| 440 user_value.Append(new base::StringValue("http://chromium.org")); | 440 user_value.AppendString("http://chromium.org"); |
| 441 prefs_.SetUserPref(kListPrefName, user_value.DeepCopy()); | 441 prefs_.SetUserPref(kListPrefName, user_value.DeepCopy()); |
| 442 EXPECT_FALSE(FindValue(kListPrefName, out).get()); | 442 EXPECT_FALSE(FindValue(kListPrefName, out).get()); |
| 443 | 443 |
| 444 // An incoming sync transaction should change the user value, not the managed | 444 // An incoming sync transaction should change the user value, not the managed |
| 445 // value. | 445 // value. |
| 446 base::ListValue sync_value; | 446 base::ListValue sync_value; |
| 447 sync_value.Append(new base::StringValue("http://crbug.com")); | 447 sync_value.AppendString("http://crbug.com"); |
| 448 syncer::SyncChangeList list; | 448 syncer::SyncChangeList list; |
| 449 list.push_back(MakeRemoteChange( | 449 list.push_back(MakeRemoteChange( |
| 450 1, kListPrefName, sync_value, | 450 1, kListPrefName, sync_value, |
| 451 SyncChange::ACTION_UPDATE)); | 451 SyncChange::ACTION_UPDATE)); |
| 452 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 452 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
| 453 | 453 |
| 454 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kListPrefName))); | 454 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kListPrefName))); |
| 455 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kListPrefName))); | 455 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kListPrefName))); |
| 456 } | 456 } |
| 457 | 457 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 syncer::SyncChangeList list; | 551 syncer::SyncChangeList list; |
| 552 list.push_back(MakeRemoteChange( | 552 list.push_back(MakeRemoteChange( |
| 553 1, kStringPrefName, *null_value, SyncChange::ACTION_DELETE)); | 553 1, kStringPrefName, *null_value, SyncChange::ACTION_DELETE)); |
| 554 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 554 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
| 555 EXPECT_TRUE(pref->IsDefaultValue()); | 555 EXPECT_TRUE(pref->IsDefaultValue()); |
| 556 } | 556 } |
| 557 | 557 |
| 558 } // namespace | 558 } // namespace |
| 559 | 559 |
| 560 } // namespace syncable_prefs | 560 } // namespace syncable_prefs |
| OLD | NEW |