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

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

Issue 59793008: sync: don't allow NULL profile in ProfileSyncService and friends (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test Created 7 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync/sync_prefs.h ('k') | chrome/browser/sync/sync_prefs_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/sync/sync_prefs.h" 5 #include "chrome/browser/sync/sync_prefs.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/prefs/pref_member.h" 9 #include "base/prefs/pref_member.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "build/build_config.h" 13 #include "build/build_config.h"
14 #include "chrome/browser/chrome_notification_types.h" 14 #include "chrome/browser/chrome_notification_types.h"
15 #include "chrome/browser/profiles/profile_io_data.h" 15 #include "chrome/browser/profiles/profile_io_data.h"
16 #include "chrome/browser/sync/profile_sync_service.h" 16 #include "chrome/browser/sync/profile_sync_service.h"
17 #include "chrome/common/chrome_switches.h" 17 #include "chrome/common/chrome_switches.h"
18 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
19 #include "components/user_prefs/pref_registry_syncable.h" 19 #include "components/user_prefs/pref_registry_syncable.h"
20 #include "content/public/browser/browser_thread.h" 20 #include "content/public/browser/browser_thread.h"
21 #include "content/public/browser/notification_details.h" 21 #include "content/public/browser/notification_details.h"
22 #include "content/public/browser/notification_source.h" 22 #include "content/public/browser/notification_source.h"
23 23
24 namespace browser_sync { 24 namespace browser_sync {
25 25
26 SyncPrefObserver::~SyncPrefObserver() {} 26 SyncPrefObserver::~SyncPrefObserver() {}
27 27
28 SyncPrefs::SyncPrefs(PrefService* pref_service) 28 SyncPrefs::SyncPrefs(PrefService* pref_service)
29 : pref_service_(pref_service) { 29 : pref_service_(pref_service) {
30 DCHECK(pref_service);
30 RegisterPrefGroups(); 31 RegisterPrefGroups();
31 // TODO(tim): Create a Mock instead of maintaining the if(!pref_service_) case 32 // Watch the preference that indicates sync is managed so we can take
32 // throughout this file. This is a problem now due to lack of injection at 33 // appropriate action.
33 // ProfileSyncService. Bug 130176. 34 pref_sync_managed_.Init(prefs::kSyncManaged, pref_service_,
34 if (pref_service_) { 35 base::Bind(&SyncPrefs::OnSyncManagedPrefChanged,
35 // Watch the preference that indicates sync is managed so we can take 36 base::Unretained(this)));
36 // appropriate action.
37 pref_sync_managed_.Init(prefs::kSyncManaged, pref_service_,
38 base::Bind(&SyncPrefs::OnSyncManagedPrefChanged,
39 base::Unretained(this)));
40 }
41 } 37 }
42 38
43 SyncPrefs::~SyncPrefs() { 39 SyncPrefs::~SyncPrefs() {
44 DCHECK(CalledOnValidThread()); 40 DCHECK(CalledOnValidThread());
45 } 41 }
46 42
47 // static 43 // static
48 void SyncPrefs::RegisterProfilePrefs( 44 void SyncPrefs::RegisterProfilePrefs(
49 user_prefs::PrefRegistrySyncable* registry) { 45 user_prefs::PrefRegistrySyncable* registry) {
50 registry->RegisterBooleanPref( 46 registry->RegisterBooleanPref(
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 sync_pref_observers_.AddObserver(sync_pref_observer); 139 sync_pref_observers_.AddObserver(sync_pref_observer);
144 } 140 }
145 141
146 void SyncPrefs::RemoveSyncPrefObserver(SyncPrefObserver* sync_pref_observer) { 142 void SyncPrefs::RemoveSyncPrefObserver(SyncPrefObserver* sync_pref_observer) {
147 DCHECK(CalledOnValidThread()); 143 DCHECK(CalledOnValidThread());
148 sync_pref_observers_.RemoveObserver(sync_pref_observer); 144 sync_pref_observers_.RemoveObserver(sync_pref_observer);
149 } 145 }
150 146
151 void SyncPrefs::ClearPreferences() { 147 void SyncPrefs::ClearPreferences() {
152 DCHECK(CalledOnValidThread()); 148 DCHECK(CalledOnValidThread());
153 CHECK(pref_service_);
154 pref_service_->ClearPref(prefs::kSyncLastSyncedTime); 149 pref_service_->ClearPref(prefs::kSyncLastSyncedTime);
155 pref_service_->ClearPref(prefs::kSyncHasSetupCompleted); 150 pref_service_->ClearPref(prefs::kSyncHasSetupCompleted);
156 pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); 151 pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken);
157 pref_service_->ClearPref(prefs::kSyncKeystoreEncryptionBootstrapToken); 152 pref_service_->ClearPref(prefs::kSyncKeystoreEncryptionBootstrapToken);
158 153
159 // TODO(nick): The current behavior does not clear 154 // TODO(nick): The current behavior does not clear
160 // e.g. prefs::kSyncBookmarks. Is that really what we want? 155 // e.g. prefs::kSyncBookmarks. Is that really what we want?
161 } 156 }
162 157
163 bool SyncPrefs::HasSyncSetupCompleted() const { 158 bool SyncPrefs::HasSyncSetupCompleted() const {
164 DCHECK(CalledOnValidThread()); 159 DCHECK(CalledOnValidThread());
165 return 160 return pref_service_->GetBoolean(prefs::kSyncHasSetupCompleted);
166 pref_service_ &&
167 pref_service_->GetBoolean(prefs::kSyncHasSetupCompleted);
168 } 161 }
169 162
170 void SyncPrefs::SetSyncSetupCompleted() { 163 void SyncPrefs::SetSyncSetupCompleted() {
171 DCHECK(CalledOnValidThread()); 164 DCHECK(CalledOnValidThread());
172 CHECK(pref_service_);
173 pref_service_->SetBoolean(prefs::kSyncHasSetupCompleted, true); 165 pref_service_->SetBoolean(prefs::kSyncHasSetupCompleted, true);
174 SetStartSuppressed(false); 166 SetStartSuppressed(false);
175 } 167 }
176 168
177 bool SyncPrefs::SyncHasAuthError() const { 169 bool SyncPrefs::SyncHasAuthError() const {
178 DCHECK(CalledOnValidThread()); 170 DCHECK(CalledOnValidThread());
179 return 171 return pref_service_->GetBoolean(prefs::kSyncHasAuthError);
180 pref_service_ &&
181 pref_service_->GetBoolean(prefs::kSyncHasAuthError);
182 } 172 }
183 173
184 void SyncPrefs::SetSyncAuthError(bool error) { 174 void SyncPrefs::SetSyncAuthError(bool error) {
185 DCHECK(CalledOnValidThread()); 175 DCHECK(CalledOnValidThread());
186 CHECK(pref_service_);
187 pref_service_->SetBoolean(prefs::kSyncHasAuthError, error); 176 pref_service_->SetBoolean(prefs::kSyncHasAuthError, error);
188 } 177 }
189 178
190 bool SyncPrefs::IsStartSuppressed() const { 179 bool SyncPrefs::IsStartSuppressed() const {
191 DCHECK(CalledOnValidThread()); 180 DCHECK(CalledOnValidThread());
192 return 181 return pref_service_->GetBoolean(prefs::kSyncSuppressStart);
193 pref_service_ &&
194 pref_service_->GetBoolean(prefs::kSyncSuppressStart);
195 } 182 }
196 183
197 void SyncPrefs::SetStartSuppressed(bool is_suppressed) { 184 void SyncPrefs::SetStartSuppressed(bool is_suppressed) {
198 DCHECK(CalledOnValidThread()); 185 DCHECK(CalledOnValidThread());
199 CHECK(pref_service_);
200 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed); 186 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed);
201 } 187 }
202 188
203 std::string SyncPrefs::GetGoogleServicesUsername() const { 189 std::string SyncPrefs::GetGoogleServicesUsername() const {
204 DCHECK(CalledOnValidThread()); 190 DCHECK(CalledOnValidThread());
205 return pref_service_ 191 return pref_service_->GetString(prefs::kGoogleServicesUsername);
206 ? pref_service_->GetString(prefs::kGoogleServicesUsername)
207 : std::string();
208 } 192 }
209 193
210 base::Time SyncPrefs::GetLastSyncedTime() const { 194 base::Time SyncPrefs::GetLastSyncedTime() const {
211 DCHECK(CalledOnValidThread()); 195 DCHECK(CalledOnValidThread());
212 return 196 return
213 base::Time::FromInternalValue( 197 base::Time::FromInternalValue(
214 pref_service_ ? 198 pref_service_->GetInt64(prefs::kSyncLastSyncedTime));
215 pref_service_->GetInt64(prefs::kSyncLastSyncedTime) : 0);
216 } 199 }
217 200
218 void SyncPrefs::SetLastSyncedTime(base::Time time) { 201 void SyncPrefs::SetLastSyncedTime(base::Time time) {
219 DCHECK(CalledOnValidThread()); 202 DCHECK(CalledOnValidThread());
220 CHECK(pref_service_);
221 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue()); 203 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue());
222 } 204 }
223 205
224 bool SyncPrefs::HasKeepEverythingSynced() const { 206 bool SyncPrefs::HasKeepEverythingSynced() const {
225 DCHECK(CalledOnValidThread()); 207 DCHECK(CalledOnValidThread());
226 return 208 return pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced);
227 pref_service_ &&
228 pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced);
229 } 209 }
230 210
231 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { 211 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) {
232 DCHECK(CalledOnValidThread()); 212 DCHECK(CalledOnValidThread());
233 CHECK(pref_service_);
234 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, 213 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced,
235 keep_everything_synced); 214 keep_everything_synced);
236 } 215 }
237 216
238 syncer::ModelTypeSet SyncPrefs::GetPreferredDataTypes( 217 syncer::ModelTypeSet SyncPrefs::GetPreferredDataTypes(
239 syncer::ModelTypeSet registered_types) const { 218 syncer::ModelTypeSet registered_types) const {
240 DCHECK(CalledOnValidThread()); 219 DCHECK(CalledOnValidThread());
241 if (!pref_service_) {
242 return syncer::ModelTypeSet();
243 }
244 220
245 // First remove any datatypes that are inconsistent with the current policies 221 // First remove any datatypes that are inconsistent with the current policies
246 // on the client (so that "keep everything synced" doesn't include them). 222 // on the client (so that "keep everything synced" doesn't include them).
247 if (pref_service_->HasPrefPath(prefs::kSavingBrowserHistoryDisabled) && 223 if (pref_service_->HasPrefPath(prefs::kSavingBrowserHistoryDisabled) &&
248 pref_service_->GetBoolean(prefs::kSavingBrowserHistoryDisabled)) { 224 pref_service_->GetBoolean(prefs::kSavingBrowserHistoryDisabled)) {
249 registered_types.Remove(syncer::TYPED_URLS); 225 registered_types.Remove(syncer::TYPED_URLS);
250 } 226 }
251 227
252 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { 228 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) {
253 return registered_types; 229 return registered_types;
254 } 230 }
255 231
256 syncer::ModelTypeSet preferred_types; 232 syncer::ModelTypeSet preferred_types;
257 for (syncer::ModelTypeSet::Iterator it = registered_types.First(); 233 for (syncer::ModelTypeSet::Iterator it = registered_types.First();
258 it.Good(); it.Inc()) { 234 it.Good(); it.Inc()) {
259 if (GetDataTypePreferred(it.Get())) { 235 if (GetDataTypePreferred(it.Get())) {
260 preferred_types.Put(it.Get()); 236 preferred_types.Put(it.Get());
261 } 237 }
262 } 238 }
263 return ResolvePrefGroups(registered_types, preferred_types); 239 return ResolvePrefGroups(registered_types, preferred_types);
264 } 240 }
265 241
266 void SyncPrefs::SetPreferredDataTypes( 242 void SyncPrefs::SetPreferredDataTypes(
267 syncer::ModelTypeSet registered_types, 243 syncer::ModelTypeSet registered_types,
268 syncer::ModelTypeSet preferred_types) { 244 syncer::ModelTypeSet preferred_types) {
269 DCHECK(CalledOnValidThread()); 245 DCHECK(CalledOnValidThread());
270 CHECK(pref_service_);
271 DCHECK(registered_types.HasAll(preferred_types)); 246 DCHECK(registered_types.HasAll(preferred_types));
272 preferred_types = ResolvePrefGroups(registered_types, preferred_types); 247 preferred_types = ResolvePrefGroups(registered_types, preferred_types);
273 for (syncer::ModelTypeSet::Iterator i = registered_types.First(); 248 for (syncer::ModelTypeSet::Iterator i = registered_types.First();
274 i.Good(); i.Inc()) { 249 i.Good(); i.Inc()) {
275 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get())); 250 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get()));
276 } 251 }
277 } 252 }
278 253
279 bool SyncPrefs::IsManaged() const { 254 bool SyncPrefs::IsManaged() const {
280 DCHECK(CalledOnValidThread()); 255 DCHECK(CalledOnValidThread());
281 return pref_service_ && pref_service_->GetBoolean(prefs::kSyncManaged); 256 return pref_service_->GetBoolean(prefs::kSyncManaged);
282 } 257 }
283 258
284 std::string SyncPrefs::GetEncryptionBootstrapToken() const { 259 std::string SyncPrefs::GetEncryptionBootstrapToken() const {
285 DCHECK(CalledOnValidThread()); 260 DCHECK(CalledOnValidThread());
286 return pref_service_ 261 return pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken);
287 ? pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken)
288 : std::string();
289 } 262 }
290 263
291 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) { 264 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) {
292 DCHECK(CalledOnValidThread()); 265 DCHECK(CalledOnValidThread());
293 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); 266 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token);
294 } 267 }
295 268
296 std::string SyncPrefs::GetKeystoreEncryptionBootstrapToken() const { 269 std::string SyncPrefs::GetKeystoreEncryptionBootstrapToken() const {
297 DCHECK(CalledOnValidThread()); 270 DCHECK(CalledOnValidThread());
298 return pref_service_ ? pref_service_->GetString( 271 return pref_service_->GetString(
299 prefs::kSyncKeystoreEncryptionBootstrapToken) 272 prefs::kSyncKeystoreEncryptionBootstrapToken);
300 : std::string();
301 } 273 }
302 274
303 void SyncPrefs::SetKeystoreEncryptionBootstrapToken(const std::string& token) { 275 void SyncPrefs::SetKeystoreEncryptionBootstrapToken(const std::string& token) {
304 DCHECK(CalledOnValidThread()); 276 DCHECK(CalledOnValidThread());
305 pref_service_->SetString(prefs::kSyncKeystoreEncryptionBootstrapToken, token); 277 pref_service_->SetString(prefs::kSyncKeystoreEncryptionBootstrapToken, token);
306 } 278 }
307 279
308 std::string SyncPrefs::GetSyncSessionsGUID() const { 280 std::string SyncPrefs::GetSyncSessionsGUID() const {
309 DCHECK(CalledOnValidThread()); 281 DCHECK(CalledOnValidThread());
310 return pref_service_ ? pref_service_->GetString(prefs::kSyncSessionsGUID) 282 return pref_service_->GetString(prefs::kSyncSessionsGUID);
311 : std::string();
312 } 283 }
313 284
314 void SyncPrefs::SetSyncSessionsGUID(const std::string& guid) { 285 void SyncPrefs::SetSyncSessionsGUID(const std::string& guid) {
315 DCHECK(CalledOnValidThread()); 286 DCHECK(CalledOnValidThread());
316 pref_service_->SetString(prefs::kSyncSessionsGUID, guid); 287 pref_service_->SetString(prefs::kSyncSessionsGUID, guid);
317 } 288 }
318 289
319 // static 290 // static
320 const char* SyncPrefs::GetPrefNameForDataType(syncer::ModelType data_type) { 291 const char* SyncPrefs::GetPrefNameForDataType(syncer::ModelType data_type) {
321 switch (data_type) { 292 switch (data_type) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 default: 341 default:
371 break; 342 break;
372 } 343 }
373 NOTREACHED(); 344 NOTREACHED();
374 return NULL; 345 return NULL;
375 } 346 }
376 347
377 #if defined(OS_CHROMEOS) 348 #if defined(OS_CHROMEOS)
378 std::string SyncPrefs::GetSpareBootstrapToken() const { 349 std::string SyncPrefs::GetSpareBootstrapToken() const {
379 DCHECK(CalledOnValidThread()); 350 DCHECK(CalledOnValidThread());
380 return pref_service_ ? 351 return pref_service_->GetString(prefs::kSyncSpareBootstrapToken);
381 pref_service_->GetString(prefs::kSyncSpareBootstrapToken) : "";
382 } 352 }
383 353
384 void SyncPrefs::SetSpareBootstrapToken(const std::string& token) { 354 void SyncPrefs::SetSpareBootstrapToken(const std::string& token) {
385 DCHECK(CalledOnValidThread()); 355 DCHECK(CalledOnValidThread());
386 pref_service_->SetString(prefs::kSyncSpareBootstrapToken, token); 356 pref_service_->SetString(prefs::kSyncSpareBootstrapToken, token);
387 } 357 }
388 #endif 358 #endif
389 359
390 void SyncPrefs::AcknowledgeSyncedTypes(syncer::ModelTypeSet types) { 360 void SyncPrefs::AcknowledgeSyncedTypes(syncer::ModelTypeSet types) {
391 DCHECK(CalledOnValidThread()); 361 DCHECK(CalledOnValidThread());
392 CHECK(pref_service_);
393 // Add the types to the current set of acknowledged 362 // Add the types to the current set of acknowledged
394 // types, and then store the resulting set in prefs. 363 // types, and then store the resulting set in prefs.
395 const syncer::ModelTypeSet acknowledged_types = 364 const syncer::ModelTypeSet acknowledged_types =
396 Union(types, 365 Union(types,
397 syncer::ModelTypeSetFromValue( 366 syncer::ModelTypeSetFromValue(
398 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes))); 367 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)));
399 368
400 scoped_ptr<ListValue> value( 369 scoped_ptr<ListValue> value(
401 syncer::ModelTypeSetToValue(acknowledged_types)); 370 syncer::ModelTypeSetToValue(acknowledged_types));
402 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); 371 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value);
403 } 372 }
404 373
405 void SyncPrefs::OnSyncManagedPrefChanged() { 374 void SyncPrefs::OnSyncManagedPrefChanged() {
406 DCHECK(CalledOnValidThread()); 375 DCHECK(CalledOnValidThread());
407 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, 376 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_,
408 OnSyncManagedPrefChange(*pref_sync_managed_)); 377 OnSyncManagedPrefChange(*pref_sync_managed_));
409 } 378 }
410 379
411 void SyncPrefs::SetManagedForTest(bool is_managed) { 380 void SyncPrefs::SetManagedForTest(bool is_managed) {
412 DCHECK(CalledOnValidThread()); 381 DCHECK(CalledOnValidThread());
413 CHECK(pref_service_);
414 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); 382 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed);
415 } 383 }
416 384
417 syncer::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { 385 syncer::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const {
418 DCHECK(CalledOnValidThread()); 386 DCHECK(CalledOnValidThread());
419 if (!pref_service_) {
420 return syncer::ModelTypeSet();
421 }
422 return syncer::ModelTypeSetFromValue( 387 return syncer::ModelTypeSetFromValue(
423 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); 388 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes));
424 } 389 }
425 390
426 void SyncPrefs::RegisterPrefGroups() { 391 void SyncPrefs::RegisterPrefGroups() {
427 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); 392 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS);
428 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); 393 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS);
429 394
430 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); 395 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE);
431 396
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 return; 429 return;
465 } 430 }
466 registry->RegisterBooleanPref( 431 registry->RegisterBooleanPref(
467 pref_name, 432 pref_name,
468 is_preferred, 433 is_preferred,
469 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 434 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
470 } 435 }
471 436
472 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { 437 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const {
473 DCHECK(CalledOnValidThread()); 438 DCHECK(CalledOnValidThread());
474 if (!pref_service_) {
475 return false;
476 }
477 const char* pref_name = GetPrefNameForDataType(type); 439 const char* pref_name = GetPrefNameForDataType(type);
478 if (!pref_name) { 440 if (!pref_name) {
479 NOTREACHED(); 441 NOTREACHED();
480 return false; 442 return false;
481 } 443 }
482 if (type == syncer::PROXY_TABS && 444 if (type == syncer::PROXY_TABS &&
483 pref_service_->GetUserPrefValue(pref_name) == NULL && 445 pref_service_->GetUserPrefValue(pref_name) == NULL &&
484 pref_service_->IsUserModifiablePreference(pref_name)) { 446 pref_service_->IsUserModifiablePreference(pref_name)) {
485 // If there is no tab sync preference yet (i.e. newly enabled type), 447 // If there is no tab sync preference yet (i.e. newly enabled type),
486 // default to the session sync preference value. 448 // default to the session sync preference value.
487 pref_name = GetPrefNameForDataType(syncer::SESSIONS); 449 pref_name = GetPrefNameForDataType(syncer::SESSIONS);
488 } 450 }
489 451
490 return pref_service_->GetBoolean(pref_name); 452 return pref_service_->GetBoolean(pref_name);
491 } 453 }
492 454
493 void SyncPrefs::SetDataTypePreferred( 455 void SyncPrefs::SetDataTypePreferred(
494 syncer::ModelType type, bool is_preferred) { 456 syncer::ModelType type, bool is_preferred) {
495 DCHECK(CalledOnValidThread()); 457 DCHECK(CalledOnValidThread());
496 CHECK(pref_service_);
497 const char* pref_name = GetPrefNameForDataType(type); 458 const char* pref_name = GetPrefNameForDataType(type);
498 if (!pref_name) { 459 if (!pref_name) {
499 NOTREACHED(); 460 NOTREACHED();
500 return; 461 return;
501 } 462 }
502 pref_service_->SetBoolean(pref_name, is_preferred); 463 pref_service_->SetBoolean(pref_name, is_preferred);
503 } 464 }
504 465
505 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( 466 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups(
506 syncer::ModelTypeSet registered_types, 467 syncer::ModelTypeSet registered_types,
507 syncer::ModelTypeSet types) const { 468 syncer::ModelTypeSet types) const {
508 DCHECK(registered_types.HasAll(types)); 469 DCHECK(registered_types.HasAll(types));
509 syncer::ModelTypeSet types_with_groups = types; 470 syncer::ModelTypeSet types_with_groups = types;
510 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); 471 for (PrefGroupsMap::const_iterator i = pref_groups_.begin();
511 i != pref_groups_.end(); ++i) { 472 i != pref_groups_.end(); ++i) {
512 if (types.Has(i->first)) 473 if (types.Has(i->first))
513 types_with_groups.PutAll(i->second); 474 types_with_groups.PutAll(i->second);
514 } 475 }
515 types_with_groups.RetainAll(registered_types); 476 types_with_groups.RetainAll(registered_types);
516 return types_with_groups; 477 return types_with_groups;
517 } 478 }
518 479
519 } // namespace browser_sync 480 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/sync_prefs.h ('k') | chrome/browser/sync/sync_prefs_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698