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); |
+ 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 { |