OLD | NEW |
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 "components/sync/driver/sync_prefs.h" | 5 #include "components/sync/driver/sync_prefs.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
12 #include "components/pref_registry/pref_registry_syncable.h" | 12 #include "components/pref_registry/pref_registry_syncable.h" |
13 #include "components/prefs/pref_member.h" | 13 #include "components/prefs/pref_member.h" |
14 #include "components/prefs/pref_service.h" | 14 #include "components/prefs/pref_service.h" |
15 #include "components/sync/driver/pref_names.h" | 15 #include "components/sync/driver/pref_names.h" |
16 | 16 |
17 namespace sync_driver { | 17 namespace syncer { |
18 | 18 |
19 SyncPrefObserver::~SyncPrefObserver() {} | 19 SyncPrefObserver::~SyncPrefObserver() {} |
20 | 20 |
21 SyncPrefs::SyncPrefs(PrefService* pref_service) : pref_service_(pref_service) { | 21 SyncPrefs::SyncPrefs(PrefService* pref_service) : pref_service_(pref_service) { |
22 DCHECK(pref_service); | 22 DCHECK(pref_service); |
23 RegisterPrefGroups(); | 23 RegisterPrefGroups(); |
24 // Watch the preference that indicates sync is managed so we can take | 24 // Watch the preference that indicates sync is managed so we can take |
25 // appropriate action. | 25 // appropriate action. |
26 pref_sync_managed_.Init( | 26 pref_sync_managed_.Init( |
27 prefs::kSyncManaged, pref_service_, | 27 prefs::kSyncManaged, pref_service_, |
(...skipping 13 matching lines...) Expand all Loading... |
41 registry->RegisterBooleanPref(prefs::kSyncSuppressStart, false); | 41 registry->RegisterBooleanPref(prefs::kSyncSuppressStart, false); |
42 registry->RegisterInt64Pref(prefs::kSyncLastSyncedTime, 0); | 42 registry->RegisterInt64Pref(prefs::kSyncLastSyncedTime, 0); |
43 registry->RegisterInt64Pref(prefs::kSyncLastPollTime, 0); | 43 registry->RegisterInt64Pref(prefs::kSyncLastPollTime, 0); |
44 registry->RegisterInt64Pref(prefs::kSyncFirstSyncTime, 0); | 44 registry->RegisterInt64Pref(prefs::kSyncFirstSyncTime, 0); |
45 | 45 |
46 // All datatypes are on by default, but this gets set explicitly | 46 // All datatypes are on by default, but this gets set explicitly |
47 // when you configure sync (when turning it on), in | 47 // when you configure sync (when turning it on), in |
48 // ProfileSyncService::OnUserChoseDatatypes. | 48 // ProfileSyncService::OnUserChoseDatatypes. |
49 registry->RegisterBooleanPref(prefs::kSyncKeepEverythingSynced, true); | 49 registry->RegisterBooleanPref(prefs::kSyncKeepEverythingSynced, true); |
50 | 50 |
51 syncer::ModelTypeSet user_types = syncer::UserTypes(); | 51 ModelTypeSet user_types = UserTypes(); |
52 | 52 |
53 // Include proxy types as well, as they can be individually selected, | 53 // Include proxy types as well, as they can be individually selected, |
54 // although they don't have sync representations. | 54 // although they don't have sync representations. |
55 user_types.PutAll(syncer::ProxyTypes()); | 55 user_types.PutAll(ProxyTypes()); |
56 | 56 |
57 // Treat bookmarks and device info specially. | 57 // Treat bookmarks and device info specially. |
58 RegisterDataTypePreferredPref(registry, syncer::BOOKMARKS, true); | 58 RegisterDataTypePreferredPref(registry, BOOKMARKS, true); |
59 RegisterDataTypePreferredPref(registry, syncer::DEVICE_INFO, true); | 59 RegisterDataTypePreferredPref(registry, DEVICE_INFO, true); |
60 user_types.Remove(syncer::BOOKMARKS); | 60 user_types.Remove(BOOKMARKS); |
61 user_types.Remove(syncer::DEVICE_INFO); | 61 user_types.Remove(DEVICE_INFO); |
62 | 62 |
63 // All types are set to off by default, which forces a configuration to | 63 // All types are set to off by default, which forces a configuration to |
64 // explicitly enable them. GetPreferredTypes() will ensure that any new | 64 // explicitly enable them. GetPreferredTypes() will ensure that any new |
65 // implicit types are enabled when their pref group is, or via | 65 // implicit types are enabled when their pref group is, or via |
66 // KeepEverythingSynced. | 66 // KeepEverythingSynced. |
67 for (syncer::ModelTypeSet::Iterator it = user_types.First(); it.Good(); | 67 for (ModelTypeSet::Iterator it = user_types.First(); it.Good(); it.Inc()) { |
68 it.Inc()) { | |
69 RegisterDataTypePreferredPref(registry, it.Get(), false); | 68 RegisterDataTypePreferredPref(registry, it.Get(), false); |
70 } | 69 } |
71 | 70 |
72 registry->RegisterBooleanPref(prefs::kSyncManaged, false); | 71 registry->RegisterBooleanPref(prefs::kSyncManaged, false); |
73 registry->RegisterStringPref(prefs::kSyncEncryptionBootstrapToken, | 72 registry->RegisterStringPref(prefs::kSyncEncryptionBootstrapToken, |
74 std::string()); | 73 std::string()); |
75 registry->RegisterStringPref(prefs::kSyncKeystoreEncryptionBootstrapToken, | 74 registry->RegisterStringPref(prefs::kSyncKeystoreEncryptionBootstrapToken, |
76 std::string()); | 75 std::string()); |
77 #if defined(OS_CHROMEOS) | 76 #if defined(OS_CHROMEOS) |
78 registry->RegisterStringPref(prefs::kSyncSpareBootstrapToken, ""); | 77 registry->RegisterStringPref(prefs::kSyncSpareBootstrapToken, ""); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 DCHECK(CalledOnValidThread()); | 179 DCHECK(CalledOnValidThread()); |
181 return pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); | 180 return pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); |
182 } | 181 } |
183 | 182 |
184 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { | 183 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { |
185 DCHECK(CalledOnValidThread()); | 184 DCHECK(CalledOnValidThread()); |
186 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, | 185 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, |
187 keep_everything_synced); | 186 keep_everything_synced); |
188 } | 187 } |
189 | 188 |
190 syncer::ModelTypeSet SyncPrefs::GetPreferredDataTypes( | 189 ModelTypeSet SyncPrefs::GetPreferredDataTypes( |
191 syncer::ModelTypeSet registered_types) const { | 190 ModelTypeSet registered_types) const { |
192 DCHECK(CalledOnValidThread()); | 191 DCHECK(CalledOnValidThread()); |
193 | 192 |
194 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { | 193 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { |
195 return registered_types; | 194 return registered_types; |
196 } | 195 } |
197 | 196 |
198 syncer::ModelTypeSet preferred_types; | 197 ModelTypeSet preferred_types; |
199 for (syncer::ModelTypeSet::Iterator it = registered_types.First(); it.Good(); | 198 for (ModelTypeSet::Iterator it = registered_types.First(); it.Good(); |
200 it.Inc()) { | 199 it.Inc()) { |
201 if (GetDataTypePreferred(it.Get())) { | 200 if (GetDataTypePreferred(it.Get())) { |
202 preferred_types.Put(it.Get()); | 201 preferred_types.Put(it.Get()); |
203 } | 202 } |
204 } | 203 } |
205 return ResolvePrefGroups(registered_types, preferred_types); | 204 return ResolvePrefGroups(registered_types, preferred_types); |
206 } | 205 } |
207 | 206 |
208 void SyncPrefs::SetPreferredDataTypes(syncer::ModelTypeSet registered_types, | 207 void SyncPrefs::SetPreferredDataTypes(ModelTypeSet registered_types, |
209 syncer::ModelTypeSet preferred_types) { | 208 ModelTypeSet preferred_types) { |
210 DCHECK(CalledOnValidThread()); | 209 DCHECK(CalledOnValidThread()); |
211 preferred_types = ResolvePrefGroups(registered_types, preferred_types); | 210 preferred_types = ResolvePrefGroups(registered_types, preferred_types); |
212 DCHECK(registered_types.HasAll(preferred_types)); | 211 DCHECK(registered_types.HasAll(preferred_types)); |
213 for (syncer::ModelTypeSet::Iterator i = registered_types.First(); i.Good(); | 212 for (ModelTypeSet::Iterator i = registered_types.First(); i.Good(); i.Inc()) { |
214 i.Inc()) { | |
215 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get())); | 213 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get())); |
216 } | 214 } |
217 } | 215 } |
218 | 216 |
219 bool SyncPrefs::IsManaged() const { | 217 bool SyncPrefs::IsManaged() const { |
220 DCHECK(CalledOnValidThread()); | 218 DCHECK(CalledOnValidThread()); |
221 return pref_service_->GetBoolean(prefs::kSyncManaged); | 219 return pref_service_->GetBoolean(prefs::kSyncManaged); |
222 } | 220 } |
223 | 221 |
224 std::string SyncPrefs::GetEncryptionBootstrapToken() const { | 222 std::string SyncPrefs::GetEncryptionBootstrapToken() const { |
(...skipping 20 matching lines...) Expand all Loading... |
245 DCHECK(CalledOnValidThread()); | 243 DCHECK(CalledOnValidThread()); |
246 return pref_service_->GetString(prefs::kSyncSessionsGUID); | 244 return pref_service_->GetString(prefs::kSyncSessionsGUID); |
247 } | 245 } |
248 | 246 |
249 void SyncPrefs::SetSyncSessionsGUID(const std::string& guid) { | 247 void SyncPrefs::SetSyncSessionsGUID(const std::string& guid) { |
250 DCHECK(CalledOnValidThread()); | 248 DCHECK(CalledOnValidThread()); |
251 pref_service_->SetString(prefs::kSyncSessionsGUID, guid); | 249 pref_service_->SetString(prefs::kSyncSessionsGUID, guid); |
252 } | 250 } |
253 | 251 |
254 // static | 252 // static |
255 const char* SyncPrefs::GetPrefNameForDataType(syncer::ModelType data_type) { | 253 const char* SyncPrefs::GetPrefNameForDataType(ModelType data_type) { |
256 switch (data_type) { | 254 switch (data_type) { |
257 case syncer::BOOKMARKS: | 255 case BOOKMARKS: |
258 return prefs::kSyncBookmarks; | 256 return prefs::kSyncBookmarks; |
259 case syncer::PASSWORDS: | 257 case PASSWORDS: |
260 return prefs::kSyncPasswords; | 258 return prefs::kSyncPasswords; |
261 case syncer::PREFERENCES: | 259 case PREFERENCES: |
262 return prefs::kSyncPreferences; | 260 return prefs::kSyncPreferences; |
263 case syncer::AUTOFILL: | 261 case AUTOFILL: |
264 return prefs::kSyncAutofill; | 262 return prefs::kSyncAutofill; |
265 case syncer::AUTOFILL_PROFILE: | 263 case AUTOFILL_PROFILE: |
266 return prefs::kSyncAutofillProfile; | 264 return prefs::kSyncAutofillProfile; |
267 case syncer::AUTOFILL_WALLET_DATA: | 265 case AUTOFILL_WALLET_DATA: |
268 return prefs::kSyncAutofillWallet; | 266 return prefs::kSyncAutofillWallet; |
269 case syncer::AUTOFILL_WALLET_METADATA: | 267 case AUTOFILL_WALLET_METADATA: |
270 return prefs::kSyncAutofillWalletMetadata; | 268 return prefs::kSyncAutofillWalletMetadata; |
271 case syncer::THEMES: | 269 case THEMES: |
272 return prefs::kSyncThemes; | 270 return prefs::kSyncThemes; |
273 case syncer::TYPED_URLS: | 271 case TYPED_URLS: |
274 return prefs::kSyncTypedUrls; | 272 return prefs::kSyncTypedUrls; |
275 case syncer::EXTENSION_SETTINGS: | 273 case EXTENSION_SETTINGS: |
276 return prefs::kSyncExtensionSettings; | 274 return prefs::kSyncExtensionSettings; |
277 case syncer::EXTENSIONS: | 275 case EXTENSIONS: |
278 return prefs::kSyncExtensions; | 276 return prefs::kSyncExtensions; |
279 case syncer::APP_LIST: | 277 case APP_LIST: |
280 return prefs::kSyncAppList; | 278 return prefs::kSyncAppList; |
281 case syncer::APP_SETTINGS: | 279 case APP_SETTINGS: |
282 return prefs::kSyncAppSettings; | 280 return prefs::kSyncAppSettings; |
283 case syncer::APPS: | 281 case APPS: |
284 return prefs::kSyncApps; | 282 return prefs::kSyncApps; |
285 case syncer::SEARCH_ENGINES: | 283 case SEARCH_ENGINES: |
286 return prefs::kSyncSearchEngines; | 284 return prefs::kSyncSearchEngines; |
287 case syncer::SESSIONS: | 285 case SESSIONS: |
288 return prefs::kSyncSessions; | 286 return prefs::kSyncSessions; |
289 case syncer::APP_NOTIFICATIONS: | 287 case APP_NOTIFICATIONS: |
290 return prefs::kSyncAppNotifications; | 288 return prefs::kSyncAppNotifications; |
291 case syncer::HISTORY_DELETE_DIRECTIVES: | 289 case HISTORY_DELETE_DIRECTIVES: |
292 return prefs::kSyncHistoryDeleteDirectives; | 290 return prefs::kSyncHistoryDeleteDirectives; |
293 case syncer::SYNCED_NOTIFICATIONS: | 291 case SYNCED_NOTIFICATIONS: |
294 return prefs::kSyncSyncedNotifications; | 292 return prefs::kSyncSyncedNotifications; |
295 case syncer::SYNCED_NOTIFICATION_APP_INFO: | 293 case SYNCED_NOTIFICATION_APP_INFO: |
296 return prefs::kSyncSyncedNotificationAppInfo; | 294 return prefs::kSyncSyncedNotificationAppInfo; |
297 case syncer::DICTIONARY: | 295 case DICTIONARY: |
298 return prefs::kSyncDictionary; | 296 return prefs::kSyncDictionary; |
299 case syncer::FAVICON_IMAGES: | 297 case FAVICON_IMAGES: |
300 return prefs::kSyncFaviconImages; | 298 return prefs::kSyncFaviconImages; |
301 case syncer::FAVICON_TRACKING: | 299 case FAVICON_TRACKING: |
302 return prefs::kSyncFaviconTracking; | 300 return prefs::kSyncFaviconTracking; |
303 case syncer::SUPERVISED_USER_SETTINGS: | 301 case SUPERVISED_USER_SETTINGS: |
304 return prefs::kSyncSupervisedUserSettings; | 302 return prefs::kSyncSupervisedUserSettings; |
305 case syncer::PROXY_TABS: | 303 case PROXY_TABS: |
306 return prefs::kSyncTabs; | 304 return prefs::kSyncTabs; |
307 case syncer::PRIORITY_PREFERENCES: | 305 case PRIORITY_PREFERENCES: |
308 return prefs::kSyncPriorityPreferences; | 306 return prefs::kSyncPriorityPreferences; |
309 case syncer::SUPERVISED_USERS: | 307 case SUPERVISED_USERS: |
310 return prefs::kSyncSupervisedUsers; | 308 return prefs::kSyncSupervisedUsers; |
311 case syncer::ARTICLES: | 309 case ARTICLES: |
312 return prefs::kSyncArticles; | 310 return prefs::kSyncArticles; |
313 case syncer::SUPERVISED_USER_SHARED_SETTINGS: | 311 case SUPERVISED_USER_SHARED_SETTINGS: |
314 return prefs::kSyncSupervisedUserSharedSettings; | 312 return prefs::kSyncSupervisedUserSharedSettings; |
315 case syncer::SUPERVISED_USER_WHITELISTS: | 313 case SUPERVISED_USER_WHITELISTS: |
316 return prefs::kSyncSupervisedUserWhitelists; | 314 return prefs::kSyncSupervisedUserWhitelists; |
317 case syncer::DEVICE_INFO: | 315 case DEVICE_INFO: |
318 return prefs::kSyncDeviceInfo; | 316 return prefs::kSyncDeviceInfo; |
319 case syncer::WIFI_CREDENTIALS: | 317 case WIFI_CREDENTIALS: |
320 return prefs::kSyncWifiCredentials; | 318 return prefs::kSyncWifiCredentials; |
321 case syncer::ARC_PACKAGE: | 319 case ARC_PACKAGE: |
322 return prefs::kSyncArcPackage; | 320 return prefs::kSyncArcPackage; |
323 case syncer::PRINTERS: | 321 case PRINTERS: |
324 return prefs::kSyncPrinters; | 322 return prefs::kSyncPrinters; |
325 case syncer::READING_LIST: | 323 case READING_LIST: |
326 return prefs::kSyncReadingList; | 324 return prefs::kSyncReadingList; |
327 default: | 325 default: |
328 break; | 326 break; |
329 } | 327 } |
330 NOTREACHED() << "Type is " << data_type; | 328 NOTREACHED() << "Type is " << data_type; |
331 return NULL; | 329 return NULL; |
332 } | 330 } |
333 | 331 |
334 #if defined(OS_CHROMEOS) | 332 #if defined(OS_CHROMEOS) |
335 std::string SyncPrefs::GetSpareBootstrapToken() const { | 333 std::string SyncPrefs::GetSpareBootstrapToken() const { |
(...skipping 12 matching lines...) Expand all Loading... |
348 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, | 346 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, |
349 OnSyncManagedPrefChange(*pref_sync_managed_)); | 347 OnSyncManagedPrefChange(*pref_sync_managed_)); |
350 } | 348 } |
351 | 349 |
352 void SyncPrefs::SetManagedForTest(bool is_managed) { | 350 void SyncPrefs::SetManagedForTest(bool is_managed) { |
353 DCHECK(CalledOnValidThread()); | 351 DCHECK(CalledOnValidThread()); |
354 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); | 352 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); |
355 } | 353 } |
356 | 354 |
357 void SyncPrefs::RegisterPrefGroups() { | 355 void SyncPrefs::RegisterPrefGroups() { |
358 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); | 356 pref_groups_[APPS].Put(APP_NOTIFICATIONS); |
359 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); | 357 pref_groups_[APPS].Put(APP_SETTINGS); |
360 pref_groups_[syncer::APPS].Put(syncer::APP_LIST); | 358 pref_groups_[APPS].Put(APP_LIST); |
361 pref_groups_[syncer::APPS].Put(syncer::ARC_PACKAGE); | 359 pref_groups_[APPS].Put(ARC_PACKAGE); |
362 pref_groups_[syncer::APPS].Put(syncer::READING_LIST); | 360 pref_groups_[APPS].Put(READING_LIST); |
363 | 361 |
364 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); | 362 pref_groups_[AUTOFILL].Put(AUTOFILL_PROFILE); |
365 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_WALLET_DATA); | 363 pref_groups_[AUTOFILL].Put(AUTOFILL_WALLET_DATA); |
366 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_WALLET_METADATA); | 364 pref_groups_[AUTOFILL].Put(AUTOFILL_WALLET_METADATA); |
367 | 365 |
368 pref_groups_[syncer::EXTENSIONS].Put(syncer::EXTENSION_SETTINGS); | 366 pref_groups_[EXTENSIONS].Put(EXTENSION_SETTINGS); |
369 | 367 |
370 pref_groups_[syncer::PREFERENCES].Put(syncer::DICTIONARY); | 368 pref_groups_[PREFERENCES].Put(DICTIONARY); |
371 pref_groups_[syncer::PREFERENCES].Put(syncer::PRIORITY_PREFERENCES); | 369 pref_groups_[PREFERENCES].Put(PRIORITY_PREFERENCES); |
372 pref_groups_[syncer::PREFERENCES].Put(syncer::SEARCH_ENGINES); | 370 pref_groups_[PREFERENCES].Put(SEARCH_ENGINES); |
373 | 371 |
374 pref_groups_[syncer::TYPED_URLS].Put(syncer::HISTORY_DELETE_DIRECTIVES); | 372 pref_groups_[TYPED_URLS].Put(HISTORY_DELETE_DIRECTIVES); |
375 pref_groups_[syncer::TYPED_URLS].Put(syncer::SESSIONS); | 373 pref_groups_[TYPED_URLS].Put(SESSIONS); |
376 pref_groups_[syncer::TYPED_URLS].Put(syncer::FAVICON_IMAGES); | 374 pref_groups_[TYPED_URLS].Put(FAVICON_IMAGES); |
377 pref_groups_[syncer::TYPED_URLS].Put(syncer::FAVICON_TRACKING); | 375 pref_groups_[TYPED_URLS].Put(FAVICON_TRACKING); |
378 | 376 |
379 pref_groups_[syncer::PROXY_TABS].Put(syncer::SESSIONS); | 377 pref_groups_[PROXY_TABS].Put(SESSIONS); |
380 pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_IMAGES); | 378 pref_groups_[PROXY_TABS].Put(FAVICON_IMAGES); |
381 pref_groups_[syncer::PROXY_TABS].Put(syncer::FAVICON_TRACKING); | 379 pref_groups_[PROXY_TABS].Put(FAVICON_TRACKING); |
382 | 380 |
383 // TODO(zea): put favicons in the bookmarks group as well once it handles | 381 // TODO(zea): put favicons in the bookmarks group as well once it handles |
384 // those favicons. | 382 // those favicons. |
385 } | 383 } |
386 | 384 |
387 // static | 385 // static |
388 void SyncPrefs::RegisterDataTypePreferredPref( | 386 void SyncPrefs::RegisterDataTypePreferredPref( |
389 user_prefs::PrefRegistrySyncable* registry, | 387 user_prefs::PrefRegistrySyncable* registry, |
390 syncer::ModelType type, | 388 ModelType type, |
391 bool is_preferred) { | 389 bool is_preferred) { |
392 const char* pref_name = GetPrefNameForDataType(type); | 390 const char* pref_name = GetPrefNameForDataType(type); |
393 if (!pref_name) { | 391 if (!pref_name) { |
394 NOTREACHED(); | 392 NOTREACHED(); |
395 return; | 393 return; |
396 } | 394 } |
397 registry->RegisterBooleanPref(pref_name, is_preferred); | 395 registry->RegisterBooleanPref(pref_name, is_preferred); |
398 } | 396 } |
399 | 397 |
400 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { | 398 bool SyncPrefs::GetDataTypePreferred(ModelType type) const { |
401 DCHECK(CalledOnValidThread()); | 399 DCHECK(CalledOnValidThread()); |
402 const char* pref_name = GetPrefNameForDataType(type); | 400 const char* pref_name = GetPrefNameForDataType(type); |
403 if (!pref_name) { | 401 if (!pref_name) { |
404 NOTREACHED(); | 402 NOTREACHED(); |
405 return false; | 403 return false; |
406 } | 404 } |
407 | 405 |
408 // Device info is always enabled. | 406 // Device info is always enabled. |
409 if (pref_name == prefs::kSyncDeviceInfo) | 407 if (pref_name == prefs::kSyncDeviceInfo) |
410 return true; | 408 return true; |
411 | 409 |
412 if (type == syncer::PROXY_TABS && | 410 if (type == PROXY_TABS && |
413 pref_service_->GetUserPrefValue(pref_name) == NULL && | 411 pref_service_->GetUserPrefValue(pref_name) == NULL && |
414 pref_service_->IsUserModifiablePreference(pref_name)) { | 412 pref_service_->IsUserModifiablePreference(pref_name)) { |
415 // If there is no tab sync preference yet (i.e. newly enabled type), | 413 // If there is no tab sync preference yet (i.e. newly enabled type), |
416 // default to the session sync preference value. | 414 // default to the session sync preference value. |
417 pref_name = GetPrefNameForDataType(syncer::SESSIONS); | 415 pref_name = GetPrefNameForDataType(SESSIONS); |
418 } | 416 } |
419 | 417 |
420 return pref_service_->GetBoolean(pref_name); | 418 return pref_service_->GetBoolean(pref_name); |
421 } | 419 } |
422 | 420 |
423 void SyncPrefs::SetDataTypePreferred(syncer::ModelType type, | 421 void SyncPrefs::SetDataTypePreferred(ModelType type, bool is_preferred) { |
424 bool is_preferred) { | |
425 DCHECK(CalledOnValidThread()); | 422 DCHECK(CalledOnValidThread()); |
426 const char* pref_name = GetPrefNameForDataType(type); | 423 const char* pref_name = GetPrefNameForDataType(type); |
427 if (!pref_name) { | 424 if (!pref_name) { |
428 NOTREACHED(); | 425 NOTREACHED(); |
429 return; | 426 return; |
430 } | 427 } |
431 | 428 |
432 // Device info is always preferred. | 429 // Device info is always preferred. |
433 if (type == syncer::DEVICE_INFO) | 430 if (type == DEVICE_INFO) |
434 return; | 431 return; |
435 | 432 |
436 pref_service_->SetBoolean(pref_name, is_preferred); | 433 pref_service_->SetBoolean(pref_name, is_preferred); |
437 } | 434 } |
438 | 435 |
439 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( | 436 ModelTypeSet SyncPrefs::ResolvePrefGroups(ModelTypeSet registered_types, |
440 syncer::ModelTypeSet registered_types, | 437 ModelTypeSet types) const { |
441 syncer::ModelTypeSet types) const { | 438 ModelTypeSet types_with_groups = types; |
442 syncer::ModelTypeSet types_with_groups = types; | |
443 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); | 439 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); |
444 i != pref_groups_.end(); ++i) { | 440 i != pref_groups_.end(); ++i) { |
445 if (types.Has(i->first)) | 441 if (types.Has(i->first)) |
446 types_with_groups.PutAll(i->second); | 442 types_with_groups.PutAll(i->second); |
447 } | 443 } |
448 types_with_groups.RetainAll(registered_types); | 444 types_with_groups.RetainAll(registered_types); |
449 return types_with_groups; | 445 return types_with_groups; |
450 } | 446 } |
451 | 447 |
452 base::Time SyncPrefs::GetFirstSyncTime() const { | 448 base::Time SyncPrefs::GetFirstSyncTime() const { |
(...skipping 27 matching lines...) Expand all Loading... |
480 | 476 |
481 bool SyncPrefs::DidSyncShutdownCleanly() const { | 477 bool SyncPrefs::DidSyncShutdownCleanly() const { |
482 return pref_service_->GetBoolean(prefs::kSyncShutdownCleanly); | 478 return pref_service_->GetBoolean(prefs::kSyncShutdownCleanly); |
483 } | 479 } |
484 | 480 |
485 void SyncPrefs::SetCleanShutdown(bool value) { | 481 void SyncPrefs::SetCleanShutdown(bool value) { |
486 pref_service_->SetBoolean(prefs::kSyncShutdownCleanly, value); | 482 pref_service_->SetBoolean(prefs::kSyncShutdownCleanly, value); |
487 } | 483 } |
488 | 484 |
489 void SyncPrefs::GetInvalidationVersions( | 485 void SyncPrefs::GetInvalidationVersions( |
490 std::map<syncer::ModelType, int64_t>* invalidation_versions) const { | 486 std::map<ModelType, int64_t>* invalidation_versions) const { |
491 const base::DictionaryValue* invalidation_dictionary = | 487 const base::DictionaryValue* invalidation_dictionary = |
492 pref_service_->GetDictionary(prefs::kSyncInvalidationVersions); | 488 pref_service_->GetDictionary(prefs::kSyncInvalidationVersions); |
493 syncer::ModelTypeSet protocol_types = syncer::ProtocolTypes(); | 489 ModelTypeSet protocol_types = ProtocolTypes(); |
494 for (auto iter = protocol_types.First(); iter.Good(); iter.Inc()) { | 490 for (auto iter = protocol_types.First(); iter.Good(); iter.Inc()) { |
495 std::string key = syncer::ModelTypeToString(iter.Get()); | 491 std::string key = ModelTypeToString(iter.Get()); |
496 std::string version_str; | 492 std::string version_str; |
497 if (!invalidation_dictionary->GetString(key, &version_str)) | 493 if (!invalidation_dictionary->GetString(key, &version_str)) |
498 continue; | 494 continue; |
499 int64_t version = 0; | 495 int64_t version = 0; |
500 if (!base::StringToInt64(version_str, &version)) | 496 if (!base::StringToInt64(version_str, &version)) |
501 continue; | 497 continue; |
502 (*invalidation_versions)[iter.Get()] = version; | 498 (*invalidation_versions)[iter.Get()] = version; |
503 } | 499 } |
504 } | 500 } |
505 | 501 |
506 void SyncPrefs::UpdateInvalidationVersions( | 502 void SyncPrefs::UpdateInvalidationVersions( |
507 const std::map<syncer::ModelType, int64_t>& invalidation_versions) { | 503 const std::map<ModelType, int64_t>& invalidation_versions) { |
508 std::unique_ptr<base::DictionaryValue> invalidation_dictionary( | 504 std::unique_ptr<base::DictionaryValue> invalidation_dictionary( |
509 new base::DictionaryValue()); | 505 new base::DictionaryValue()); |
510 for (const auto& map_iter : invalidation_versions) { | 506 for (const auto& map_iter : invalidation_versions) { |
511 std::string version_str = base::Int64ToString(map_iter.second); | 507 std::string version_str = base::Int64ToString(map_iter.second); |
512 invalidation_dictionary->SetString( | 508 invalidation_dictionary->SetString(ModelTypeToString(map_iter.first), |
513 syncer::ModelTypeToString(map_iter.first), version_str); | 509 version_str); |
514 } | 510 } |
515 pref_service_->Set(prefs::kSyncInvalidationVersions, | 511 pref_service_->Set(prefs::kSyncInvalidationVersions, |
516 *invalidation_dictionary); | 512 *invalidation_dictionary); |
517 } | 513 } |
518 | 514 |
519 std::string SyncPrefs::GetLastRunVersion() const { | 515 std::string SyncPrefs::GetLastRunVersion() const { |
520 return pref_service_->GetString(prefs::kSyncLastRunVersion); | 516 return pref_service_->GetString(prefs::kSyncLastRunVersion); |
521 } | 517 } |
522 | 518 |
523 void SyncPrefs::SetLastRunVersion(const std::string& current_version) { | 519 void SyncPrefs::SetLastRunVersion(const std::string& current_version) { |
524 pref_service_->SetString(prefs::kSyncLastRunVersion, current_version); | 520 pref_service_->SetString(prefs::kSyncLastRunVersion, current_version); |
525 } | 521 } |
526 | 522 |
527 void SyncPrefs::SetPassphraseEncryptionTransitionInProgress(bool value) { | 523 void SyncPrefs::SetPassphraseEncryptionTransitionInProgress(bool value) { |
528 pref_service_->SetBoolean( | 524 pref_service_->SetBoolean( |
529 prefs::kSyncPassphraseEncryptionTransitionInProgress, value); | 525 prefs::kSyncPassphraseEncryptionTransitionInProgress, value); |
530 } | 526 } |
531 | 527 |
532 bool SyncPrefs::GetPassphraseEncryptionTransitionInProgress() const { | 528 bool SyncPrefs::GetPassphraseEncryptionTransitionInProgress() const { |
533 return pref_service_->GetBoolean( | 529 return pref_service_->GetBoolean( |
534 prefs::kSyncPassphraseEncryptionTransitionInProgress); | 530 prefs::kSyncPassphraseEncryptionTransitionInProgress); |
535 } | 531 } |
536 | 532 |
537 void SyncPrefs::SetSavedNigoriStateForPassphraseEncryptionTransition( | 533 void SyncPrefs::SetSavedNigoriStateForPassphraseEncryptionTransition( |
538 const syncer::SyncEncryptionHandler::NigoriState& nigori_state) { | 534 const SyncEncryptionHandler::NigoriState& nigori_state) { |
539 std::string encoded; | 535 std::string encoded; |
540 base::Base64Encode(nigori_state.nigori_specifics.SerializeAsString(), | 536 base::Base64Encode(nigori_state.nigori_specifics.SerializeAsString(), |
541 &encoded); | 537 &encoded); |
542 pref_service_->SetString(prefs::kSyncNigoriStateForPassphraseTransition, | 538 pref_service_->SetString(prefs::kSyncNigoriStateForPassphraseTransition, |
543 encoded); | 539 encoded); |
544 } | 540 } |
545 | 541 |
546 std::unique_ptr<syncer::SyncEncryptionHandler::NigoriState> | 542 std::unique_ptr<SyncEncryptionHandler::NigoriState> |
547 SyncPrefs::GetSavedNigoriStateForPassphraseEncryptionTransition() const { | 543 SyncPrefs::GetSavedNigoriStateForPassphraseEncryptionTransition() const { |
548 const std::string encoded = | 544 const std::string encoded = |
549 pref_service_->GetString(prefs::kSyncNigoriStateForPassphraseTransition); | 545 pref_service_->GetString(prefs::kSyncNigoriStateForPassphraseTransition); |
550 std::string decoded; | 546 std::string decoded; |
551 if (!base::Base64Decode(encoded, &decoded)) | 547 if (!base::Base64Decode(encoded, &decoded)) |
552 return std::unique_ptr<syncer::SyncEncryptionHandler::NigoriState>(); | 548 return std::unique_ptr<SyncEncryptionHandler::NigoriState>(); |
553 | 549 |
554 std::unique_ptr<syncer::SyncEncryptionHandler::NigoriState> result( | 550 std::unique_ptr<SyncEncryptionHandler::NigoriState> result( |
555 new syncer::SyncEncryptionHandler::NigoriState()); | 551 new SyncEncryptionHandler::NigoriState()); |
556 if (!result->nigori_specifics.ParseFromString(decoded)) | 552 if (!result->nigori_specifics.ParseFromString(decoded)) |
557 return std::unique_ptr<syncer::SyncEncryptionHandler::NigoriState>(); | 553 return std::unique_ptr<SyncEncryptionHandler::NigoriState>(); |
558 return result; | 554 return result; |
559 } | 555 } |
560 | 556 |
561 } // namespace sync_driver | 557 } // namespace syncer |
OLD | NEW |