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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 pref_service->RegisterBooleanPref(prefs::kSyncApps, enable_by_default); | 256 pref_service->RegisterBooleanPref(prefs::kSyncApps, enable_by_default); |
243 | 257 pref_service->RegisterBooleanPref(prefs::kSyncSessions, enable_by_default); |
244 pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced, | 258 pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced, |
245 enable_by_default); | 259 enable_by_default); |
246 | |
247 pref_service->RegisterBooleanPref(prefs::kSyncManaged, false); | 260 pref_service->RegisterBooleanPref(prefs::kSyncManaged, false); |
248 } | 261 } |
249 | 262 |
250 void ProfileSyncService::ClearPreferences() { | 263 void ProfileSyncService::ClearPreferences() { |
251 PrefService* pref_service = profile_->GetPrefs(); | 264 PrefService* pref_service = profile_->GetPrefs(); |
252 pref_service->ClearPref(prefs::kSyncLastSyncedTime); | 265 pref_service->ClearPref(prefs::kSyncLastSyncedTime); |
253 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); | 266 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); |
254 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. | 267 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. |
255 // Is that really what we want? | 268 // Is that really what we want? |
256 pref_service->ScheduleSavePersistentPrefs(); | 269 pref_service->ScheduleSavePersistentPrefs(); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); | 327 profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime)); |
315 | 328 |
316 CreateBackend(); | 329 CreateBackend(); |
317 // Initialize the backend. Every time we start up a new SyncBackendHost, | 330 // Initialize the backend. Every time we start up a new SyncBackendHost, |
318 // we'll want to start from a fresh SyncDB, so delete any old one that might | 331 // we'll want to start from a fresh SyncDB, so delete any old one that might |
319 // be there. | 332 // be there. |
320 InitializeBackend(!HasSyncSetupCompleted()); | 333 InitializeBackend(!HasSyncSetupCompleted()); |
321 } | 334 } |
322 | 335 |
323 void ProfileSyncService::Shutdown(bool sync_disabled) { | 336 void ProfileSyncService::Shutdown(bool sync_disabled) { |
324 | 337 // Stop all data type controllers, if needed. |
325 // Stop all data type controllers, if needed. | |
326 if (data_type_manager_.get() && | 338 if (data_type_manager_.get() && |
327 data_type_manager_->state() != DataTypeManager::STOPPED) { | 339 data_type_manager_->state() != DataTypeManager::STOPPED) { |
328 data_type_manager_->Stop(); | 340 data_type_manager_->Stop(); |
329 } | 341 } |
330 | 342 |
331 data_type_manager_.reset(); | 343 data_type_manager_.reset(); |
332 | 344 |
333 // Move aside the backend so nobody else tries to use it while we are | 345 // Move aside the backend so nobody else tries to use it while we are |
334 // shutting it down. | 346 // shutting it down. |
335 scoped_ptr<SyncBackendHost> doomed_backend(backend_.release()); | 347 scoped_ptr<SyncBackendHost> doomed_backend(backend_.release()); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 case syncable::AUTOFILL: | 414 case syncable::AUTOFILL: |
403 return prefs::kSyncAutofill; | 415 return prefs::kSyncAutofill; |
404 case syncable::THEMES: | 416 case syncable::THEMES: |
405 return prefs::kSyncThemes; | 417 return prefs::kSyncThemes; |
406 case syncable::TYPED_URLS: | 418 case syncable::TYPED_URLS: |
407 return prefs::kSyncTypedUrls; | 419 return prefs::kSyncTypedUrls; |
408 case syncable::EXTENSIONS: | 420 case syncable::EXTENSIONS: |
409 return prefs::kSyncExtensions; | 421 return prefs::kSyncExtensions; |
410 case syncable::APPS: | 422 case syncable::APPS: |
411 return prefs::kSyncApps; | 423 return prefs::kSyncApps; |
| 424 case syncable::SESSIONS: |
| 425 return prefs::kSyncSessions; |
412 default: | 426 default: |
413 NOTREACHED(); | 427 NOTREACHED(); |
414 return NULL; | 428 return NULL; |
415 } | 429 } |
416 } | 430 } |
417 | 431 |
418 // An invariant has been violated. Transition to an error state where we try | 432 // An invariant has been violated. Transition to an error state where we try |
419 // to do as little work as possible, to avoid further corruption or crashes. | 433 // to do as little work as possible, to avoid further corruption or crashes. |
420 void ProfileSyncService::OnUnrecoverableError( | 434 void ProfileSyncService::OnUnrecoverableError( |
421 const tracked_objects::Location& from_here, | 435 const tracked_objects::Location& from_here, |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
843 // is initialized, all enabled data types are consistent with one | 857 // is initialized, all enabled data types are consistent with one |
844 // another, and no unrecoverable error has transpired. | 858 // another, and no unrecoverable error has transpired. |
845 if (unrecoverable_error_detected_) | 859 if (unrecoverable_error_detected_) |
846 return false; | 860 return false; |
847 | 861 |
848 if (!data_type_manager_.get()) | 862 if (!data_type_manager_.get()) |
849 return false; | 863 return false; |
850 | 864 |
851 return data_type_manager_->state() == DataTypeManager::CONFIGURED; | 865 return data_type_manager_->state() == DataTypeManager::CONFIGURED; |
852 } | 866 } |
OLD | NEW |