| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/profile_sync_service.h" | 5 #include "chrome/browser/sync/profile_sync_service.h" | 
| 6 | 6 | 
| 7 #include <map> | 7 #include <map> | 
| 8 #include <set> | 8 #include <set> | 
| 9 | 9 | 
| 10 #include "app/l10n_util.h" | 10 #include "app/l10n_util.h" | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 22 #include "chrome/browser/chrome_thread.h" | 22 #include "chrome/browser/chrome_thread.h" | 
| 23 #include "chrome/browser/history/history_types.h" | 23 #include "chrome/browser/history/history_types.h" | 
| 24 #include "chrome/browser/platform_util.h" | 24 #include "chrome/browser/platform_util.h" | 
| 25 #include "chrome/browser/pref_service.h" | 25 #include "chrome/browser/pref_service.h" | 
| 26 #include "chrome/browser/profile.h" | 26 #include "chrome/browser/profile.h" | 
| 27 #include "chrome/browser/net/gaia/token_service.h" | 27 #include "chrome/browser/net/gaia/token_service.h" | 
| 28 #include "chrome/browser/sync/engine/syncapi.h" | 28 #include "chrome/browser/sync/engine/syncapi.h" | 
| 29 #include "chrome/browser/sync/glue/change_processor.h" | 29 #include "chrome/browser/sync/glue/change_processor.h" | 
| 30 #include "chrome/browser/sync/glue/data_type_controller.h" | 30 #include "chrome/browser/sync/glue/data_type_controller.h" | 
| 31 #include "chrome/browser/sync/glue/data_type_manager.h" | 31 #include "chrome/browser/sync/glue/data_type_manager.h" | 
| 32 #include "chrome/browser/sync/glue/session_data_type_controller.h" |  | 
| 33 #include "chrome/browser/sync/profile_sync_factory.h" | 32 #include "chrome/browser/sync/profile_sync_factory.h" | 
| 34 #include "chrome/browser/sync/syncable/directory_manager.h" | 33 #include "chrome/browser/sync/syncable/directory_manager.h" | 
| 35 #include "chrome/common/chrome_switches.h" | 34 #include "chrome/common/chrome_switches.h" | 
| 36 #include "chrome/common/notification_details.h" | 35 #include "chrome/common/notification_details.h" | 
| 37 #include "chrome/common/notification_service.h" | 36 #include "chrome/common/notification_service.h" | 
| 38 #include "chrome/common/notification_source.h" | 37 #include "chrome/common/notification_source.h" | 
| 39 #include "chrome/common/notification_type.h" | 38 #include "chrome/common/notification_type.h" | 
| 40 #include "chrome/common/pref_names.h" | 39 #include "chrome/common/pref_names.h" | 
| 41 #include "chrome/common/time_format.h" | 40 #include "chrome/common/time_format.h" | 
| 42 #include "grit/generated_resources.h" | 41 #include "grit/generated_resources.h" | 
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 163   } | 162   } | 
| 164 } | 163 } | 
| 165 | 164 | 
| 166 void ProfileSyncService::RegisterDataTypeController( | 165 void ProfileSyncService::RegisterDataTypeController( | 
| 167     DataTypeController* data_type_controller) { | 166     DataTypeController* data_type_controller) { | 
| 168   DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U); | 167   DCHECK_EQ(data_type_controllers_.count(data_type_controller->type()), 0U); | 
| 169   data_type_controllers_[data_type_controller->type()] = | 168   data_type_controllers_[data_type_controller->type()] = | 
| 170       data_type_controller; | 169       data_type_controller; | 
| 171 } | 170 } | 
| 172 | 171 | 
| 173 browser_sync::SessionModelAssociator* |  | 
| 174     ProfileSyncService::GetSessionModelAssociator() { |  | 
| 175   if (data_type_controllers_.find(syncable::SESSIONS) == |  | 
| 176       data_type_controllers_.end() || |  | 
| 177       data_type_controllers_.find(syncable::SESSIONS)->second->state() != |  | 
| 178       DataTypeController::RUNNING) { |  | 
| 179     return NULL; |  | 
| 180   } |  | 
| 181   return static_cast<browser_sync::SessionDataTypeController*>( |  | 
| 182       data_type_controllers_.find( |  | 
| 183       syncable::SESSIONS)->second.get())->GetModelAssociator(); |  | 
| 184 } |  | 
| 185 |  | 
| 186 void ProfileSyncService::GetDataTypeControllerStates( | 172 void ProfileSyncService::GetDataTypeControllerStates( | 
| 187   browser_sync::DataTypeController::StateMap* state_map) const { | 173   browser_sync::DataTypeController::StateMap* state_map) const { | 
| 188     browser_sync::DataTypeController::TypeMap::const_iterator iter | 174     browser_sync::DataTypeController::TypeMap::const_iterator iter | 
| 189         = data_type_controllers_.begin(); | 175         = data_type_controllers_.begin(); | 
| 190     for ( ; iter != data_type_controllers_.end(); ++iter ) { | 176     for ( ; iter != data_type_controllers_.end(); ++iter ) { | 
| 191       (*state_map)[iter->first] = iter->second.get()->state(); | 177       (*state_map)[iter->first] = iter->second.get()->state(); | 
| 192     } | 178     } | 
| 193 } | 179 } | 
| 194 | 180 | 
| 195 void ProfileSyncService::InitSettings() { | 181 void ProfileSyncService::InitSettings() { | 
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 247 #endif | 233 #endif | 
| 248 | 234 | 
| 249   pref_service->RegisterBooleanPref(prefs::kSyncBookmarks, true); | 235   pref_service->RegisterBooleanPref(prefs::kSyncBookmarks, true); | 
| 250   pref_service->RegisterBooleanPref(prefs::kSyncPasswords, enable_by_default); | 236   pref_service->RegisterBooleanPref(prefs::kSyncPasswords, enable_by_default); | 
| 251   pref_service->RegisterBooleanPref(prefs::kSyncPreferences, enable_by_default); | 237   pref_service->RegisterBooleanPref(prefs::kSyncPreferences, enable_by_default); | 
| 252   pref_service->RegisterBooleanPref(prefs::kSyncAutofill, enable_by_default); | 238   pref_service->RegisterBooleanPref(prefs::kSyncAutofill, enable_by_default); | 
| 253   pref_service->RegisterBooleanPref(prefs::kSyncThemes, enable_by_default); | 239   pref_service->RegisterBooleanPref(prefs::kSyncThemes, enable_by_default); | 
| 254   pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls, enable_by_default); | 240   pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls, enable_by_default); | 
| 255   pref_service->RegisterBooleanPref(prefs::kSyncExtensions, enable_by_default); | 241   pref_service->RegisterBooleanPref(prefs::kSyncExtensions, enable_by_default); | 
| 256   pref_service->RegisterBooleanPref(prefs::kSyncApps, enable_by_default); | 242   pref_service->RegisterBooleanPref(prefs::kSyncApps, enable_by_default); | 
| 257   pref_service->RegisterBooleanPref(prefs::kSyncSessions, enable_by_default); | 243 | 
| 258   pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced, | 244   pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced, | 
| 259       enable_by_default); | 245       enable_by_default); | 
|  | 246 | 
| 260   pref_service->RegisterBooleanPref(prefs::kSyncManaged, false); | 247   pref_service->RegisterBooleanPref(prefs::kSyncManaged, false); | 
| 261 } | 248 } | 
| 262 | 249 | 
| 263 void ProfileSyncService::ClearPreferences() { | 250 void ProfileSyncService::ClearPreferences() { | 
| 264   PrefService* pref_service = profile_->GetPrefs(); | 251   PrefService* pref_service = profile_->GetPrefs(); | 
| 265   pref_service->ClearPref(prefs::kSyncLastSyncedTime); | 252   pref_service->ClearPref(prefs::kSyncLastSyncedTime); | 
| 266   pref_service->ClearPref(prefs::kSyncHasSetupCompleted); | 253   pref_service->ClearPref(prefs::kSyncHasSetupCompleted); | 
| 267   // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. | 254   // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. | 
| 268   // Is that really what we want? | 255   // Is that really what we want? | 
| 269   pref_service->ScheduleSavePersistentPrefs(); | 256   pref_service->ScheduleSavePersistentPrefs(); | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 327       profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); | 314       profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); | 
| 328 | 315 | 
| 329   CreateBackend(); | 316   CreateBackend(); | 
| 330   // Initialize the backend.  Every time we start up a new SyncBackendHost, | 317   // Initialize the backend.  Every time we start up a new SyncBackendHost, | 
| 331   // we'll want to start from a fresh SyncDB, so delete any old one that might | 318   // we'll want to start from a fresh SyncDB, so delete any old one that might | 
| 332   // be there. | 319   // be there. | 
| 333   InitializeBackend(!HasSyncSetupCompleted()); | 320   InitializeBackend(!HasSyncSetupCompleted()); | 
| 334 } | 321 } | 
| 335 | 322 | 
| 336 void ProfileSyncService::Shutdown(bool sync_disabled) { | 323 void ProfileSyncService::Shutdown(bool sync_disabled) { | 
| 337   // Stop all data type controllers, if needed. | 324 | 
|  | 325  // Stop all data type controllers, if needed. | 
| 338   if (data_type_manager_.get() && | 326   if (data_type_manager_.get() && | 
| 339       data_type_manager_->state() != DataTypeManager::STOPPED) { | 327       data_type_manager_->state() != DataTypeManager::STOPPED) { | 
| 340     data_type_manager_->Stop(); | 328     data_type_manager_->Stop(); | 
| 341   } | 329   } | 
| 342 | 330 | 
| 343   data_type_manager_.reset(); | 331   data_type_manager_.reset(); | 
| 344 | 332 | 
| 345   // Move aside the backend so nobody else tries to use it while we are | 333   // Move aside the backend so nobody else tries to use it while we are | 
| 346   // shutting it down. | 334   // shutting it down. | 
| 347   scoped_ptr<SyncBackendHost> doomed_backend(backend_.release()); | 335   scoped_ptr<SyncBackendHost> doomed_backend(backend_.release()); | 
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 414     case syncable::AUTOFILL: | 402     case syncable::AUTOFILL: | 
| 415       return prefs::kSyncAutofill; | 403       return prefs::kSyncAutofill; | 
| 416     case syncable::THEMES: | 404     case syncable::THEMES: | 
| 417       return prefs::kSyncThemes; | 405       return prefs::kSyncThemes; | 
| 418     case syncable::TYPED_URLS: | 406     case syncable::TYPED_URLS: | 
| 419       return prefs::kSyncTypedUrls; | 407       return prefs::kSyncTypedUrls; | 
| 420     case syncable::EXTENSIONS: | 408     case syncable::EXTENSIONS: | 
| 421       return prefs::kSyncExtensions; | 409       return prefs::kSyncExtensions; | 
| 422     case syncable::APPS: | 410     case syncable::APPS: | 
| 423       return prefs::kSyncApps; | 411       return prefs::kSyncApps; | 
| 424     case syncable::SESSIONS: |  | 
| 425       return prefs::kSyncSessions; |  | 
| 426     default: | 412     default: | 
| 427       NOTREACHED(); | 413       NOTREACHED(); | 
| 428       return NULL; | 414       return NULL; | 
| 429   } | 415   } | 
| 430 } | 416 } | 
| 431 | 417 | 
| 432 // An invariant has been violated.  Transition to an error state where we try | 418 // An invariant has been violated.  Transition to an error state where we try | 
| 433 // to do as little work as possible, to avoid further corruption or crashes. | 419 // to do as little work as possible, to avoid further corruption or crashes. | 
| 434 void ProfileSyncService::OnUnrecoverableError( | 420 void ProfileSyncService::OnUnrecoverableError( | 
| 435     const tracked_objects::Location& from_here, | 421     const tracked_objects::Location& from_here, | 
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 857   // is initialized, all enabled data types are consistent with one | 843   // is initialized, all enabled data types are consistent with one | 
| 858   // another, and no unrecoverable error has transpired. | 844   // another, and no unrecoverable error has transpired. | 
| 859   if (unrecoverable_error_detected_) | 845   if (unrecoverable_error_detected_) | 
| 860     return false; | 846     return false; | 
| 861 | 847 | 
| 862   if (!data_type_manager_.get()) | 848   if (!data_type_manager_.get()) | 
| 863     return false; | 849     return false; | 
| 864 | 850 | 
| 865   return data_type_manager_->state() == DataTypeManager::CONFIGURED; | 851   return data_type_manager_->state() == DataTypeManager::CONFIGURED; | 
| 866 } | 852 } | 
| OLD | NEW | 
|---|