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

Side by Side Diff: components/sync/driver/sync_service_base.cc

Issue 2710623003: [sync] Clean up path generation for the local sync database. (Closed)
Patch Set: Fix non-windows bots. Created 3 years, 9 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/sync/driver/sync_service_base.h" 5 #include "components/sync/driver/sync_service_base.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/metrics/histogram_macros.h" 13 #include "base/metrics/histogram_macros.h"
14 #include "base/path_service.h" 14 #include "base/path_service.h"
15 #include "base/syslog_logging.h" 15 #include "base/syslog_logging.h"
16 #include "components/invalidation/public/invalidation_service.h" 16 #include "components/invalidation/public/invalidation_service.h"
17 #include "components/sync/base/report_unrecoverable_error.h" 17 #include "components/sync/base/report_unrecoverable_error.h"
18 #include "components/sync/device_info/local_device_info_provider.h" 18 #include "components/sync/device_info/local_device_info_provider.h"
19 #include "components/sync/driver/sync_driver_switches.h" 19 #include "components/sync/driver/sync_driver_switches.h"
20 #include "components/sync/engine/engine_components_factory_impl.h" 20 #include "components/sync/engine/engine_components_factory_impl.h"
21 21
22 namespace syncer { 22 namespace syncer {
23 23
24 namespace { 24 namespace {
25 25
26 const base::FilePath::CharType kSyncDataFolderName[] = 26 const base::FilePath::CharType kSyncDataFolderName[] =
27 FILE_PATH_LITERAL("Sync Data"); 27 FILE_PATH_LITERAL("Sync Data");
28 28
29 #if defined(OS_WIN)
30 const base::FilePath::CharType kLoopbackServerBackendFilename[] =
31 FILE_PATH_LITERAL("profile.pb");
32 #endif
33
34 EngineComponentsFactory::Switches EngineSwitchesFromCommandLine() { 29 EngineComponentsFactory::Switches EngineSwitchesFromCommandLine() {
35 EngineComponentsFactory::Switches factory_switches = { 30 EngineComponentsFactory::Switches factory_switches = {
36 EngineComponentsFactory::ENCRYPTION_KEYSTORE, 31 EngineComponentsFactory::ENCRYPTION_KEYSTORE,
37 EngineComponentsFactory::BACKOFF_NORMAL}; 32 EngineComponentsFactory::BACKOFF_NORMAL};
38 33
39 base::CommandLine* cl = base::CommandLine::ForCurrentProcess(); 34 base::CommandLine* cl = base::CommandLine::ForCurrentProcess();
40 if (cl->HasSwitch(switches::kSyncShortInitialRetryOverride)) { 35 if (cl->HasSwitch(switches::kSyncShortInitialRetryOverride)) {
41 factory_switches.backoff_override = 36 factory_switches.backoff_override =
42 EngineComponentsFactory::BACKOFF_SHORT_INITIAL_RETRY_OVERRIDE; 37 EngineComponentsFactory::BACKOFF_SHORT_INITIAL_RETRY_OVERRIDE;
43 } 38 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 params.http_factory_getter = MakeHttpPostProviderFactoryGetter(); 112 params.http_factory_getter = MakeHttpPostProviderFactoryGetter();
118 params.credentials = GetCredentials(); 113 params.credentials = GetCredentials();
119 invalidation::InvalidationService* invalidator = 114 invalidation::InvalidationService* invalidator =
120 sync_client_->GetInvalidationService(); 115 sync_client_->GetInvalidationService();
121 params.invalidator_client_id = 116 params.invalidator_client_id =
122 invalidator ? invalidator->GetInvalidatorClientId() : "", 117 invalidator ? invalidator->GetInvalidatorClientId() : "",
123 params.sync_manager_factory = base::MakeUnique<SyncManagerFactory>(); 118 params.sync_manager_factory = base::MakeUnique<SyncManagerFactory>();
124 // The first time we start up the engine we want to ensure we have a clean 119 // The first time we start up the engine we want to ensure we have a clean
125 // directory, so delete any old one that might be there. 120 // directory, so delete any old one that might be there.
126 params.delete_sync_data_folder = !IsFirstSetupComplete(); 121 params.delete_sync_data_folder = !IsFirstSetupComplete();
127 params.enable_local_sync_backend = 122 params.enable_local_sync_backend = sync_prefs_.IsLocalSyncEnabled();
128 GetLocalSyncConfig(&params.local_sync_backend_folder); 123 params.local_sync_backend_folder = sync_client_->GetLocalSyncBackendFolder();
129 params.restored_key_for_bootstrapping = 124 params.restored_key_for_bootstrapping =
130 sync_prefs_.GetEncryptionBootstrapToken(); 125 sync_prefs_.GetEncryptionBootstrapToken();
131 params.restored_keystore_key_for_bootstrapping = 126 params.restored_keystore_key_for_bootstrapping =
132 sync_prefs_.GetKeystoreEncryptionBootstrapToken(); 127 sync_prefs_.GetKeystoreEncryptionBootstrapToken();
133 params.engine_components_factory = 128 params.engine_components_factory =
134 base::MakeUnique<EngineComponentsFactoryImpl>( 129 base::MakeUnique<EngineComponentsFactoryImpl>(
135 EngineSwitchesFromCommandLine()); 130 EngineSwitchesFromCommandLine());
136 params.unrecoverable_error_handler = GetUnrecoverableErrorHandler(); 131 params.unrecoverable_error_handler = GetUnrecoverableErrorHandler();
137 params.report_unrecoverable_error_function = 132 params.report_unrecoverable_error_function =
138 base::Bind(ReportUnrecoverableError, channel_); 133 base::Bind(ReportUnrecoverableError, channel_);
139 params.saved_nigori_state = crypto_->TakeSavedNigoriState(); 134 params.saved_nigori_state = crypto_->TakeSavedNigoriState();
140 sync_prefs_.GetInvalidationVersions(&params.invalidation_versions); 135 sync_prefs_.GetInvalidationVersions(&params.invalidation_versions);
141 136
142 engine_->Initialize(std::move(params)); 137 engine_->Initialize(std::move(params));
143 } 138 }
144 139
145 bool SyncServiceBase::GetLocalSyncConfig(
146 base::FilePath* local_sync_backend_folder) const {
147 bool enable_local_sync_backend = false;
148 *local_sync_backend_folder = sync_prefs_.GetLocalSyncBackendDir();
149 #if defined(OS_WIN)
150 enable_local_sync_backend = sync_prefs_.IsLocalSyncEnabled();
151 UMA_HISTOGRAM_BOOLEAN("Sync.Local.Enabled", enable_local_sync_backend);
152 if (local_sync_backend_folder->empty()) {
153 // TODO(pastarmovj): Add DIR_ROAMING_USER_DATA to PathService to simplify
154 // this code and move the logic in its right place. See crbug/657810.
155 if (!base::PathService::Get(base::DIR_APP_DATA,
156 local_sync_backend_folder)) {
157 SYSLOG(WARNING) << "Local sync can not get the roaming profile folder.";
158 UMA_HISTOGRAM_BOOLEAN("Sync.Local.RoamingProfileUnavailable", false);
159 return false;
160 }
161 *local_sync_backend_folder = local_sync_backend_folder->Append(
162 FILE_PATH_LITERAL("Chrome/User Data"));
163 }
164 // This code as it is now will assume the same profile order is present on all
165 // machines, which is not a given. It is to be defined if only the Default
166 // profile should get this treatment or all profile as is the case now. The
167 // solution for now will be to assume profiles are created in the same order
168 // on all machines and in the future decide if only the Default one should be
169 // considered roamed.
170 // See http://crbug.com/674928.
171 *local_sync_backend_folder =
172 local_sync_backend_folder->Append(base_directory_.BaseName());
173 *local_sync_backend_folder =
174 local_sync_backend_folder->Append(kLoopbackServerBackendFilename);
175 #endif // defined(OS_WIN)
176 return enable_local_sync_backend;
177 }
178
179 void SyncServiceBase::ResetCryptoState() { 140 void SyncServiceBase::ResetCryptoState() {
180 crypto_ = base::MakeUnique<SyncServiceCrypto>( 141 crypto_ = base::MakeUnique<SyncServiceCrypto>(
181 base::BindRepeating(&SyncServiceBase::NotifyObservers, 142 base::BindRepeating(&SyncServiceBase::NotifyObservers,
182 base::Unretained(this)), 143 base::Unretained(this)),
183 base::BindRepeating(&SyncService::GetPreferredDataTypes, 144 base::BindRepeating(&SyncService::GetPreferredDataTypes,
184 base::Unretained(this)), 145 base::Unretained(this)),
185 &sync_prefs_); 146 &sync_prefs_);
186 } 147 }
187 148
188 } // namespace syncer 149 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/driver/sync_service_base.h ('k') | ios/chrome/browser/sync/ios_chrome_sync_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698