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

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 test issues with mocking of LocalDeviceInfoProvider 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 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 startup_controller_weak_factory_.GetWeakPtr(), 233 startup_controller_weak_factory_.GetWeakPtr(),
234 ROLLBACK)), 234 ROLLBACK)),
235 backend_mode_(IDLE), 235 backend_mode_(IDLE),
236 backup_start_delay_(base::TimeDelta::FromSeconds(kBackupStartDelay)), 236 backup_start_delay_(base::TimeDelta::FromSeconds(kBackupStartDelay)),
237 clear_browsing_data_(base::Bind(&ClearBrowsingData)) { 237 clear_browsing_data_(base::Bind(&ClearBrowsingData)) {
238 DCHECK(profile); 238 DCHECK(profile);
239 syncer::SyncableService::StartSyncFlare flare( 239 syncer::SyncableService::StartSyncFlare flare(
240 sync_start_util::GetFlareForSyncableService(profile->GetPath())); 240 sync_start_util::GetFlareForSyncableService(profile->GetPath()));
241 scoped_ptr<browser_sync::LocalSessionEventRouter> router( 241 scoped_ptr<browser_sync::LocalSessionEventRouter> router(
242 new NotificationServiceSessionsRouter(profile, flare)); 242 new NotificationServiceSessionsRouter(profile, flare));
243
244 DCHECK(factory);
245 local_device_ = factory->CreateLocalDeviceInfoProvider();
243 sessions_sync_manager_.reset( 246 sessions_sync_manager_.reset(
244 new SessionsSyncManager(profile, this, router.Pass())); 247 new SessionsSyncManager(profile, local_device_.get(), router.Pass()));
245 } 248 }
246 249
247 ProfileSyncService::~ProfileSyncService() { 250 ProfileSyncService::~ProfileSyncService() {
248 sync_prefs_.RemoveSyncPrefObserver(this); 251 sync_prefs_.RemoveSyncPrefObserver(this);
249 // Shutdown() should have been called before destruction. 252 // Shutdown() should have been called before destruction.
250 CHECK(!backend_initialized_); 253 CHECK(!backend_initialized_);
251 } 254 }
252 255
253 bool ProfileSyncService::IsSyncEnabledAndLoggedIn() { 256 bool ProfileSyncService::IsSyncEnabledAndLoggedIn() {
254 // Exit if sync is disabled. 257 // Exit if sync is disabled.
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 browser_sync::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() { 417 browser_sync::OpenTabsUIDelegate* ProfileSyncService::GetOpenTabsUIDelegate() {
415 if (!IsSessionsDataTypeControllerRunning()) 418 if (!IsSessionsDataTypeControllerRunning())
416 return NULL; 419 return NULL;
417 return sessions_sync_manager_.get(); 420 return sessions_sync_manager_.get();
418 } 421 }
419 422
420 browser_sync::FaviconCache* ProfileSyncService::GetFaviconCache() { 423 browser_sync::FaviconCache* ProfileSyncService::GetFaviconCache() {
421 return sessions_sync_manager_->GetFaviconCache(); 424 return sessions_sync_manager_->GetFaviconCache();
422 } 425 }
423 426
424 scoped_ptr<browser_sync::DeviceInfo> 427 browser_sync::SyncedWindowDelegatesGetter*
425 ProfileSyncService::GetLocalDeviceInfo() const { 428 ProfileSyncService::GetSyncedWindowDelegatesGetter() const {
426 if (HasSyncingBackend()) { 429 return sessions_sync_manager_->GetSyncedWindowDelegatesGetter();
427 browser_sync::SyncedDeviceTracker* device_tracker = 430 }
428 backend_->GetSyncedDeviceTracker(); 431
429 if (device_tracker) 432 browser_sync::LocalDeviceInfoProvider*
430 return device_tracker->ReadLocalDeviceInfo(); 433 ProfileSyncService::GetLocalDeviceInfoProvider() {
431 } 434 return local_device_.get();
432 return scoped_ptr<browser_sync::DeviceInfo>();
433 } 435 }
434 436
435 scoped_ptr<browser_sync::DeviceInfo> 437 scoped_ptr<browser_sync::DeviceInfo>
436 ProfileSyncService::GetDeviceInfo(const std::string& client_id) const { 438 ProfileSyncService::GetDeviceInfo(const std::string& client_id) const {
437 if (HasSyncingBackend()) { 439 if (HasSyncingBackend()) {
438 browser_sync::SyncedDeviceTracker* device_tracker = 440 browser_sync::SyncedDeviceTracker* device_tracker =
439 backend_->GetSyncedDeviceTracker(); 441 backend_->GetSyncedDeviceTracker();
440 if (device_tracker) 442 if (device_tracker)
441 return device_tracker->ReadDeviceInfo(client_id); 443 return device_tracker->ReadDeviceInfo(client_id);
442 } 444 }
443 return scoped_ptr<browser_sync::DeviceInfo>(); 445 return scoped_ptr<browser_sync::DeviceInfo>();
444 } 446 }
445 447
446 ScopedVector<browser_sync::DeviceInfo> 448 ScopedVector<browser_sync::DeviceInfo>
447 ProfileSyncService::GetAllSignedInDevices() const { 449 ProfileSyncService::GetAllSignedInDevices() const {
448 ScopedVector<browser_sync::DeviceInfo> devices; 450 ScopedVector<browser_sync::DeviceInfo> devices;
449 if (HasSyncingBackend()) { 451 if (HasSyncingBackend()) {
450 browser_sync::SyncedDeviceTracker* device_tracker = 452 browser_sync::SyncedDeviceTracker* device_tracker =
451 backend_->GetSyncedDeviceTracker(); 453 backend_->GetSyncedDeviceTracker();
452 if (device_tracker) { 454 if (device_tracker) {
453 // TODO(lipalani) - Make device tracker return a scoped vector. 455 // TODO(lipalani) - Make device tracker return a scoped vector.
454 device_tracker->GetAllSyncedDeviceInfo(&devices); 456 device_tracker->GetAllSyncedDeviceInfo(&devices);
455 } 457 }
456 } 458 }
457 return devices.Pass(); 459 return devices.Pass();
458 } 460 }
459 461
460 std::string ProfileSyncService::GetLocalSyncCacheGUID() const {
461 if (HasSyncingBackend()) {
462 browser_sync::SyncedDeviceTracker* device_tracker =
463 backend_->GetSyncedDeviceTracker();
464 if (device_tracker) {
465 return device_tracker->cache_guid();
466 }
467 }
468 return std::string();
469 }
470
471 // Notifies the observer of any device info changes. 462 // Notifies the observer of any device info changes.
472 void ProfileSyncService::AddObserverForDeviceInfoChange( 463 void ProfileSyncService::AddObserverForDeviceInfoChange(
473 browser_sync::SyncedDeviceTracker::Observer* observer) { 464 browser_sync::SyncedDeviceTracker::Observer* observer) {
474 if (HasSyncingBackend()) { 465 if (HasSyncingBackend()) {
475 browser_sync::SyncedDeviceTracker* device_tracker = 466 browser_sync::SyncedDeviceTracker* device_tracker =
476 backend_->GetSyncedDeviceTracker(); 467 backend_->GetSyncedDeviceTracker();
477 if (device_tracker) { 468 if (device_tracker) {
478 device_tracker->AddObserver(observer); 469 device_tracker->AddObserver(observer);
479 } 470 }
480 } 471 }
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 DCHECK(FirstSetupInProgress()); 1042 DCHECK(FirstSetupInProgress());
1052 } 1043 }
1053 1044
1054 NotifyObservers(); 1045 NotifyObservers();
1055 } 1046 }
1056 1047
1057 void ProfileSyncService::OnBackendInitialized( 1048 void ProfileSyncService::OnBackendInitialized(
1058 const syncer::WeakHandle<syncer::JsBackend>& js_backend, 1049 const syncer::WeakHandle<syncer::JsBackend>& js_backend,
1059 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>& 1050 const syncer::WeakHandle<syncer::DataTypeDebugInfoListener>&
1060 debug_info_listener, 1051 debug_info_listener,
1052 const std::string& cache_guid,
1061 bool success) { 1053 bool success) {
1062 UpdateBackendInitUMA(success); 1054 UpdateBackendInitUMA(success);
1063 1055
1064 if (!success) { 1056 if (!success) {
1065 // Something went unexpectedly wrong. Play it safe: stop syncing at once 1057 // Something went unexpectedly wrong. Play it safe: stop syncing at once
1066 // and surface error UI to alert the user sync has stopped. 1058 // and surface error UI to alert the user sync has stopped.
1067 // Keep the directory around for now so that on restart we will retry 1059 // Keep the directory around for now so that on restart we will retry
1068 // again and potentially succeed in presence of transient file IO failures 1060 // again and potentially succeed in presence of transient file IO failures
1069 // or permissions issues, etc. 1061 // or permissions issues, etc.
1070 // 1062 //
1071 // TODO(rlarocque): Consider making this UnrecoverableError less special. 1063 // TODO(rlarocque): Consider making this UnrecoverableError less special.
1072 // Unlike every other UnrecoverableError, it does not delete our sync data. 1064 // Unlike every other UnrecoverableError, it does not delete our sync data.
1073 // This exception made sense at the time it was implemented, but our new 1065 // This exception made sense at the time it was implemented, but our new
1074 // directory corruption recovery mechanism makes it obsolete. By the time 1066 // directory corruption recovery mechanism makes it obsolete. By the time
1075 // we get here, we will have already tried and failed to delete the 1067 // we get here, we will have already tried and failed to delete the
1076 // directory. It would be no big deal if we tried to delete it again. 1068 // directory. It would be no big deal if we tried to delete it again.
1077 OnInternalUnrecoverableError(FROM_HERE, 1069 OnInternalUnrecoverableError(FROM_HERE,
1078 "BackendInitialize failure", 1070 "BackendInitialize failure",
1079 false, 1071 false,
1080 ERROR_REASON_BACKEND_INIT_FAILURE); 1072 ERROR_REASON_BACKEND_INIT_FAILURE);
1081 return; 1073 return;
1082 } 1074 }
1083 1075
1084 backend_initialized_ = true; 1076 backend_initialized_ = true;
1085 1077
1086 sync_js_controller_.AttachJsBackend(js_backend); 1078 sync_js_controller_.AttachJsBackend(js_backend);
1087 debug_info_listener_ = debug_info_listener; 1079 debug_info_listener_ = debug_info_listener;
1088 1080
1081 // Initialize local device info.
1082 local_device_->Initialize(cache_guid);
1083
1089 // Give the DataTypeControllers a handle to the now initialized backend 1084 // Give the DataTypeControllers a handle to the now initialized backend
1090 // as a UserShare. 1085 // as a UserShare.
1091 for (DataTypeController::TypeMap::iterator it = 1086 for (DataTypeController::TypeMap::iterator it =
1092 directory_data_type_controllers_.begin(); 1087 directory_data_type_controllers_.begin();
1093 it != directory_data_type_controllers_.end(); ++it) { 1088 it != directory_data_type_controllers_.end(); ++it) {
1094 it->second->OnUserShareReady(GetUserShare()); 1089 it->second->OnUserShareReady(GetUserShare());
1095 } 1090 }
1096 1091
1097 if (backend_mode_ == BACKUP || backend_mode_ == ROLLBACK) 1092 if (backend_mode_ == BACKUP || backend_mode_ == ROLLBACK)
1098 ConfigureDataTypeManager(); 1093 ConfigureDataTypeManager();
(...skipping 1481 matching lines...) Expand 10 before | Expand all | Expand 10 after
2580 } 2575 }
2581 return result; 2576 return result;
2582 } 2577 }
2583 2578
2584 void ProfileSyncService::StartStopBackupForTesting() { 2579 void ProfileSyncService::StartStopBackupForTesting() {
2585 if (backend_mode_ == BACKUP) 2580 if (backend_mode_ == BACKUP)
2586 ShutdownImpl(browser_sync::SyncBackendHost::STOP_AND_CLAIM_THREAD); 2581 ShutdownImpl(browser_sync::SyncBackendHost::STOP_AND_CLAIM_THREAD);
2587 else 2582 else
2588 backup_rollback_controller_.Start(base::TimeDelta()); 2583 backup_rollback_controller_.Start(base::TimeDelta());
2589 } 2584 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698