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