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 |