Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: components/sync_preferences/pref_service_syncable_unittest.cc

Issue 2459823002: [Sync] Rename syncable_prefs to sync_preferences. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/sync_preferences/pref_service_syncable.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory>
10
9 #include "base/json/json_reader.h" 11 #include "base/json/json_reader.h"
10 #include "base/json/json_string_value_serializer.h" 12 #include "base/json/json_string_value_serializer.h"
11 #include "base/json/json_writer.h" 13 #include "base/json/json_writer.h"
12 #include "base/macros.h" 14 #include "base/macros.h"
13 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
14 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
15 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
16 #include "components/pref_registry/pref_registry_syncable.h" 18 #include "components/pref_registry/pref_registry_syncable.h"
17 #include "components/prefs/scoped_user_pref_update.h" 19 #include "components/prefs/scoped_user_pref_update.h"
18 #include "components/sync/model/attachments/attachment_id.h" 20 #include "components/sync/model/attachments/attachment_id.h"
19 #include "components/sync/model/attachments/attachment_service_proxy_for_test.h" 21 #include "components/sync/model/attachments/attachment_service_proxy_for_test.h"
20 #include "components/sync/model/sync_change.h" 22 #include "components/sync/model/sync_change.h"
21 #include "components/sync/model/sync_data.h" 23 #include "components/sync/model/sync_data.h"
22 #include "components/sync/model/sync_error_factory_mock.h" 24 #include "components/sync/model/sync_error_factory_mock.h"
23 #include "components/sync/model/syncable_service.h" 25 #include "components/sync/model/syncable_service.h"
24 #include "components/sync/protocol/preference_specifics.pb.h" 26 #include "components/sync/protocol/preference_specifics.pb.h"
25 #include "components/sync/protocol/sync.pb.h" 27 #include "components/sync/protocol/sync.pb.h"
26 #include "components/syncable_prefs/pref_model_associator.h" 28 #include "components/sync_preferences/pref_model_associator.h"
27 #include "components/syncable_prefs/pref_model_associator_client.h" 29 #include "components/sync_preferences/pref_model_associator_client.h"
28 #include "components/syncable_prefs/testing_pref_service_syncable.h" 30 #include "components/sync_preferences/testing_pref_service_syncable.h"
29 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
30 32
31 using syncer::SyncChange; 33 using syncer::SyncChange;
32 using syncer::SyncData; 34 using syncer::SyncData;
33 35
34 namespace syncable_prefs { 36 namespace sync_preferences {
35 37
36 namespace { 38 namespace {
37 39
38 const char kExampleUrl0[] = "http://example.com/0"; 40 const char kExampleUrl0[] = "http://example.com/0";
39 const char kExampleUrl1[] = "http://example.com/1"; 41 const char kExampleUrl1[] = "http://example.com/1";
40 const char kExampleUrl2[] = "http://example.com/2"; 42 const char kExampleUrl2[] = "http://example.com/2";
41 const char kStringPrefName[] = "string_pref_name"; 43 const char kStringPrefName[] = "string_pref_name";
42 const char kListPrefName[] = "list_pref_name"; 44 const char kListPrefName[] = "list_pref_name";
43 const char kUnsyncedPreferenceName[] = "nonsense_pref_name"; 45 const char kUnsyncedPreferenceName[] = "nonsense_pref_name";
44 const char kUnsyncedPreferenceDefaultValue[] = "default"; 46 const char kUnsyncedPreferenceDefaultValue[] = "default";
(...skipping 28 matching lines...) Expand all
73 public: 75 public:
74 explicit TestSyncProcessorStub(syncer::SyncChangeList* output) 76 explicit TestSyncProcessorStub(syncer::SyncChangeList* output)
75 : output_(output), fail_next_(false) {} 77 : output_(output), fail_next_(false) {}
76 syncer::SyncError ProcessSyncChanges( 78 syncer::SyncError ProcessSyncChanges(
77 const tracked_objects::Location& from_here, 79 const tracked_objects::Location& from_here,
78 const syncer::SyncChangeList& change_list) override { 80 const syncer::SyncChangeList& change_list) override {
79 if (output_) 81 if (output_)
80 output_->insert(output_->end(), change_list.begin(), change_list.end()); 82 output_->insert(output_->end(), change_list.begin(), change_list.end());
81 if (fail_next_) { 83 if (fail_next_) {
82 fail_next_ = false; 84 fail_next_ = false;
83 return syncer::SyncError( 85 return syncer::SyncError(FROM_HERE, syncer::SyncError::DATATYPE_ERROR,
84 FROM_HERE, syncer::SyncError::DATATYPE_ERROR, "Error", 86 "Error", syncer::PREFERENCES);
85 syncer::PREFERENCES);
86 } 87 }
87 return syncer::SyncError(); 88 return syncer::SyncError();
88 } 89 }
89 90
90 void FailNextProcessSyncChanges() { 91 void FailNextProcessSyncChanges() { fail_next_ = true; }
91 fail_next_ = true;
92 }
93 92
94 syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const override { 93 syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const override {
95 return syncer::SyncDataList(); 94 return syncer::SyncDataList();
96 } 95 }
96
97 private: 97 private:
98 syncer::SyncChangeList* output_; 98 syncer::SyncChangeList* output_;
99 bool fail_next_; 99 bool fail_next_;
100 }; 100 };
101 101
102 class PrefServiceSyncableTest : public testing::Test { 102 class PrefServiceSyncableTest : public testing::Test {
103 public: 103 public:
104 PrefServiceSyncableTest() 104 PrefServiceSyncableTest()
105 : pref_sync_service_(NULL), 105 : pref_sync_service_(NULL),
106 test_processor_(NULL), 106 test_processor_(NULL),
107 next_pref_remote_sync_node_id_(0) {} 107 next_pref_remote_sync_node_id_(0) {}
108 108
109 void SetUp() override { 109 void SetUp() override {
110 prefs_.SetPrefModelAssociatorClientForTesting(&client_); 110 prefs_.SetPrefModelAssociatorClientForTesting(&client_);
111 prefs_.registry()->RegisterStringPref(kUnsyncedPreferenceName, 111 prefs_.registry()->RegisterStringPref(kUnsyncedPreferenceName,
112 kUnsyncedPreferenceDefaultValue); 112 kUnsyncedPreferenceDefaultValue);
113 prefs_.registry()->RegisterStringPref( 113 prefs_.registry()->RegisterStringPref(
114 kStringPrefName, 114 kStringPrefName, std::string(),
115 std::string(),
116 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 115 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
117 prefs_.registry()->RegisterListPref( 116 prefs_.registry()->RegisterListPref(
118 kListPrefName, 117 kListPrefName, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
119 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
120 prefs_.registry()->RegisterStringPref( 118 prefs_.registry()->RegisterStringPref(
121 kDefaultCharsetPrefName, 119 kDefaultCharsetPrefName, kDefaultCharsetValue,
122 kDefaultCharsetValue,
123 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 120 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
124 121
125 pref_sync_service_ = reinterpret_cast<PrefModelAssociator*>( 122 pref_sync_service_ = reinterpret_cast<PrefModelAssociator*>(
126 prefs_.GetSyncableService(syncer::PREFERENCES)); 123 prefs_.GetSyncableService(syncer::PREFERENCES));
127 ASSERT_TRUE(pref_sync_service_); 124 ASSERT_TRUE(pref_sync_service_);
128 } 125 }
129 126
130 syncer::SyncChange MakeRemoteChange(int64_t id, 127 syncer::SyncChange MakeRemoteChange(int64_t id,
131 const std::string& name, 128 const std::string& name,
132 const base::Value& value, 129 const base::Value& value,
133 SyncChange::SyncChangeType type) { 130 SyncChange::SyncChangeType type) {
134 std::string serialized; 131 std::string serialized;
135 JSONStringValueSerializer json(&serialized); 132 JSONStringValueSerializer json(&serialized);
136 if (!json.Serialize(value)) 133 if (!json.Serialize(value))
137 return syncer::SyncChange(); 134 return syncer::SyncChange();
138 sync_pb::EntitySpecifics entity; 135 sync_pb::EntitySpecifics entity;
139 sync_pb::PreferenceSpecifics* pref_one = entity.mutable_preference(); 136 sync_pb::PreferenceSpecifics* pref_one = entity.mutable_preference();
140 pref_one->set_name(name); 137 pref_one->set_name(name);
141 pref_one->set_value(serialized); 138 pref_one->set_value(serialized);
142 return syncer::SyncChange( 139 return syncer::SyncChange(
143 FROM_HERE, 140 FROM_HERE, type,
144 type,
145 syncer::SyncData::CreateRemoteData( 141 syncer::SyncData::CreateRemoteData(
146 id, 142 id, entity, base::Time(), syncer::AttachmentIdList(),
147 entity,
148 base::Time(),
149 syncer::AttachmentIdList(),
150 syncer::AttachmentServiceProxyForTest::Create())); 143 syncer::AttachmentServiceProxyForTest::Create()));
151 } 144 }
152 145
153 void AddToRemoteDataList(const std::string& name, 146 void AddToRemoteDataList(const std::string& name,
154 const base::Value& value, 147 const base::Value& value,
155 syncer::SyncDataList* out) { 148 syncer::SyncDataList* out) {
156 std::string serialized; 149 std::string serialized;
157 JSONStringValueSerializer json(&serialized); 150 JSONStringValueSerializer json(&serialized);
158 ASSERT_TRUE(json.Serialize(value)); 151 ASSERT_TRUE(json.Serialize(value));
159 sync_pb::EntitySpecifics one; 152 sync_pb::EntitySpecifics one;
160 sync_pb::PreferenceSpecifics* pref_one = one.mutable_preference(); 153 sync_pb::PreferenceSpecifics* pref_one = one.mutable_preference();
161 pref_one->set_name(name); 154 pref_one->set_name(name);
162 pref_one->set_value(serialized); 155 pref_one->set_value(serialized);
163 out->push_back(SyncData::CreateRemoteData( 156 out->push_back(SyncData::CreateRemoteData(
164 ++next_pref_remote_sync_node_id_, 157 ++next_pref_remote_sync_node_id_, one, base::Time(),
165 one,
166 base::Time(),
167 syncer::AttachmentIdList(), 158 syncer::AttachmentIdList(),
168 syncer::AttachmentServiceProxyForTest::Create())); 159 syncer::AttachmentServiceProxyForTest::Create()));
169 } 160 }
170 161
171 void InitWithSyncDataTakeOutput(const syncer::SyncDataList& initial_data, 162 void InitWithSyncDataTakeOutput(const syncer::SyncDataList& initial_data,
172 syncer::SyncChangeList* output) { 163 syncer::SyncChangeList* output) {
173 test_processor_ = new TestSyncProcessorStub(output); 164 test_processor_ = new TestSyncProcessorStub(output);
174 syncer::SyncMergeResult r = pref_sync_service_->MergeDataAndStartSyncing( 165 syncer::SyncMergeResult r = pref_sync_service_->MergeDataAndStartSyncing(
175 syncer::PREFERENCES, initial_data, base::WrapUnique(test_processor_), 166 syncer::PREFERENCES, initial_data, base::WrapUnique(test_processor_),
176 base::MakeUnique<syncer::SyncErrorFactoryMock>()); 167 base::MakeUnique<syncer::SyncErrorFactoryMock>());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 base::MessageLoop loop_; 212 base::MessageLoop loop_;
222 213
223 int next_pref_remote_sync_node_id_; 214 int next_pref_remote_sync_node_id_;
224 }; 215 };
225 216
226 TEST_F(PrefServiceSyncableTest, CreatePrefSyncData) { 217 TEST_F(PrefServiceSyncableTest, CreatePrefSyncData) {
227 prefs_.SetString(kStringPrefName, kExampleUrl0); 218 prefs_.SetString(kStringPrefName, kExampleUrl0);
228 219
229 const PrefService::Preference* pref = prefs_.FindPreference(kStringPrefName); 220 const PrefService::Preference* pref = prefs_.FindPreference(kStringPrefName);
230 syncer::SyncData sync_data; 221 syncer::SyncData sync_data;
231 EXPECT_TRUE(pref_sync_service_->CreatePrefSyncData(pref->name(), 222 EXPECT_TRUE(pref_sync_service_->CreatePrefSyncData(
232 *pref->GetValue(), &sync_data)); 223 pref->name(), *pref->GetValue(), &sync_data));
233 EXPECT_EQ(std::string(kStringPrefName), 224 EXPECT_EQ(std::string(kStringPrefName),
234 syncer::SyncDataLocal(sync_data).GetTag()); 225 syncer::SyncDataLocal(sync_data).GetTag());
235 const sync_pb::PreferenceSpecifics& specifics(sync_data.GetSpecifics(). 226 const sync_pb::PreferenceSpecifics& specifics(
236 preference()); 227 sync_data.GetSpecifics().preference());
237 EXPECT_EQ(std::string(kStringPrefName), specifics.name()); 228 EXPECT_EQ(std::string(kStringPrefName), specifics.name());
238 229
239 std::unique_ptr<base::Value> value = 230 std::unique_ptr<base::Value> value =
240 base::JSONReader::Read(specifics.value()); 231 base::JSONReader::Read(specifics.value());
241 EXPECT_TRUE(pref->GetValue()->Equals(value.get())); 232 EXPECT_TRUE(pref->GetValue()->Equals(value.get()));
242 } 233 }
243 234
244 TEST_F(PrefServiceSyncableTest, ModelAssociationDoNotSyncDefaults) { 235 TEST_F(PrefServiceSyncableTest, ModelAssociationDoNotSyncDefaults) {
245 const PrefService::Preference* pref = prefs_.FindPreference(kStringPrefName); 236 const PrefService::Preference* pref = prefs_.FindPreference(kStringPrefName);
246 EXPECT_TRUE(pref->IsDefaultValue()); 237 EXPECT_TRUE(pref->IsDefaultValue());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 } 272 }
282 273
283 syncer::SyncDataList in; 274 syncer::SyncDataList in;
284 syncer::SyncChangeList out; 275 syncer::SyncChangeList out;
285 AddToRemoteDataList(kStringPrefName, base::StringValue(kExampleUrl1), &in); 276 AddToRemoteDataList(kStringPrefName, base::StringValue(kExampleUrl1), &in);
286 base::ListValue urls_to_restore; 277 base::ListValue urls_to_restore;
287 urls_to_restore.AppendString(kExampleUrl1); 278 urls_to_restore.AppendString(kExampleUrl1);
288 urls_to_restore.AppendString(kExampleUrl2); 279 urls_to_restore.AppendString(kExampleUrl2);
289 AddToRemoteDataList(kListPrefName, urls_to_restore, &in); 280 AddToRemoteDataList(kListPrefName, urls_to_restore, &in);
290 AddToRemoteDataList(kDefaultCharsetPrefName, 281 AddToRemoteDataList(kDefaultCharsetPrefName,
291 base::StringValue(kNonDefaultCharsetValue), 282 base::StringValue(kNonDefaultCharsetValue), &in);
292 &in);
293 InitWithSyncDataTakeOutput(in, &out); 283 InitWithSyncDataTakeOutput(in, &out);
294 284
295 ASSERT_FALSE(FindValue(kStringPrefName, out).get()); 285 ASSERT_FALSE(FindValue(kStringPrefName, out).get());
296 ASSERT_FALSE(FindValue(kDefaultCharsetPrefName, out).get()); 286 ASSERT_FALSE(FindValue(kDefaultCharsetPrefName, out).get());
297 287
298 EXPECT_EQ(kExampleUrl1, prefs_.GetString(kStringPrefName)); 288 EXPECT_EQ(kExampleUrl1, prefs_.GetString(kStringPrefName));
299 289
300 std::unique_ptr<base::ListValue> expected_urls(new base::ListValue); 290 std::unique_ptr<base::ListValue> expected_urls(new base::ListValue);
301 expected_urls->AppendString(kExampleUrl1); 291 expected_urls->AppendString(kExampleUrl1);
302 expected_urls->AppendString(kExampleUrl2); 292 expected_urls->AppendString(kExampleUrl2);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 ASSERT_TRUE(actual.get()); 337 ASSERT_TRUE(actual.get());
348 EXPECT_TRUE(expected.Equals(actual.get())); 338 EXPECT_TRUE(expected.Equals(actual.get()));
349 } 339 }
350 340
351 TEST_F(PrefServiceSyncableTest, UpdatedSyncNodeActionUpdate) { 341 TEST_F(PrefServiceSyncableTest, UpdatedSyncNodeActionUpdate) {
352 GetPrefs()->SetString(kStringPrefName, kExampleUrl0); 342 GetPrefs()->SetString(kStringPrefName, kExampleUrl0);
353 InitWithNoSyncData(); 343 InitWithNoSyncData();
354 344
355 base::StringValue expected(kExampleUrl1); 345 base::StringValue expected(kExampleUrl1);
356 syncer::SyncChangeList list; 346 syncer::SyncChangeList list;
357 list.push_back(MakeRemoteChange( 347 list.push_back(MakeRemoteChange(1, kStringPrefName, expected,
358 1, kStringPrefName, expected, SyncChange::ACTION_UPDATE)); 348 SyncChange::ACTION_UPDATE));
359 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); 349 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list);
360 350
361 const base::Value& actual = GetPreferenceValue(kStringPrefName); 351 const base::Value& actual = GetPreferenceValue(kStringPrefName);
362 EXPECT_TRUE(expected.Equals(&actual)); 352 EXPECT_TRUE(expected.Equals(&actual));
363 } 353 }
364 354
365 TEST_F(PrefServiceSyncableTest, UpdatedSyncNodeActionAdd) { 355 TEST_F(PrefServiceSyncableTest, UpdatedSyncNodeActionAdd) {
366 InitWithNoSyncData(); 356 InitWithNoSyncData();
367 357
368 base::StringValue expected(kExampleUrl0); 358 base::StringValue expected(kExampleUrl0);
369 syncer::SyncChangeList list; 359 syncer::SyncChangeList list;
370 list.push_back(MakeRemoteChange( 360 list.push_back(
371 1, kStringPrefName, expected, SyncChange::ACTION_ADD)); 361 MakeRemoteChange(1, kStringPrefName, expected, SyncChange::ACTION_ADD));
372 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); 362 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list);
373 363
374 const base::Value& actual = GetPreferenceValue(kStringPrefName); 364 const base::Value& actual = GetPreferenceValue(kStringPrefName);
375 EXPECT_TRUE(expected.Equals(&actual)); 365 EXPECT_TRUE(expected.Equals(&actual));
376 EXPECT_EQ(1U, 366 EXPECT_EQ(
377 pref_sync_service_->registered_preferences().count(kStringPrefName)); 367 1U, pref_sync_service_->registered_preferences().count(kStringPrefName));
378 } 368 }
379 369
380 TEST_F(PrefServiceSyncableTest, UpdatedSyncNodeUnknownPreference) { 370 TEST_F(PrefServiceSyncableTest, UpdatedSyncNodeUnknownPreference) {
381 InitWithNoSyncData(); 371 InitWithNoSyncData();
382 syncer::SyncChangeList list; 372 syncer::SyncChangeList list;
383 base::StringValue expected(kExampleUrl0); 373 base::StringValue expected(kExampleUrl0);
384 list.push_back(MakeRemoteChange( 374 list.push_back(MakeRemoteChange(1, "unknown preference", expected,
385 1, "unknown preference", expected, SyncChange::ACTION_UPDATE)); 375 SyncChange::ACTION_UPDATE));
386 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); 376 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list);
387 // Nothing interesting happens on the client when it gets an update 377 // Nothing interesting happens on the client when it gets an update
388 // of an unknown preference. We just should not crash. 378 // of an unknown preference. We just should not crash.
389 } 379 }
390 380
391 TEST_F(PrefServiceSyncableTest, ManagedPreferences) { 381 TEST_F(PrefServiceSyncableTest, ManagedPreferences) {
392 // Make the homepage preference managed. 382 // Make the homepage preference managed.
393 base::StringValue managed_value("http://example.com"); 383 base::StringValue managed_value("http://example.com");
394 prefs_.SetManagedPref(kStringPrefName, managed_value.DeepCopy()); 384 prefs_.SetManagedPref(kStringPrefName, managed_value.DeepCopy());
395 385
396 syncer::SyncChangeList out; 386 syncer::SyncChangeList out;
397 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); 387 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out);
398 out.clear(); 388 out.clear();
399 389
400 // Changing the homepage preference should not sync anything. 390 // Changing the homepage preference should not sync anything.
401 base::StringValue user_value("http://chromium..com"); 391 base::StringValue user_value("http://chromium..com");
402 prefs_.SetUserPref(kStringPrefName, user_value.DeepCopy()); 392 prefs_.SetUserPref(kStringPrefName, user_value.DeepCopy());
403 EXPECT_TRUE(out.empty()); 393 EXPECT_TRUE(out.empty());
404 394
405 // An incoming sync transaction should change the user value, not the managed 395 // An incoming sync transaction should change the user value, not the managed
406 // value. 396 // value.
407 base::StringValue sync_value("http://crbug.com"); 397 base::StringValue sync_value("http://crbug.com");
408 syncer::SyncChangeList list; 398 syncer::SyncChangeList list;
409 list.push_back(MakeRemoteChange( 399 list.push_back(MakeRemoteChange(1, kStringPrefName, sync_value,
410 1, kStringPrefName, sync_value, SyncChange::ACTION_UPDATE)); 400 SyncChange::ACTION_UPDATE));
411 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); 401 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list);
412 402
413 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kStringPrefName))); 403 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kStringPrefName)));
414 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kStringPrefName))); 404 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kStringPrefName)));
415 } 405 }
416 406
417 // List preferences have special handling at association time due to our ability 407 // List preferences have special handling at association time due to our ability
418 // to merge the local and sync value. Make sure the merge logic doesn't merge 408 // to merge the local and sync value. Make sure the merge logic doesn't merge
419 // managed preferences. 409 // managed preferences.
420 TEST_F(PrefServiceSyncableTest, ManagedListPreferences) { 410 TEST_F(PrefServiceSyncableTest, ManagedListPreferences) {
(...skipping 21 matching lines...) Expand all
442 base::ListValue user_value; 432 base::ListValue user_value;
443 user_value.AppendString("http://chromium.org"); 433 user_value.AppendString("http://chromium.org");
444 prefs_.SetUserPref(kListPrefName, user_value.DeepCopy()); 434 prefs_.SetUserPref(kListPrefName, user_value.DeepCopy());
445 EXPECT_FALSE(FindValue(kListPrefName, out).get()); 435 EXPECT_FALSE(FindValue(kListPrefName, out).get());
446 436
447 // An incoming sync transaction should change the user value, not the managed 437 // An incoming sync transaction should change the user value, not the managed
448 // value. 438 // value.
449 base::ListValue sync_value; 439 base::ListValue sync_value;
450 sync_value.AppendString("http://crbug.com"); 440 sync_value.AppendString("http://crbug.com");
451 syncer::SyncChangeList list; 441 syncer::SyncChangeList list;
452 list.push_back(MakeRemoteChange( 442 list.push_back(MakeRemoteChange(1, kListPrefName, sync_value,
453 1, kListPrefName, sync_value, 443 SyncChange::ACTION_UPDATE));
454 SyncChange::ACTION_UPDATE));
455 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); 444 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list);
456 445
457 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kListPrefName))); 446 EXPECT_TRUE(managed_value.Equals(prefs_.GetManagedPref(kListPrefName)));
458 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kListPrefName))); 447 EXPECT_TRUE(sync_value.Equals(prefs_.GetUserPref(kListPrefName)));
459 } 448 }
460 449
461 TEST_F(PrefServiceSyncableTest, DynamicManagedPreferences) { 450 TEST_F(PrefServiceSyncableTest, DynamicManagedPreferences) {
462 syncer::SyncChangeList out; 451 syncer::SyncChangeList out;
463 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out); 452 InitWithSyncDataTakeOutput(syncer::SyncDataList(), &out);
464 out.clear(); 453 out.clear();
(...skipping 29 matching lines...) Expand all
494 EXPECT_TRUE(initial_value.Equals(actual.get())); 483 EXPECT_TRUE(initial_value.Equals(actual.get()));
495 484
496 // Switch kHomePage to managed and set a different value. 485 // Switch kHomePage to managed and set a different value.
497 base::StringValue managed_value("http://example.com/managed"); 486 base::StringValue managed_value("http://example.com/managed");
498 GetTestingPrefService()->SetManagedPref(kStringPrefName, 487 GetTestingPrefService()->SetManagedPref(kStringPrefName,
499 managed_value.DeepCopy()); 488 managed_value.DeepCopy());
500 489
501 // Change the sync value. 490 // Change the sync value.
502 base::StringValue sync_value("http://example.com/sync"); 491 base::StringValue sync_value("http://example.com/sync");
503 syncer::SyncChangeList list; 492 syncer::SyncChangeList list;
504 list.push_back(MakeRemoteChange( 493 list.push_back(MakeRemoteChange(1, kStringPrefName, sync_value,
505 1, kStringPrefName, sync_value, SyncChange::ACTION_UPDATE)); 494 SyncChange::ACTION_UPDATE));
506 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); 495 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list);
507 496
508 // The pref value should still be the one dictated by policy. 497 // The pref value should still be the one dictated by policy.
509 EXPECT_TRUE(managed_value.Equals(&GetPreferenceValue(kStringPrefName))); 498 EXPECT_TRUE(managed_value.Equals(&GetPreferenceValue(kStringPrefName)));
510 499
511 // Switch kHomePage back to unmanaged. 500 // Switch kHomePage back to unmanaged.
512 GetTestingPrefService()->RemoveManagedPref(kStringPrefName); 501 GetTestingPrefService()->RemoveManagedPref(kStringPrefName);
513 502
514 // Sync value should be picked up. 503 // Sync value should be picked up.
515 EXPECT_TRUE(sync_value.Equals(&GetPreferenceValue(kStringPrefName))); 504 EXPECT_TRUE(sync_value.Equals(&GetPreferenceValue(kStringPrefName)));
(...skipping 29 matching lines...) Expand all
545 534
546 TEST_F(PrefServiceSyncableTest, DeletePreference) { 535 TEST_F(PrefServiceSyncableTest, DeletePreference) {
547 prefs_.SetString(kStringPrefName, kExampleUrl0); 536 prefs_.SetString(kStringPrefName, kExampleUrl0);
548 const PrefService::Preference* pref = prefs_.FindPreference(kStringPrefName); 537 const PrefService::Preference* pref = prefs_.FindPreference(kStringPrefName);
549 EXPECT_FALSE(pref->IsDefaultValue()); 538 EXPECT_FALSE(pref->IsDefaultValue());
550 539
551 InitWithNoSyncData(); 540 InitWithNoSyncData();
552 541
553 std::unique_ptr<base::Value> null_value = base::Value::CreateNullValue(); 542 std::unique_ptr<base::Value> null_value = base::Value::CreateNullValue();
554 syncer::SyncChangeList list; 543 syncer::SyncChangeList list;
555 list.push_back(MakeRemoteChange( 544 list.push_back(MakeRemoteChange(1, kStringPrefName, *null_value,
556 1, kStringPrefName, *null_value, SyncChange::ACTION_DELETE)); 545 SyncChange::ACTION_DELETE));
557 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list); 546 pref_sync_service_->ProcessSyncChanges(FROM_HERE, list);
558 EXPECT_TRUE(pref->IsDefaultValue()); 547 EXPECT_TRUE(pref->IsDefaultValue());
559 } 548 }
560 549
561 TEST_F(PrefServiceSyncableTest, RegisterMergeDataFinishedCallback) { 550 TEST_F(PrefServiceSyncableTest, RegisterMergeDataFinishedCallback) {
562 int num_callbacks = 0; 551 int num_callbacks = 0;
563 552
564 prefs_.RegisterMergeDataFinishedCallback( 553 prefs_.RegisterMergeDataFinishedCallback(
565 base::Bind(&Increment, &num_callbacks)); 554 base::Bind(&Increment, &num_callbacks));
566 EXPECT_EQ(0, num_callbacks); 555 EXPECT_EQ(0, num_callbacks);
567 556
568 InitWithNoSyncData(); 557 InitWithNoSyncData();
569 EXPECT_EQ(1, num_callbacks); 558 EXPECT_EQ(1, num_callbacks);
570 } 559 }
571 560
572 } // namespace 561 } // namespace
573 562
574 } // namespace syncable_prefs 563 } // namespace sync_preferences
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698