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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.cc

Issue 1873683002: Convert //chrome/browser/sync_file_system from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_file_system/drive_backend/sync_engine_initializer. h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer. h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 largest_change_id_(0), 62 largest_change_id_(0),
63 weak_ptr_factory_(this) { 63 weak_ptr_factory_(this) {
64 DCHECK(sync_context); 64 DCHECK(sync_context);
65 } 65 }
66 66
67 SyncEngineInitializer::~SyncEngineInitializer() { 67 SyncEngineInitializer::~SyncEngineInitializer() {
68 if (!cancel_callback_.is_null()) 68 if (!cancel_callback_.is_null())
69 cancel_callback_.Run(); 69 cancel_callback_.Run();
70 } 70 }
71 71
72 void SyncEngineInitializer::RunPreflight(scoped_ptr<SyncTaskToken> token) { 72 void SyncEngineInitializer::RunPreflight(std::unique_ptr<SyncTaskToken> token) {
73 util::Log(logging::LOG_VERBOSE, FROM_HERE, "[Initialize] Start."); 73 util::Log(logging::LOG_VERBOSE, FROM_HERE, "[Initialize] Start.");
74 DCHECK(sync_context_); 74 DCHECK(sync_context_);
75 DCHECK(sync_context_->GetDriveService()); 75 DCHECK(sync_context_->GetDriveService());
76 76
77 // The metadata seems to have been already initialized. Just return with OK. 77 // The metadata seems to have been already initialized. Just return with OK.
78 if (sync_context_->GetMetadataDatabase()) { 78 if (sync_context_->GetMetadataDatabase()) {
79 util::Log(logging::LOG_VERBOSE, FROM_HERE, 79 util::Log(logging::LOG_VERBOSE, FROM_HERE,
80 "[Initialize] Already initialized."); 80 "[Initialize] Already initialized.");
81 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK); 81 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK);
82 return; 82 return;
83 } 83 }
84 84
85 SyncStatusCode status = SYNC_STATUS_FAILED; 85 SyncStatusCode status = SYNC_STATUS_FAILED;
86 scoped_ptr<MetadataDatabase> metadata_database = 86 std::unique_ptr<MetadataDatabase> metadata_database =
87 MetadataDatabase::Create(database_path_, env_override_, &status); 87 MetadataDatabase::Create(database_path_, env_override_, &status);
88 88
89 if (status != SYNC_STATUS_OK) { 89 if (status != SYNC_STATUS_OK) {
90 util::Log(logging::LOG_VERBOSE, FROM_HERE, 90 util::Log(logging::LOG_VERBOSE, FROM_HERE,
91 "[Initialize] Failed to initialize MetadataDatabase."); 91 "[Initialize] Failed to initialize MetadataDatabase.");
92 SyncTaskManager::NotifyTaskDone(std::move(token), status); 92 SyncTaskManager::NotifyTaskDone(std::move(token), status);
93 return; 93 return;
94 } 94 }
95 95
96 DCHECK(metadata_database); 96 DCHECK(metadata_database);
97 metadata_database_ = std::move(metadata_database); 97 metadata_database_ = std::move(metadata_database);
98 if (metadata_database_->HasSyncRoot() && 98 if (metadata_database_->HasSyncRoot() &&
99 !metadata_database_->NeedsSyncRootRevalidation()) { 99 !metadata_database_->NeedsSyncRootRevalidation()) {
100 util::Log(logging::LOG_VERBOSE, FROM_HERE, 100 util::Log(logging::LOG_VERBOSE, FROM_HERE,
101 "[Initialize] Found local cache of sync-root."); 101 "[Initialize] Found local cache of sync-root.");
102 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK); 102 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK);
103 return; 103 return;
104 } 104 }
105 105
106 GetAboutResource(std::move(token)); 106 GetAboutResource(std::move(token));
107 } 107 }
108 108
109 scoped_ptr<MetadataDatabase> SyncEngineInitializer::PassMetadataDatabase() { 109 std::unique_ptr<MetadataDatabase>
110 SyncEngineInitializer::PassMetadataDatabase() {
110 return std::move(metadata_database_); 111 return std::move(metadata_database_);
111 } 112 }
112 113
113 void SyncEngineInitializer::GetAboutResource( 114 void SyncEngineInitializer::GetAboutResource(
114 scoped_ptr<SyncTaskToken> token) { 115 std::unique_ptr<SyncTaskToken> token) {
115 set_used_network(true); 116 set_used_network(true);
116 sync_context_->GetDriveService()->GetAboutResource( 117 sync_context_->GetDriveService()->GetAboutResource(
117 base::Bind(&SyncEngineInitializer::DidGetAboutResource, 118 base::Bind(&SyncEngineInitializer::DidGetAboutResource,
118 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); 119 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
119 } 120 }
120 121
121 void SyncEngineInitializer::DidGetAboutResource( 122 void SyncEngineInitializer::DidGetAboutResource(
122 scoped_ptr<SyncTaskToken> token, 123 std::unique_ptr<SyncTaskToken> token,
123 google_apis::DriveApiErrorCode error, 124 google_apis::DriveApiErrorCode error,
124 scoped_ptr<google_apis::AboutResource> about_resource) { 125 std::unique_ptr<google_apis::AboutResource> about_resource) {
125 cancel_callback_.Reset(); 126 cancel_callback_.Reset();
126 127
127 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); 128 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error);
128 if (status != SYNC_STATUS_OK) { 129 if (status != SYNC_STATUS_OK) {
129 util::Log(logging::LOG_VERBOSE, FROM_HERE, 130 util::Log(logging::LOG_VERBOSE, FROM_HERE,
130 "[Initialize] Failed to get AboutResource."); 131 "[Initialize] Failed to get AboutResource.");
131 SyncTaskManager::NotifyTaskDone(std::move(token), status); 132 SyncTaskManager::NotifyTaskDone(std::move(token), status);
132 return; 133 return;
133 } 134 }
134 135
135 DCHECK(about_resource); 136 DCHECK(about_resource);
136 root_folder_id_ = about_resource->root_folder_id(); 137 root_folder_id_ = about_resource->root_folder_id();
137 largest_change_id_ = about_resource->largest_change_id(); 138 largest_change_id_ = about_resource->largest_change_id();
138 139
139 DCHECK(!root_folder_id_.empty()); 140 DCHECK(!root_folder_id_.empty());
140 FindSyncRoot(std::move(token)); 141 FindSyncRoot(std::move(token));
141 } 142 }
142 143
143 void SyncEngineInitializer::FindSyncRoot(scoped_ptr<SyncTaskToken> token) { 144 void SyncEngineInitializer::FindSyncRoot(std::unique_ptr<SyncTaskToken> token) {
144 if (find_sync_root_retry_count_++ >= kMaxRetry) { 145 if (find_sync_root_retry_count_++ >= kMaxRetry) {
145 util::Log(logging::LOG_VERBOSE, FROM_HERE, 146 util::Log(logging::LOG_VERBOSE, FROM_HERE,
146 "[Initialize] Reached max retry count."); 147 "[Initialize] Reached max retry count.");
147 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_FAILED); 148 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_FAILED);
148 return; 149 return;
149 } 150 }
150 151
151 set_used_network(true); 152 set_used_network(true);
152 cancel_callback_ = sync_context_->GetDriveService()->SearchByTitle( 153 cancel_callback_ = sync_context_->GetDriveService()->SearchByTitle(
153 kSyncRootFolderTitle, 154 kSyncRootFolderTitle,
154 std::string(), // parent_folder_id 155 std::string(), // parent_folder_id
155 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, 156 base::Bind(&SyncEngineInitializer::DidFindSyncRoot,
156 weak_ptr_factory_.GetWeakPtr(), 157 weak_ptr_factory_.GetWeakPtr(),
157 base::Passed(&token))); 158 base::Passed(&token)));
158 } 159 }
159 160
160 void SyncEngineInitializer::DidFindSyncRoot( 161 void SyncEngineInitializer::DidFindSyncRoot(
161 scoped_ptr<SyncTaskToken> token, 162 std::unique_ptr<SyncTaskToken> token,
162 google_apis::DriveApiErrorCode error, 163 google_apis::DriveApiErrorCode error,
163 scoped_ptr<google_apis::FileList> file_list) { 164 std::unique_ptr<google_apis::FileList> file_list) {
164 cancel_callback_.Reset(); 165 cancel_callback_.Reset();
165 166
166 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); 167 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error);
167 if (status != SYNC_STATUS_OK) { 168 if (status != SYNC_STATUS_OK) {
168 util::Log(logging::LOG_VERBOSE, FROM_HERE, 169 util::Log(logging::LOG_VERBOSE, FROM_HERE,
169 "[Initialize] Failed to find sync root."); 170 "[Initialize] Failed to find sync root.");
170 SyncTaskManager::NotifyTaskDone(std::move(token), status); 171 SyncTaskManager::NotifyTaskDone(std::move(token), status);
171 return; 172 return;
172 } 173 }
173 174
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 } 221 }
221 222
222 if (!HasNoParents(*sync_root_folder_)) { 223 if (!HasNoParents(*sync_root_folder_)) {
223 DetachSyncRoot(std::move(token)); 224 DetachSyncRoot(std::move(token));
224 return; 225 return;
225 } 226 }
226 227
227 ListAppRootFolders(std::move(token)); 228 ListAppRootFolders(std::move(token));
228 } 229 }
229 230
230 void SyncEngineInitializer::CreateSyncRoot(scoped_ptr<SyncTaskToken> token) { 231 void SyncEngineInitializer::CreateSyncRoot(
232 std::unique_ptr<SyncTaskToken> token) {
231 DCHECK(!sync_root_folder_); 233 DCHECK(!sync_root_folder_);
232 set_used_network(true); 234 set_used_network(true);
233 drive::AddNewDirectoryOptions options; 235 drive::AddNewDirectoryOptions options;
234 options.visibility = google_apis::drive::FILE_VISIBILITY_PRIVATE; 236 options.visibility = google_apis::drive::FILE_VISIBILITY_PRIVATE;
235 cancel_callback_ = sync_context_->GetDriveService()->AddNewDirectory( 237 cancel_callback_ = sync_context_->GetDriveService()->AddNewDirectory(
236 root_folder_id_, kSyncRootFolderTitle, options, 238 root_folder_id_, kSyncRootFolderTitle, options,
237 base::Bind(&SyncEngineInitializer::DidCreateSyncRoot, 239 base::Bind(&SyncEngineInitializer::DidCreateSyncRoot,
238 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); 240 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
239 } 241 }
240 242
241 void SyncEngineInitializer::DidCreateSyncRoot( 243 void SyncEngineInitializer::DidCreateSyncRoot(
242 scoped_ptr<SyncTaskToken> token, 244 std::unique_ptr<SyncTaskToken> token,
243 google_apis::DriveApiErrorCode error, 245 google_apis::DriveApiErrorCode error,
244 scoped_ptr<google_apis::FileResource> entry) { 246 std::unique_ptr<google_apis::FileResource> entry) {
245 DCHECK(!sync_root_folder_); 247 DCHECK(!sync_root_folder_);
246 cancel_callback_.Reset(); 248 cancel_callback_.Reset();
247 249
248 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); 250 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error);
249 if (status != SYNC_STATUS_OK) { 251 if (status != SYNC_STATUS_OK) {
250 util::Log(logging::LOG_VERBOSE, FROM_HERE, 252 util::Log(logging::LOG_VERBOSE, FROM_HERE,
251 "[Initialize] Failed to create sync root."); 253 "[Initialize] Failed to create sync root.");
252 SyncTaskManager::NotifyTaskDone(std::move(token), status); 254 SyncTaskManager::NotifyTaskDone(std::move(token), status);
253 return; 255 return;
254 } 256 }
255 257
256 FindSyncRoot(std::move(token)); 258 FindSyncRoot(std::move(token));
257 } 259 }
258 260
259 void SyncEngineInitializer::DetachSyncRoot(scoped_ptr<SyncTaskToken> token) { 261 void SyncEngineInitializer::DetachSyncRoot(
262 std::unique_ptr<SyncTaskToken> token) {
260 DCHECK(sync_root_folder_); 263 DCHECK(sync_root_folder_);
261 set_used_network(true); 264 set_used_network(true);
262 cancel_callback_ = 265 cancel_callback_ =
263 sync_context_->GetDriveService()->RemoveResourceFromDirectory( 266 sync_context_->GetDriveService()->RemoveResourceFromDirectory(
264 root_folder_id_, 267 root_folder_id_,
265 sync_root_folder_->file_id(), 268 sync_root_folder_->file_id(),
266 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot, 269 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot,
267 weak_ptr_factory_.GetWeakPtr(), 270 weak_ptr_factory_.GetWeakPtr(),
268 base::Passed(&token))); 271 base::Passed(&token)));
269 } 272 }
270 273
271 void SyncEngineInitializer::DidDetachSyncRoot( 274 void SyncEngineInitializer::DidDetachSyncRoot(
272 scoped_ptr<SyncTaskToken> token, 275 std::unique_ptr<SyncTaskToken> token,
273 google_apis::DriveApiErrorCode error) { 276 google_apis::DriveApiErrorCode error) {
274 cancel_callback_.Reset(); 277 cancel_callback_.Reset();
275 278
276 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); 279 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error);
277 if (status != SYNC_STATUS_OK) { 280 if (status != SYNC_STATUS_OK) {
278 util::Log(logging::LOG_VERBOSE, FROM_HERE, 281 util::Log(logging::LOG_VERBOSE, FROM_HERE,
279 "[Initialize] Failed to detach sync root."); 282 "[Initialize] Failed to detach sync root.");
280 SyncTaskManager::NotifyTaskDone(std::move(token), status); 283 SyncTaskManager::NotifyTaskDone(std::move(token), status);
281 return; 284 return;
282 } 285 }
283 286
284 ListAppRootFolders(std::move(token)); 287 ListAppRootFolders(std::move(token));
285 } 288 }
286 289
287 void SyncEngineInitializer::ListAppRootFolders( 290 void SyncEngineInitializer::ListAppRootFolders(
288 scoped_ptr<SyncTaskToken> token) { 291 std::unique_ptr<SyncTaskToken> token) {
289 DCHECK(sync_root_folder_); 292 DCHECK(sync_root_folder_);
290 set_used_network(true); 293 set_used_network(true);
291 cancel_callback_ = 294 cancel_callback_ =
292 sync_context_->GetDriveService()->GetFileListInDirectory( 295 sync_context_->GetDriveService()->GetFileListInDirectory(
293 sync_root_folder_->file_id(), 296 sync_root_folder_->file_id(),
294 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, 297 base::Bind(&SyncEngineInitializer::DidListAppRootFolders,
295 weak_ptr_factory_.GetWeakPtr(), 298 weak_ptr_factory_.GetWeakPtr(),
296 base::Passed(&token))); 299 base::Passed(&token)));
297 } 300 }
298 301
299 void SyncEngineInitializer::DidListAppRootFolders( 302 void SyncEngineInitializer::DidListAppRootFolders(
300 scoped_ptr<SyncTaskToken> token, 303 std::unique_ptr<SyncTaskToken> token,
301 google_apis::DriveApiErrorCode error, 304 google_apis::DriveApiErrorCode error,
302 scoped_ptr<google_apis::FileList> file_list) { 305 std::unique_ptr<google_apis::FileList> file_list) {
303 cancel_callback_.Reset(); 306 cancel_callback_.Reset();
304 307
305 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); 308 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error);
306 if (status != SYNC_STATUS_OK) { 309 if (status != SYNC_STATUS_OK) {
307 util::Log(logging::LOG_VERBOSE, FROM_HERE, 310 util::Log(logging::LOG_VERBOSE, FROM_HERE,
308 "[Initialize] Failed to get initial app-root folders."); 311 "[Initialize] Failed to get initial app-root folders.");
309 SyncTaskManager::NotifyTaskDone(std::move(token), status); 312 SyncTaskManager::NotifyTaskDone(std::move(token), status);
310 return; 313 return;
311 } 314 }
312 315
(...skipping 18 matching lines...) Expand all
331 file_list->next_link(), 334 file_list->next_link(),
332 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, 335 base::Bind(&SyncEngineInitializer::DidListAppRootFolders,
333 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); 336 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
334 return; 337 return;
335 } 338 }
336 339
337 PopulateDatabase(std::move(token)); 340 PopulateDatabase(std::move(token));
338 } 341 }
339 342
340 void SyncEngineInitializer::PopulateDatabase( 343 void SyncEngineInitializer::PopulateDatabase(
341 scoped_ptr<SyncTaskToken> token) { 344 std::unique_ptr<SyncTaskToken> token) {
342 DCHECK(sync_root_folder_); 345 DCHECK(sync_root_folder_);
343 SyncStatusCode status = metadata_database_->PopulateInitialData( 346 SyncStatusCode status = metadata_database_->PopulateInitialData(
344 largest_change_id_, *sync_root_folder_, app_root_folders_); 347 largest_change_id_, *sync_root_folder_, app_root_folders_);
345 if (status != SYNC_STATUS_OK) { 348 if (status != SYNC_STATUS_OK) {
346 util::Log(logging::LOG_VERBOSE, FROM_HERE, 349 util::Log(logging::LOG_VERBOSE, FROM_HERE,
347 "[Initialize] Failed to populate initial data" 350 "[Initialize] Failed to populate initial data"
348 " to MetadataDatabase."); 351 " to MetadataDatabase.");
349 SyncTaskManager::NotifyTaskDone(std::move(token), status); 352 SyncTaskManager::NotifyTaskDone(std::move(token), status);
350 return; 353 return;
351 } 354 }
352 355
353 util::Log(logging::LOG_VERBOSE, FROM_HERE, 356 util::Log(logging::LOG_VERBOSE, FROM_HERE,
354 "[Initialize] Completed successfully."); 357 "[Initialize] Completed successfully.");
355 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK); 358 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK);
356 } 359 }
357 360
358 } // namespace drive_backend 361 } // namespace drive_backend
359 } // namespace sync_file_system 362 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698