Chromium Code Reviews| Index: components/browser_sync/profile_sync_service.cc |
| diff --git a/components/browser_sync/profile_sync_service.cc b/components/browser_sync/profile_sync_service.cc |
| index 34924acfd233a60fea08d540a4569438d8379b58..9e63dfeb33a7c7b80180c7a2e40eb792d63a7bea 100644 |
| --- a/components/browser_sync/profile_sync_service.cc |
| +++ b/components/browser_sync/profile_sync_service.cc |
| @@ -148,9 +148,6 @@ const net::BackoffEntry::Policy kRequestAccessTokenBackoffPolicy = { |
| false, |
| }; |
| -const base::FilePath::CharType kLevelDBFolderName[] = |
| - FILE_PATH_LITERAL("LevelDB"); |
| - |
| } // namespace |
| ProfileSyncService::InitParams::InitParams() = default; |
| @@ -171,7 +168,6 @@ ProfileSyncService::ProfileSyncService(InitParams init_params) |
| network_time_update_callback_( |
| std::move(init_params.network_time_update_callback)), |
| url_request_context_(init_params.url_request_context), |
| - blocking_task_runner_(std::move(init_params.blocking_task_runner)), |
| is_first_time_sync_configure_(false), |
| engine_initialized_(false), |
| sync_disabled_by_admin_(false), |
| @@ -249,8 +245,11 @@ void ProfileSyncService::Initialize() { |
| // TODO(skym): Stop creating leveldb files when signed out. |
| // TODO(skym): Verify using AsUTF8Unsafe is okay here. Should work as long |
| // as the Local State file is guaranteed to be UTF-8. |
| + const syncer::ModelTypeStoreFactory& store_factory = |
| + GetModelTypeStoreFactory(syncer::DEVICE_INFO, base_directory_, |
| + sync_client_->GetBlockingPool()); |
| device_info_sync_bridge_ = base::MakeUnique<DeviceInfoSyncBridge>( |
| - local_device_.get(), GetModelTypeStoreFactory(syncer::DEVICE_INFO), |
| + local_device_.get(), store_factory, |
| base::BindRepeating( |
| &ModelTypeChangeProcessor::Create, |
| base::BindRepeating(&syncer::ReportUnrecoverableError, channel_))); |
| @@ -558,7 +557,7 @@ void ProfileSyncService::StartUpSlowEngineComponents() { |
| engine_.reset(sync_client_->GetSyncApiComponentFactory()->CreateSyncEngine( |
| debug_identifier_, invalidator, sync_prefs_.AsWeakPtr(), |
| - sync_data_folder_)); |
| + FormatSyncDataPath(base_directory_))); |
| // Clear any old errors the first time sync starts. |
| if (!IsFirstSetupComplete()) |
| @@ -694,7 +693,7 @@ void ProfileSyncService::ShutdownImpl(syncer::ShutdownReason reason) { |
| sync_thread_->task_runner()->PostTask( |
| FROM_HERE, |
| base::Bind(&syncer::syncable::Directory::DeleteDirectoryFiles, |
| - sync_data_folder_)); |
| + FormatSyncDataPath(base_directory_))); |
| } |
| return; |
| } |
| @@ -930,7 +929,7 @@ void ProfileSyncService::OnEngineInitialized( |
| // Initialize local device info. |
| local_device_->Initialize(cache_guid, signin_scoped_device_id, |
| - blocking_task_runner_); |
| + sync_client_->GetBlockingPool()); |
| if (protocol_event_observers_.might_have_observers()) { |
| engine_->RequestBufferedProtocolEventsAndEnableForwarding(); |
| @@ -1670,12 +1669,21 @@ void ProfileSyncService::SetPlatformSyncAllowedProvider( |
| platform_sync_allowed_provider_ = platform_sync_allowed_provider; |
| } |
| +// static |
| syncer::ModelTypeStoreFactory ProfileSyncService::GetModelTypeStoreFactory( |
| - ModelType type) { |
| - return base::Bind(&ModelTypeStore::CreateStore, type, |
| - sync_data_folder_.Append(base::FilePath(kLevelDBFolderName)) |
| - .AsUTF8Unsafe(), |
| - blocking_task_runner_); |
| + ModelType type, |
| + const base::FilePath& base_path, |
| + base::SequencedWorkerPool* blocking_pool) { |
| + // TODO(skym): Verify using AsUTF8Unsafe is okay here. Should work as long |
| + // as the Local State file is guaranteed to be UTF-8. |
| + std::string path = FormatSharedModelTypeStorePath(base_path).AsUTF8Unsafe(); |
| + base::SequencedWorkerPool::SequenceToken sequence_token = |
| + blocking_pool->GetNamedSequenceToken(path); |
|
skym
2017/03/08 19:28:15
Cool!
|
| + scoped_refptr<base::SequencedTaskRunner> task_runner = |
| + blocking_pool->GetSequencedTaskRunnerWithShutdownBehavior( |
| + blocking_pool->GetNamedSequenceToken(path), |
| + base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
| + return base::Bind(&ModelTypeStore::CreateStore, type, path, task_runner); |
| } |
| void ProfileSyncService::ConfigureDataTypeManager() { |
| @@ -2330,7 +2338,7 @@ void ProfileSyncService::FlushDirectory() const { |
| base::FilePath ProfileSyncService::GetDirectoryPathForTest() const { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| - return sync_data_folder_; |
| + return FormatSyncDataPath(base_directory_); |
| } |
| base::MessageLoop* ProfileSyncService::GetSyncLoopForTest() const { |