OLD | NEW |
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 "components/browser_sync/profile_sync_service.h" | 5 #include "components/browser_sync/profile_sync_service.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <cstddef> | 9 #include <cstddef> |
10 #include <map> | 10 #include <map> |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 // has no significant state, -1 to never discard. | 165 // has no significant state, -1 to never discard. |
166 -1, | 166 -1, |
167 | 167 |
168 // Don't use initial delay unless the last request was an error. | 168 // Don't use initial delay unless the last request was an error. |
169 false, | 169 false, |
170 }; | 170 }; |
171 | 171 |
172 const base::FilePath::CharType kLevelDBFolderName[] = | 172 const base::FilePath::CharType kLevelDBFolderName[] = |
173 FILE_PATH_LITERAL("LevelDB"); | 173 FILE_PATH_LITERAL("LevelDB"); |
174 | 174 |
175 // Perform the actual sync data folder deletion. | |
176 // This should only be called on the sync thread. | |
177 void DeleteSyncDataFolder(const base::FilePath& directory_path) { | |
178 if (base::DirectoryExists(directory_path)) { | |
179 if (!base::DeleteFile(directory_path, true)) | |
180 LOG(DFATAL) << "Could not delete the Sync Data folder."; | |
181 } | |
182 } | |
183 | |
184 } // namespace | 175 } // namespace |
185 | 176 |
186 ProfileSyncService::InitParams::InitParams() = default; | 177 ProfileSyncService::InitParams::InitParams() = default; |
187 ProfileSyncService::InitParams::InitParams(InitParams&& other) = default; | 178 ProfileSyncService::InitParams::InitParams(InitParams&& other) = default; |
188 ProfileSyncService::InitParams::~InitParams() = default; | 179 ProfileSyncService::InitParams::~InitParams() = default; |
189 | 180 |
190 ProfileSyncService::ProfileSyncService(InitParams init_params) | 181 ProfileSyncService::ProfileSyncService(InitParams init_params) |
191 : SyncServiceBase(std::move(init_params.sync_client), | 182 : SyncServiceBase(std::move(init_params.sync_client), |
192 std::move(init_params.signin_wrapper), | 183 std::move(init_params.signin_wrapper), |
193 init_params.channel, | 184 init_params.channel, |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 syncer::ModelTypeSet(syncer::SESSIONS))); | 272 syncer::ModelTypeSet(syncer::SESSIONS))); |
282 | 273 |
283 if (base::FeatureList::IsEnabled(switches::kSyncUSSDeviceInfo)) { | 274 if (base::FeatureList::IsEnabled(switches::kSyncUSSDeviceInfo)) { |
284 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner( | 275 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner( |
285 blocking_pool_->GetSequencedTaskRunnerWithShutdownBehavior( | 276 blocking_pool_->GetSequencedTaskRunnerWithShutdownBehavior( |
286 blocking_pool_->GetSequenceToken(), | 277 blocking_pool_->GetSequenceToken(), |
287 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); | 278 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
288 // TODO(skym): Stop creating leveldb files when signed out. | 279 // TODO(skym): Stop creating leveldb files when signed out. |
289 // TODO(skym): Verify using AsUTF8Unsafe is okay here. Should work as long | 280 // TODO(skym): Verify using AsUTF8Unsafe is okay here. Should work as long |
290 // as the Local State file is guaranteed to be UTF-8. | 281 // as the Local State file is guaranteed to be UTF-8. |
291 device_info_service_ = base::MakeUnique<DeviceInfoSyncBridge>( | 282 device_info_sync_bridge_ = base::MakeUnique<DeviceInfoSyncBridge>( |
292 local_device_.get(), | 283 local_device_.get(), |
293 base::Bind(&ModelTypeStore::CreateStore, syncer::DEVICE_INFO, | 284 base::Bind(&ModelTypeStore::CreateStore, syncer::DEVICE_INFO, |
294 directory_path_.Append(base::FilePath(kLevelDBFolderName)) | 285 sync_data_folder_.Append(base::FilePath(kLevelDBFolderName)) |
295 .AsUTF8Unsafe(), | 286 .AsUTF8Unsafe(), |
296 blocking_task_runner), | 287 blocking_task_runner), |
297 base::Bind(&ModelTypeChangeProcessor::Create)); | 288 base::Bind(&ModelTypeChangeProcessor::Create)); |
298 } else { | 289 } else { |
299 device_info_sync_service_ = | 290 device_info_sync_service_ = |
300 base::MakeUnique<DeviceInfoSyncService>(local_device_.get()); | 291 base::MakeUnique<DeviceInfoSyncService>(local_device_.get()); |
301 } | 292 } |
302 | 293 |
303 syncer::SyncApiComponentFactory::RegisterDataTypesMethod | 294 syncer::SyncApiComponentFactory::RegisterDataTypesMethod |
304 register_platform_types_callback = | 295 register_platform_types_callback = |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 } | 431 } |
441 | 432 |
442 sync_sessions::FaviconCache* ProfileSyncService::GetFaviconCache() { | 433 sync_sessions::FaviconCache* ProfileSyncService::GetFaviconCache() { |
443 DCHECK(thread_checker_.CalledOnValidThread()); | 434 DCHECK(thread_checker_.CalledOnValidThread()); |
444 return sessions_sync_manager_->GetFaviconCache(); | 435 return sessions_sync_manager_->GetFaviconCache(); |
445 } | 436 } |
446 | 437 |
447 syncer::DeviceInfoTracker* ProfileSyncService::GetDeviceInfoTracker() const { | 438 syncer::DeviceInfoTracker* ProfileSyncService::GetDeviceInfoTracker() const { |
448 DCHECK(thread_checker_.CalledOnValidThread()); | 439 DCHECK(thread_checker_.CalledOnValidThread()); |
449 // One of the two should always be non-null after initialization is done. | 440 // One of the two should always be non-null after initialization is done. |
450 if (device_info_service_) { | 441 if (device_info_sync_bridge_) { |
451 return device_info_service_.get(); | 442 return device_info_sync_bridge_.get(); |
452 } else { | 443 } else { |
453 return device_info_sync_service_.get(); | 444 return device_info_sync_service_.get(); |
454 } | 445 } |
455 } | 446 } |
456 | 447 |
457 syncer::LocalDeviceInfoProvider* | 448 syncer::LocalDeviceInfoProvider* |
458 ProfileSyncService::GetLocalDeviceInfoProvider() const { | 449 ProfileSyncService::GetLocalDeviceInfoProvider() const { |
459 DCHECK(thread_checker_.CalledOnValidThread()); | 450 DCHECK(thread_checker_.CalledOnValidThread()); |
460 return local_device_.get(); | 451 return local_device_.get(); |
461 } | 452 } |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
588 | 579 |
589 startup_controller_->OnDataTypeRequestsSyncStartup(type); | 580 startup_controller_->OnDataTypeRequestsSyncStartup(type); |
590 } | 581 } |
591 | 582 |
592 void ProfileSyncService::StartUpSlowEngineComponents() { | 583 void ProfileSyncService::StartUpSlowEngineComponents() { |
593 invalidation::InvalidationService* invalidator = | 584 invalidation::InvalidationService* invalidator = |
594 sync_client_->GetInvalidationService(); | 585 sync_client_->GetInvalidationService(); |
595 | 586 |
596 engine_.reset(sync_client_->GetSyncApiComponentFactory()->CreateSyncEngine( | 587 engine_.reset(sync_client_->GetSyncApiComponentFactory()->CreateSyncEngine( |
597 debug_identifier_, invalidator, sync_prefs_.AsWeakPtr(), | 588 debug_identifier_, invalidator, sync_prefs_.AsWeakPtr(), |
598 directory_path_)); | 589 sync_data_folder_)); |
599 | 590 |
600 // Clear any old errors the first time sync starts. | 591 // Clear any old errors the first time sync starts. |
601 if (!IsFirstSetupComplete()) | 592 if (!IsFirstSetupComplete()) |
602 ClearStaleErrors(); | 593 ClearStaleErrors(); |
603 | 594 |
604 InitializeEngine(); | 595 InitializeEngine(); |
605 | 596 |
606 UpdateFirstSyncTimePref(); | 597 UpdateFirstSyncTimePref(); |
607 | 598 |
608 ReportPreviousSessionMemoryWarningCount(); | 599 ReportPreviousSessionMemoryWarningCount(); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
721 if (sync_thread_) | 712 if (sync_thread_) |
722 sync_thread_->Stop(); | 713 sync_thread_->Stop(); |
723 } | 714 } |
724 | 715 |
725 void ProfileSyncService::ShutdownImpl(syncer::ShutdownReason reason) { | 716 void ProfileSyncService::ShutdownImpl(syncer::ShutdownReason reason) { |
726 if (!engine_) { | 717 if (!engine_) { |
727 if (reason == syncer::ShutdownReason::DISABLE_SYNC && sync_thread_) { | 718 if (reason == syncer::ShutdownReason::DISABLE_SYNC && sync_thread_) { |
728 // If the engine is already shut down when a DISABLE_SYNC happens, | 719 // If the engine is already shut down when a DISABLE_SYNC happens, |
729 // the data directory needs to be cleaned up here. | 720 // the data directory needs to be cleaned up here. |
730 sync_thread_->task_runner()->PostTask( | 721 sync_thread_->task_runner()->PostTask( |
731 FROM_HERE, base::Bind(&DeleteSyncDataFolder, directory_path_)); | 722 FROM_HERE, |
| 723 base::Bind(&syncer::syncable::Directory::DeleteDirectoryFiles, |
| 724 sync_data_folder_)); |
732 } | 725 } |
733 return; | 726 return; |
734 } | 727 } |
735 | 728 |
736 if (reason == syncer::ShutdownReason::STOP_SYNC || | 729 if (reason == syncer::ShutdownReason::STOP_SYNC || |
737 reason == syncer::ShutdownReason::DISABLE_SYNC) { | 730 reason == syncer::ShutdownReason::DISABLE_SYNC) { |
738 RemoveClientFromServer(); | 731 RemoveClientFromServer(); |
739 } | 732 } |
740 | 733 |
741 // First, we spin down the engine to stop change processing as soon as | 734 // First, we spin down the engine to stop change processing as soon as |
(...skipping 1733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2475 return sessions_sync_manager_.get(); | 2468 return sessions_sync_manager_.get(); |
2476 } | 2469 } |
2477 | 2470 |
2478 syncer::SyncableService* ProfileSyncService::GetDeviceInfoSyncableService() { | 2471 syncer::SyncableService* ProfileSyncService::GetDeviceInfoSyncableService() { |
2479 DCHECK(thread_checker_.CalledOnValidThread()); | 2472 DCHECK(thread_checker_.CalledOnValidThread()); |
2480 return device_info_sync_service_.get(); | 2473 return device_info_sync_service_.get(); |
2481 } | 2474 } |
2482 | 2475 |
2483 syncer::ModelTypeSyncBridge* ProfileSyncService::GetDeviceInfoSyncBridge() { | 2476 syncer::ModelTypeSyncBridge* ProfileSyncService::GetDeviceInfoSyncBridge() { |
2484 DCHECK(thread_checker_.CalledOnValidThread()); | 2477 DCHECK(thread_checker_.CalledOnValidThread()); |
2485 return device_info_service_.get(); | 2478 return device_info_sync_bridge_.get(); |
2486 } | 2479 } |
2487 | 2480 |
2488 syncer::SyncService::SyncTokenStatus ProfileSyncService::GetSyncTokenStatus() | 2481 syncer::SyncService::SyncTokenStatus ProfileSyncService::GetSyncTokenStatus() |
2489 const { | 2482 const { |
2490 DCHECK(thread_checker_.CalledOnValidThread()); | 2483 DCHECK(thread_checker_.CalledOnValidThread()); |
2491 SyncTokenStatus status; | 2484 SyncTokenStatus status; |
2492 status.connection_status_update_time = connection_status_update_time_; | 2485 status.connection_status_update_time = connection_status_update_time_; |
2493 status.connection_status = connection_status_; | 2486 status.connection_status = connection_status_; |
2494 status.token_request_time = token_request_time_; | 2487 status.token_request_time = token_request_time_; |
2495 status.token_receive_time = token_receive_time_; | 2488 status.token_receive_time = token_receive_time_; |
(...skipping 25 matching lines...) Expand all Loading... |
2521 void ProfileSyncService::FlushDirectory() const { | 2514 void ProfileSyncService::FlushDirectory() const { |
2522 DCHECK(thread_checker_.CalledOnValidThread()); | 2515 DCHECK(thread_checker_.CalledOnValidThread()); |
2523 // engine_initialized_ implies engine_ isn't null and the manager exists. | 2516 // engine_initialized_ implies engine_ isn't null and the manager exists. |
2524 // If sync is not initialized yet, we fail silently. | 2517 // If sync is not initialized yet, we fail silently. |
2525 if (engine_initialized_) | 2518 if (engine_initialized_) |
2526 engine_->FlushDirectory(); | 2519 engine_->FlushDirectory(); |
2527 } | 2520 } |
2528 | 2521 |
2529 base::FilePath ProfileSyncService::GetDirectoryPathForTest() const { | 2522 base::FilePath ProfileSyncService::GetDirectoryPathForTest() const { |
2530 DCHECK(thread_checker_.CalledOnValidThread()); | 2523 DCHECK(thread_checker_.CalledOnValidThread()); |
2531 return directory_path_; | 2524 return sync_data_folder_; |
2532 } | 2525 } |
2533 | 2526 |
2534 base::MessageLoop* ProfileSyncService::GetSyncLoopForTest() const { | 2527 base::MessageLoop* ProfileSyncService::GetSyncLoopForTest() const { |
2535 DCHECK(thread_checker_.CalledOnValidThread()); | 2528 DCHECK(thread_checker_.CalledOnValidThread()); |
2536 if (sync_thread_) { | 2529 if (sync_thread_) { |
2537 return sync_thread_->message_loop(); | 2530 return sync_thread_->message_loop(); |
2538 } else { | 2531 } else { |
2539 return nullptr; | 2532 return nullptr; |
2540 } | 2533 } |
2541 } | 2534 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2614 | 2607 |
2615 DCHECK(startup_controller_->IsSetupInProgress()); | 2608 DCHECK(startup_controller_->IsSetupInProgress()); |
2616 startup_controller_->SetSetupInProgress(false); | 2609 startup_controller_->SetSetupInProgress(false); |
2617 | 2610 |
2618 if (IsEngineInitialized()) | 2611 if (IsEngineInitialized()) |
2619 ReconfigureDatatypeManager(); | 2612 ReconfigureDatatypeManager(); |
2620 NotifyObservers(); | 2613 NotifyObservers(); |
2621 } | 2614 } |
2622 | 2615 |
2623 } // namespace browser_sync | 2616 } // namespace browser_sync |
OLD | NEW |