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

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

Issue 367153005: Sync: Refactoring of DEVICE_INFO syncable type - Part 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed scoped_ptr issue in ProfileSyncService constructor Created 6 years, 5 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <cstddef> 7 #include <cstddef>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } // anonymous namespace 179 } // anonymous namespace
180 180
181 bool ShouldShowActionOnUI( 181 bool ShouldShowActionOnUI(
182 const syncer::SyncProtocolError& error) { 182 const syncer::SyncProtocolError& error) {
183 return (error.action != syncer::UNKNOWN_ACTION && 183 return (error.action != syncer::UNKNOWN_ACTION &&
184 error.action != syncer::DISABLE_SYNC_ON_CLIENT && 184 error.action != syncer::DISABLE_SYNC_ON_CLIENT &&
185 error.action != syncer::STOP_SYNC_FOR_DISABLED_ACCOUNT); 185 error.action != syncer::STOP_SYNC_FOR_DISABLED_ACCOUNT);
186 } 186 }
187 187
188 ProfileSyncService::ProfileSyncService( 188 ProfileSyncService::ProfileSyncService(
189 ProfileSyncComponentsFactory* factory, 189 scoped_ptr<ProfileSyncComponentsFactory> factory,
190 Profile* profile, 190 Profile* profile,
191 scoped_ptr<SupervisedUserSigninManagerWrapper> signin_wrapper, 191 scoped_ptr<SupervisedUserSigninManagerWrapper> signin_wrapper,
192 ProfileOAuth2TokenService* oauth2_token_service, 192 ProfileOAuth2TokenService* oauth2_token_service,
193 ProfileSyncServiceStartBehavior start_behavior) 193 ProfileSyncServiceStartBehavior start_behavior)
194 : OAuth2TokenService::Consumer("sync"), 194 : OAuth2TokenService::Consumer("sync"),
195 last_auth_error_(AuthError::AuthErrorNone()), 195 last_auth_error_(AuthError::AuthErrorNone()),
196 passphrase_required_reason_(syncer::REASON_PASSPHRASE_NOT_REQUIRED), 196 passphrase_required_reason_(syncer::REASON_PASSPHRASE_NOT_REQUIRED),
197 factory_(factory), 197 factory_(factory.Pass()),
198 profile_(profile), 198 profile_(profile),
199 sync_prefs_(profile_->GetPrefs()), 199 sync_prefs_(profile_->GetPrefs()),
200 sync_service_url_(GetSyncServiceURL(*CommandLine::ForCurrentProcess())), 200 sync_service_url_(GetSyncServiceURL(*CommandLine::ForCurrentProcess())),
201 is_first_time_sync_configure_(false), 201 is_first_time_sync_configure_(false),
202 backend_initialized_(false), 202 backend_initialized_(false),
203 sync_disabled_by_admin_(false), 203 sync_disabled_by_admin_(false),
204 is_auth_in_progress_(false), 204 is_auth_in_progress_(false),
205 signin_(signin_wrapper.Pass()), 205 signin_(signin_wrapper.Pass()),
206 unrecoverable_error_reason_(ERROR_REASON_UNSET), 206 unrecoverable_error_reason_(ERROR_REASON_UNSET),
207 expect_sync_configuration_aborted_(false), 207 expect_sync_configuration_aborted_(false),
(...skipping 26 matching lines...) Expand all
234 startup_controller_weak_factory_.GetWeakPtr(), 234 startup_controller_weak_factory_.GetWeakPtr(),
235 ROLLBACK)), 235 ROLLBACK)),
236 backend_mode_(IDLE), 236 backend_mode_(IDLE),
237 backup_start_delay_(base::TimeDelta::FromSeconds(kBackupStartDelay)), 237 backup_start_delay_(base::TimeDelta::FromSeconds(kBackupStartDelay)),
238 clear_browsing_data_(base::Bind(&ClearBrowsingData)) { 238 clear_browsing_data_(base::Bind(&ClearBrowsingData)) {
239 DCHECK(profile); 239 DCHECK(profile);
240 syncer::SyncableService::StartSyncFlare flare( 240 syncer::SyncableService::StartSyncFlare flare(
241 sync_start_util::GetFlareForSyncableService(profile->GetPath())); 241 sync_start_util::GetFlareForSyncableService(profile->GetPath()));
242 scoped_ptr<browser_sync::LocalSessionEventRouter> router( 242 scoped_ptr<browser_sync::LocalSessionEventRouter> router(
243 new NotificationServiceSessionsRouter(profile, flare)); 243 new NotificationServiceSessionsRouter(profile, flare));
244
245 DCHECK(factory_.get());
246 local_device_ = factory_->CreateLocalDeviceInfoProvider();
244 sessions_sync_manager_.reset( 247 sessions_sync_manager_.reset(
245 new SessionsSyncManager(profile, this, router.Pass())); 248 new SessionsSyncManager(profile, local_device_.get(), router.Pass()));
246 } 249 }
247 250
248 ProfileSyncService::~ProfileSyncService() { 251 ProfileSyncService::~ProfileSyncService() {
249 sync_prefs_.RemoveSyncPrefObserver(this); 252 sync_prefs_.RemoveSyncPrefObserver(this);
250 // Shutdown() should have been called before destruction. 253 // Shutdown() should have been called before destruction.
251 CHECK(!backend_initialized_); 254 CHECK(!backend_initialized_);
252 } 255 }
253 256
254 bool ProfileSyncService::IsSyncEnabledAndLoggedIn() { 257 bool ProfileSyncService::IsSyncEnabledAndLoggedIn() {
255 // Exit if sync is disabled. 258 // Exit if sync is disabled.
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 browser_sync::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() { 418 browser_sync::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() {
416 if (!IsSessionsDataTypeControllerRunning()) 419 if (!IsSessionsDataTypeControllerRunning())
417 return NULL; 420 return NULL;
418 return sessions_sync_manager_.get(); 421 return sessions_sync_manager_.get();
419 } 422 }
420 423
421 browser_sync::FaviconCache* ProfileSyncService::GetFaviconCache() { 424 browser_sync::FaviconCache* ProfileSyncService::GetFaviconCache() {
422 return sessions_sync_manager_->GetFaviconCache(); 425 return sessions_sync_manager_->GetFaviconCache();
423 } 426 }
424 427
425 scoped_ptr<browser_sync::DeviceInfo> 428 browser_sync::SyncedWindowDelegatesGetter*
426 ProfileSyncService::GetLocalDeviceInfo() const { 429 ProfileSyncService::GetSyncedWindowDelegatesGetter() const {
427 if (HasSyncingBackend()) { 430 return sessions_sync_manager_->GetSyncedWindowDelegatesGetter();
428 browser_sync::SyncedDeviceTracker* device_tracker = 431 }
429 backend_->GetSyncedDeviceTracker(); 432
430 if (device_tracker) 433 browser_sync::LocalDeviceInfoProvider*
431 return device_tracker->ReadLocalDeviceInfo(); 434 ProfileSyncService::GetLocalDeviceInfoProvider() {
432 } 435 return local_device_.get();
433 return scoped_ptr<browser_sync::DeviceInfo>();
434 } 436 }
435 437
436 scoped_ptr<browser_sync::DeviceInfo> 438 scoped_ptr<browser_sync::DeviceInfo>
437 ProfileSyncService::GetDeviceInfo(const std::string& client_id) const { 439 ProfileSyncService::GetDeviceInfo(const std::string& client_id) const {
438 if (HasSyncingBackend()) { 440 if (HasSyncingBackend()) {
439 browser_sync::SyncedDeviceTracker* device_tracker = 441 browser_sync::SyncedDeviceTracker* device_tracker =
440 backend_->GetSyncedDeviceTracker(); 442 backend_->GetSyncedDeviceTracker();
441 if (device_tracker) 443 if (device_tracker)
442 return device_tracker->ReadDeviceInfo(client_id); 444 return device_tracker->ReadDeviceInfo(client_id);
443 } 445 }
444 return scoped_ptr<browser_sync::DeviceInfo>(); 446 return scoped_ptr<browser_sync::DeviceInfo>();
445 } 447 }
446 448
447 ScopedVector<browser_sync::DeviceInfo> 449 ScopedVector<browser_sync::DeviceInfo>
448 ProfileSyncService::GetAllSignedInDevices() const { 450 ProfileSyncService::GetAllSignedInDevices() const {
449 ScopedVector<browser_sync::DeviceInfo> devices; 451 ScopedVector<browser_sync::DeviceInfo> devices;
450 if (HasSyncingBackend()) { 452 if (HasSyncingBackend()) {
451 browser_sync::SyncedDeviceTracker* device_tracker = 453 browser_sync::SyncedDeviceTracker* device_tracker =
452 backend_->GetSyncedDeviceTracker(); 454 backend_->GetSyncedDeviceTracker();
453 if (device_tracker) { 455 if (device_tracker) {
454 // TODO(lipalani) - Make device tracker return a scoped vector. 456 // TODO(lipalani) - Make device tracker return a scoped vector.
455 device_tracker->GetAllSyncedDeviceInfo(&devices); 457 device_tracker->GetAllSyncedDeviceInfo(&devices);
456 } 458 }
457 } 459 }
458 return devices.Pass(); 460 return devices.Pass();
459 } 461 }
460 462
461 std::string ProfileSyncService::GetLocalSyncCacheGUID() const {
462 if (HasSyncingBackend()) {
463 browser_sync::SyncedDeviceTracker* device_tracker =
464 backend_->GetSyncedDeviceTracker();
465 if (device_tracker) {
466 return device_tracker->cache_guid();
467 }
468 }
469 return std::string();
470 }
471
472 // Notifies the observer of any device info changes. 463 // Notifies the observer of any device info changes.
473 void ProfileSyncService::AddObserverForDeviceInfoChange( 464 void ProfileSyncService::AddObserverForDeviceInfoChange(
474 browser_sync::SyncedDeviceTracker::Observer* observer) { 465 browser_sync::SyncedDeviceTracker::Observer* observer) {
475 if (HasSyncingBackend()) { 466 if (HasSyncingBackend()) {
476 browser_sync::SyncedDeviceTracker* device_tracker = 467 browser_sync::SyncedDeviceTracker* device_tracker =
477 backend_->GetSyncedDeviceTracker(); 468 backend_->GetSyncedDeviceTracker();
478 if (device_tracker) { 469 if (device_tracker) {
479 device_tracker->AddObserver(observer); 470 device_tracker->AddObserver(observer);
480 } 471 }
481 } 472 }
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 DCHECK(FirstSetupInProgress()); 1052 DCHECK(FirstSetupInProgress());
1062 } 1053 }
1063 1054
1064 NotifyObservers(); 1055 NotifyObservers();
1065 } 1056 }
1066 1057
1067 void ProfileSyncService::OnBackendInitialized( 1058 void ProfileSyncService::OnBackendInitialized(
1068 const syncer::WeakHandle<syncer::JsBackend>& js_backend, 1059 const syncer::WeakHandle<syncer::JsBackend>& js_backend,
1069 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& 1060 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
1070 debug_info_listener, 1061 debug_info_listener,
1062 const std::string& cache_guid,
1071 bool success) { 1063 bool success) {
1072 UpdateBackendInitUMA(success); 1064 UpdateBackendInitUMA(success);
1073 1065
1074 if (!success) { 1066 if (!success) {
1075 // Something went unexpectedly wrong. Play it safe: stop syncing at once 1067 // Something went unexpectedly wrong. Play it safe: stop syncing at once
1076 // and surface error UI to alert the user sync has stopped. 1068 // and surface error UI to alert the user sync has stopped.
1077 // Keep the directory around for now so that on restart we will retry 1069 // Keep the directory around for now so that on restart we will retry
1078 // again and potentially succeed in presence of transient file IO failures 1070 // again and potentially succeed in presence of transient file IO failures
1079 // or permissions issues, etc. 1071 // or permissions issues, etc.
1080 // 1072 //
1081 // TODO(rlarocque): Consider making this UnrecoverableError less special. 1073 // TODO(rlarocque): Consider making this UnrecoverableError less special.
1082 // Unlike every other UnrecoverableError, it does not delete our sync data. 1074 // Unlike every other UnrecoverableError, it does not delete our sync data.
1083 // This exception made sense at the time it was implemented, but our new 1075 // This exception made sense at the time it was implemented, but our new
1084 // directory corruption recovery mechanism makes it obsolete. By the time 1076 // directory corruption recovery mechanism makes it obsolete. By the time
1085 // we get here, we will have already tried and failed to delete the 1077 // we get here, we will have already tried and failed to delete the
1086 // directory. It would be no big deal if we tried to delete it again. 1078 // directory. It would be no big deal if we tried to delete it again.
1087 OnInternalUnrecoverableError(FROM_HERE, 1079 OnInternalUnrecoverableError(FROM_HERE,
1088 "BackendInitialize failure", 1080 "BackendInitialize failure",
1089 false, 1081 false,
1090 ERROR_REASON_BACKEND_INIT_FAILURE); 1082 ERROR_REASON_BACKEND_INIT_FAILURE);
1091 return; 1083 return;
1092 } 1084 }
1093 1085
1094 backend_initialized_ = true; 1086 backend_initialized_ = true;
1095 1087
1096 sync_js_controller_.AttachJsBackend(js_backend); 1088 sync_js_controller_.AttachJsBackend(js_backend);
1097 debug_info_listener_ = debug_info_listener; 1089 debug_info_listener_ = debug_info_listener;
1098 1090
1091 // Initialize local device info.
1092 local_device_->Initialize(cache_guid);
1093
1099 // Give the DataTypeControllers a handle to the now initialized backend 1094 // Give the DataTypeControllers a handle to the now initialized backend
1100 // as a UserShare. 1095 // as a UserShare.
1101 for (DataTypeController::TypeMap::iterator it = 1096 for (DataTypeController::TypeMap::iterator it =
1102 directory_data_type_controllers_.begin(); 1097 directory_data_type_controllers_.begin();
1103 it != directory_data_type_controllers_.end(); ++it) { 1098 it != directory_data_type_controllers_.end(); ++it) {
1104 it->second->OnUserShareReady(GetUserShare()); 1099 it->second->OnUserShareReady(GetUserShare());
1105 } 1100 }
1106 1101
1107 if (backend_mode_ == BACKUP || backend_mode_ == ROLLBACK) 1102 if (backend_mode_ == BACKUP || backend_mode_ == ROLLBACK)
1108 ConfigureDataTypeManager(); 1103 ConfigureDataTypeManager();
(...skipping 1481 matching lines...) Expand 10 before | Expand all | Expand 10 after
2590 } 2585 }
2591 return result; 2586 return result;
2592 } 2587 }
2593 2588
2594 void ProfileSyncService::StartStopBackupForTesting() { 2589 void ProfileSyncService::StartStopBackupForTesting() {
2595 if (backend_mode_ == BACKUP) 2590 if (backend_mode_ == BACKUP)
2596 ShutdownImpl(browser_sync::SyncBackendHost::STOP_AND_CLAIM_THREAD); 2591 ShutdownImpl(browser_sync::SyncBackendHost::STOP_AND_CLAIM_THREAD);
2597 else 2592 else
2598 backup_rollback_controller_.Start(base::TimeDelta()); 2593 backup_rollback_controller_.Start(base::TimeDelta());
2599 } 2594 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/profile_sync_service.h ('k') | chrome/browser/sync/profile_sync_service_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698