Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Side by Side Diff: chrome/browser/sync/profile_sync_service.cc

Issue 3168009: Added classes to enable session sync functionality.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_password_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698