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

Side by Side Diff: chrome/browser/sync/profile_sync_service_preference_unittest.cc

Issue 12033093: sync: Implementation of Priority Preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Attempting to parametrize the PSS pref test fixture to also test priority prefs. Created 7 years, 9 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <map> 5 #include <map>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "testing/gtest/include/gtest/gtest.h" 42 #include "testing/gtest/include/gtest/gtest.h"
43 43
44 using base::JSONReader; 44 using base::JSONReader;
45 using browser_sync::GenericChangeProcessor; 45 using browser_sync::GenericChangeProcessor;
46 using browser_sync::SharedChangeProcessor; 46 using browser_sync::SharedChangeProcessor;
47 using browser_sync::UIDataTypeController; 47 using browser_sync::UIDataTypeController;
48 using syncer::ChangeRecord; 48 using syncer::ChangeRecord;
49 using testing::_; 49 using testing::_;
50 using testing::Invoke; 50 using testing::Invoke;
51 using testing::Return; 51 using testing::Return;
52 using testing::Values;
52 53
53 typedef std::map<const std::string, const Value*> PreferenceValues; 54 typedef std::map<const std::string, const Value*> PreferenceValues;
54 55
55 ACTION_P(CreateAndSaveChangeProcessor, change_processor) { 56 ACTION_P(CreateAndSaveChangeProcessor, change_processor) {
56 syncer::UserShare* user_share = arg0->GetUserShare(); 57 syncer::UserShare* user_share = arg0->GetUserShare();
57 *change_processor = new GenericChangeProcessor(arg1, 58 *change_processor = new GenericChangeProcessor(arg1,
58 arg2, 59 arg2,
59 arg3, 60 arg3,
60 user_share); 61 user_share);
61 return *change_processor; 62 return *change_processor;
62 } 63 }
63 64
64 ACTION_P(ReturnNewDataTypeManagerWithDebugListener, debug_listener) { 65 ACTION_P(ReturnNewDataTypeManagerWithDebugListener, debug_listener) {
65 return new browser_sync::DataTypeManagerImpl( 66 return new browser_sync::DataTypeManagerImpl(
66 debug_listener, 67 debug_listener,
67 arg1, 68 arg1,
68 arg2, 69 arg2,
69 arg3, 70 arg3,
70 arg4); 71 arg4);
71 } 72 }
72 73
73 // TODO(zea): Refactor to remove the ProfileSyncService usage. 74 // TODO(zea): Refactor to remove the ProfileSyncService usage.
74 class ProfileSyncServicePreferenceTest 75 class ProfileSyncServicePreferenceTest
75 : public AbstractProfileSyncServiceTest, 76 : public BaseProfileSyncServiceTest,
76 public syncer::DataTypeDebugInfoListener { 77 public syncer::DataTypeDebugInfoListener,
78 public ::testing::TestWithParam<syncer::ModelType> {
77 public: 79 public:
80
78 int64 SetSyncedValue(const std::string& name, const Value& value) { 81 int64 SetSyncedValue(const std::string& name, const Value& value) {
79 syncer::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); 82 syncer::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare());
80 syncer::ReadNode root(&trans); 83 syncer::ReadNode root(&trans);
81 if (root.InitByTagLookup(syncer::ModelTypeToRootTag( 84 if (root.InitByTagLookup(syncer::ModelTypeToRootTag(
82 syncer::PREFERENCES)) != syncer::BaseNode::INIT_OK) { 85 syncer::PREFERENCES)) != syncer::BaseNode::INIT_OK) {
83 return syncer::kInvalidId; 86 return syncer::kInvalidId;
84 } 87 }
85 88
86 syncer::WriteNode tag_node(&trans); 89 syncer::WriteNode tag_node(&trans);
87 syncer::WriteNode node(&trans); 90 syncer::WriteNode node(&trans);
(...skipping 15 matching lines...) Expand all
103 virtual void OnDataTypeAssociationComplete( 106 virtual void OnDataTypeAssociationComplete(
104 const syncer::DataTypeAssociationStats& association_stats) OVERRIDE { 107 const syncer::DataTypeAssociationStats& association_stats) OVERRIDE {
105 association_stats_ = association_stats; 108 association_stats_ = association_stats;
106 } 109 }
107 virtual void OnConfigureComplete() OVERRIDE { 110 virtual void OnConfigureComplete() OVERRIDE {
108 // Do nothing. 111 // Do nothing.
109 } 112 }
110 113
111 protected: 114 protected:
112 ProfileSyncServicePreferenceTest() 115 ProfileSyncServicePreferenceTest()
113 : debug_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 116 : BaseProfileSyncServiceTest(),
117 debug_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
114 example_url0_("http://example.com/0"), 118 example_url0_("http://example.com/0"),
115 example_url1_("http://example.com/1"), 119 example_url1_("http://example.com/1"),
116 example_url2_("http://example.com/2"), 120 example_url2_("http://example.com/2"),
117 not_synced_preference_name_("nonsense_pref_name"), 121 not_synced_preference_name_("nonsense_pref_name"),
118 not_synced_preference_default_value_("default"), 122 not_synced_preference_default_value_("default"),
119 non_default_charset_value_("foo") {} 123 non_default_charset_value_("foo") {}
120 124
121 virtual void SetUp() { 125 virtual void SetUp() {
122 AbstractProfileSyncServiceTest::SetUp(); 126 type_ = GetParam();
127 BaseProfileSyncServiceTest::SetUp();
123 profile_.reset(new TestingProfile()); 128 profile_.reset(new TestingProfile());
124 profile_->CreateRequestContext(); 129 profile_->CreateRequestContext();
125 prefs_ = profile_->GetTestingPrefService(); 130 prefs_ = profile_->GetTestingPrefService();
126 131
127 prefs_->registry()->RegisterStringPref( 132 prefs_->registry()->RegisterStringPref(
128 not_synced_preference_name_.c_str(), 133 not_synced_preference_name_.c_str(),
129 not_synced_preference_default_value_, 134 not_synced_preference_default_value_,
130 PrefRegistrySyncable::UNSYNCABLE_PREF); 135 PrefRegistrySyncable::UNSYNCABLE_PREF);
131 } 136 }
132 137
133 virtual void TearDown() { 138 virtual void TearDown() {
134 profile_.reset(); 139 profile_.reset();
135 AbstractProfileSyncServiceTest::TearDown(); 140 BaseProfileSyncServiceTest::TearDown();
136 } 141 }
137 142
138 int GetSyncPreferenceCount() { 143 int GetSyncPreferenceCount() {
139 syncer::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); 144 syncer::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare());
140 syncer::ReadNode node(&trans); 145 syncer::ReadNode node(&trans);
141 if (node.InitByTagLookup(syncer::ModelTypeToRootTag(syncer::PREFERENCES)) != 146 if (node.InitByTagLookup(syncer::ModelTypeToRootTag(syncer::PREFERENCES)) !=
142 syncer::BaseNode::INIT_OK) 147 syncer::BaseNode::INIT_OK)
143 return 0; 148 return 0;
144 return node.GetTotalNodeCount() - 1; 149 return node.GetTotalNodeCount() - 1;
145 } 150 }
146 151
147 bool StartSyncService(const base::Closure& callback, 152 bool StartSyncService(const base::Closure& callback,
148 bool will_fail_association) { 153 bool will_fail_association) {
149 if (sync_service_) 154 if (sync_service_)
150 return false; 155 return false;
151 156
152 SigninManager* signin = SigninManagerFactory::GetForProfile(profile_.get()); 157 SigninManager* signin = SigninManagerFactory::GetForProfile(profile_.get());
153 signin->SetAuthenticatedUsername("test"); 158 signin->SetAuthenticatedUsername("test");
154 sync_service_ = static_cast<TestProfileSyncService*>( 159 sync_service_ = static_cast<TestProfileSyncService*>(
155 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( 160 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
156 profile_.get(), &TestProfileSyncService::BuildAutoStartAsyncInit)); 161 profile_.get(), &TestProfileSyncService::BuildAutoStartAsyncInit));
157 sync_service_->set_backend_init_callback(callback); 162 sync_service_->set_backend_init_callback(callback);
158 pref_sync_service_ = reinterpret_cast<PrefModelAssociator*>( 163 pref_sync_service_ = reinterpret_cast<PrefModelAssociator*>(
159 prefs_->GetSyncableService()); 164 prefs_->GetSyncableService(type_));
160 if (!pref_sync_service_) 165 if (!pref_sync_service_)
161 return false; 166 return false;
162 ProfileSyncComponentsFactoryMock* components = 167 ProfileSyncComponentsFactoryMock* components =
163 sync_service_->components_factory_mock(); 168 sync_service_->components_factory_mock();
164 EXPECT_CALL(*components, GetSyncableServiceForType(syncer::PREFERENCES)). 169 EXPECT_CALL(*components, GetSyncableServiceForType(syncer::PREFERENCES)).
165 WillOnce(Return(pref_sync_service_->AsWeakPtr())); 170 WillOnce(Return(pref_sync_service_->AsWeakPtr()));
166 171
167 EXPECT_CALL(*components, CreateDataTypeManager(_, _, _, _, _)). 172 EXPECT_CALL(*components, CreateDataTypeManager(_, _, _, _, _)).
168 WillOnce(ReturnNewDataTypeManagerWithDebugListener( 173 WillOnce(ReturnNewDataTypeManagerWithDebugListener(
169 syncer::MakeWeakHandle(debug_ptr_factory_.GetWeakPtr()))); 174 syncer::MakeWeakHandle(debug_ptr_factory_.GetWeakPtr())));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 const sync_pb::PreferenceSpecifics& specifics( 221 const sync_pb::PreferenceSpecifics& specifics(
217 node.GetEntitySpecifics().preference()); 222 node.GetEntitySpecifics().preference());
218 223
219 return base::JSONReader::Read(specifics.value()); 224 return base::JSONReader::Read(specifics.value());
220 } 225 }
221 226
222 int64 WriteSyncedValue(const std::string& name, 227 int64 WriteSyncedValue(const std::string& name,
223 const Value& value, 228 const Value& value,
224 syncer::WriteNode* node) { 229 syncer::WriteNode* node) {
225 syncer::SyncData sync_data; 230 syncer::SyncData sync_data;
226 if (!PrefModelAssociator::CreatePrefSyncData(name, 231 if (!pref_sync_service_->CreatePrefSyncData(name,
227 value, 232 value,
228 &sync_data)) { 233 &sync_data)) {
229 return syncer::kInvalidId; 234 return syncer::kInvalidId;
230 } 235 }
231 node->SetEntitySpecifics(sync_data.GetSpecifics()); 236 node->SetEntitySpecifics(sync_data.GetSpecifics());
232 return node->GetId(); 237 return node->GetId();
233 } 238 }
234 239
235 bool IsSynced(const std::string& pref_name) { 240 bool IsSynced(const std::string& pref_name) {
236 return pref_sync_service_->registered_preferences().count(pref_name) > 0; 241 return pref_sync_service_->registered_preferences().count(pref_name) > 0;
237 } 242 }
238 243
239 std::string ValueString(const Value& value) { 244 std::string ValueString(const Value& value) {
240 std::string serialized; 245 std::string serialized;
241 JSONStringValueSerializer json(&serialized); 246 JSONStringValueSerializer json(&serialized);
242 json.Serialize(value); 247 json.Serialize(value);
243 return serialized; 248 return serialized;
244 } 249 }
245 250
251 syncer::ModelType type_;
246 scoped_ptr<TestingProfile> profile_; 252 scoped_ptr<TestingProfile> profile_;
247 TestingPrefServiceSyncable* prefs_; 253 TestingPrefServiceSyncable* prefs_;
248 254
249 UIDataTypeController* dtc_; 255 UIDataTypeController* dtc_;
250 PrefModelAssociator* pref_sync_service_; 256 PrefModelAssociator* pref_sync_service_;
251 GenericChangeProcessor* change_processor_; 257 GenericChangeProcessor* change_processor_;
252 syncer::DataTypeAssociationStats association_stats_; 258 syncer::DataTypeAssociationStats association_stats_;
253 base::WeakPtrFactory<DataTypeDebugInfoListener> debug_ptr_factory_; 259 base::WeakPtrFactory<DataTypeDebugInfoListener> debug_ptr_factory_;
254 260
255 std::string example_url0_; 261 std::string example_url0_;
256 std::string example_url1_; 262 std::string example_url1_;
257 std::string example_url2_; 263 std::string example_url2_;
258 std::string not_synced_preference_name_; 264 std::string not_synced_preference_name_;
259 std::string not_synced_preference_default_value_; 265 std::string not_synced_preference_default_value_;
260 std::string non_default_charset_value_; 266 std::string non_default_charset_value_;
261 }; 267 };
262 268
269 INSTANTIATE_TEST_CASE_P(MeaningfulTestParameters,
270 ProfileSyncServicePreferenceTest,
271 Values(syncer::PREFERENCES,
272 syncer::PRIORITY_PREFERENCES));
273
263 class AddPreferenceEntriesHelper { 274 class AddPreferenceEntriesHelper {
264 public: 275 public:
265 AddPreferenceEntriesHelper(ProfileSyncServicePreferenceTest* test, 276 AddPreferenceEntriesHelper(ProfileSyncServicePreferenceTest* test,
266 const PreferenceValues& entries) 277 const PreferenceValues& entries)
267 : ALLOW_THIS_IN_INITIALIZER_LIST(callback_( 278 : ALLOW_THIS_IN_INITIALIZER_LIST(callback_(
268 base::Bind( 279 base::Bind(
269 &AddPreferenceEntriesHelper::AddPreferenceEntriesCallback, 280 &AddPreferenceEntriesHelper::AddPreferenceEntriesCallback,
270 base::Unretained(this), test, entries))), 281 base::Unretained(this), test, entries))),
271 success_(false) { 282 success_(false) {
272 } 283 }
(...skipping 21 matching lines...) Expand all
294 305
295 TEST_F(ProfileSyncServicePreferenceTest, CreatePrefSyncData) { 306 TEST_F(ProfileSyncServicePreferenceTest, CreatePrefSyncData) {
296 prefs_->SetString(prefs::kHomePage, example_url0_); 307 prefs_->SetString(prefs::kHomePage, example_url0_);
297 CreateRootHelper create_root(this, syncer::PREFERENCES); 308 CreateRootHelper create_root(this, syncer::PREFERENCES);
298 ASSERT_TRUE(StartSyncService(create_root.callback(), false)); 309 ASSERT_TRUE(StartSyncService(create_root.callback(), false));
299 ASSERT_TRUE(create_root.success()); 310 ASSERT_TRUE(create_root.success());
300 311
301 const PrefService::Preference* pref = 312 const PrefService::Preference* pref =
302 prefs_->FindPreference(prefs::kHomePage); 313 prefs_->FindPreference(prefs::kHomePage);
303 syncer::SyncData sync_data; 314 syncer::SyncData sync_data;
304 EXPECT_TRUE(PrefModelAssociator::CreatePrefSyncData(pref->name(), 315 EXPECT_TRUE(pref_sync_service_->CreatePrefSyncData(pref->name(),
305 *pref->GetValue(), &sync_data)); 316 *pref->GetValue(), &sync_data));
306 EXPECT_EQ(std::string(prefs::kHomePage), sync_data.GetTag()); 317 EXPECT_EQ(std::string(prefs::kHomePage), sync_data.GetTag());
307 const sync_pb::PreferenceSpecifics& specifics(sync_data.GetSpecifics(). 318 const sync_pb::PreferenceSpecifics& specifics(sync_data.GetSpecifics().
308 preference()); 319 preference());
309 EXPECT_EQ(std::string(prefs::kHomePage), specifics.name()); 320 EXPECT_EQ(std::string(prefs::kHomePage), specifics.name());
310 321
311 scoped_ptr<Value> value(base::JSONReader::Read(specifics.value())); 322 scoped_ptr<Value> value(base::JSONReader::Read(specifics.value()));
312 EXPECT_TRUE(pref->GetValue()->Equals(value.get())); 323 EXPECT_TRUE(pref->GetValue()->Equals(value.get()));
313 } 324 }
314 325
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 EXPECT_FALSE(pref->IsDefaultValue()); 686 EXPECT_FALSE(pref->IsDefaultValue());
676 // There should be no synced value. 687 // There should be no synced value.
677 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); 688 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL);
678 // Switch kHomePage back to unmanaged. 689 // Switch kHomePage back to unmanaged.
679 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); 690 profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage);
680 // The original value should be picked up. 691 // The original value should be picked up.
681 EXPECT_TRUE(pref->IsDefaultValue()); 692 EXPECT_TRUE(pref->IsDefaultValue());
682 // There should still be no synced value. 693 // There should still be no synced value.
683 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); 694 EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL);
684 } 695 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698