OLD | NEW |
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 | 9 |
9 #include "base/bind.h" | 10 #include "base/bind.h" |
10 #include "base/callback.h" | 11 #include "base/callback.h" |
11 #include "base/logging.h" | 12 #include "base/logging.h" |
12 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.
h" | 13 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.
h" |
13 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h" | 14 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h" |
14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" | 15 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
15 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" | 16 #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" |
16 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" | 17 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" |
17 #include "chrome/browser/sync_file_system/drive_backend/sync_task_token.h" | 18 #include "chrome/browser/sync_file_system/drive_backend/sync_task_token.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 | 71 |
71 void SyncEngineInitializer::RunPreflight(scoped_ptr<SyncTaskToken> token) { | 72 void SyncEngineInitializer::RunPreflight(scoped_ptr<SyncTaskToken> token) { |
72 util::Log(logging::LOG_VERBOSE, FROM_HERE, "[Initialize] Start."); | 73 util::Log(logging::LOG_VERBOSE, FROM_HERE, "[Initialize] Start."); |
73 DCHECK(sync_context_); | 74 DCHECK(sync_context_); |
74 DCHECK(sync_context_->GetDriveService()); | 75 DCHECK(sync_context_->GetDriveService()); |
75 | 76 |
76 // 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. |
77 if (sync_context_->GetMetadataDatabase()) { | 78 if (sync_context_->GetMetadataDatabase()) { |
78 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 79 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
79 "[Initialize] Already initialized."); | 80 "[Initialize] Already initialized."); |
80 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_OK); | 81 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK); |
81 return; | 82 return; |
82 } | 83 } |
83 | 84 |
84 SyncStatusCode status = SYNC_STATUS_FAILED; | 85 SyncStatusCode status = SYNC_STATUS_FAILED; |
85 scoped_ptr<MetadataDatabase> metadata_database = | 86 scoped_ptr<MetadataDatabase> metadata_database = |
86 MetadataDatabase::Create(database_path_, env_override_, &status); | 87 MetadataDatabase::Create(database_path_, env_override_, &status); |
87 | 88 |
88 if (status != SYNC_STATUS_OK) { | 89 if (status != SYNC_STATUS_OK) { |
89 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 90 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
90 "[Initialize] Failed to initialize MetadataDatabase."); | 91 "[Initialize] Failed to initialize MetadataDatabase."); |
91 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 92 SyncTaskManager::NotifyTaskDone(std::move(token), status); |
92 return; | 93 return; |
93 } | 94 } |
94 | 95 |
95 DCHECK(metadata_database); | 96 DCHECK(metadata_database); |
96 metadata_database_ = metadata_database.Pass(); | 97 metadata_database_ = std::move(metadata_database); |
97 if (metadata_database_->HasSyncRoot() && | 98 if (metadata_database_->HasSyncRoot() && |
98 !metadata_database_->NeedsSyncRootRevalidation()) { | 99 !metadata_database_->NeedsSyncRootRevalidation()) { |
99 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 100 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
100 "[Initialize] Found local cache of sync-root."); | 101 "[Initialize] Found local cache of sync-root."); |
101 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_OK); | 102 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK); |
102 return; | 103 return; |
103 } | 104 } |
104 | 105 |
105 GetAboutResource(token.Pass()); | 106 GetAboutResource(std::move(token)); |
106 } | 107 } |
107 | 108 |
108 scoped_ptr<MetadataDatabase> SyncEngineInitializer::PassMetadataDatabase() { | 109 scoped_ptr<MetadataDatabase> SyncEngineInitializer::PassMetadataDatabase() { |
109 return metadata_database_.Pass(); | 110 return std::move(metadata_database_); |
110 } | 111 } |
111 | 112 |
112 void SyncEngineInitializer::GetAboutResource( | 113 void SyncEngineInitializer::GetAboutResource( |
113 scoped_ptr<SyncTaskToken> token) { | 114 scoped_ptr<SyncTaskToken> token) { |
114 set_used_network(true); | 115 set_used_network(true); |
115 sync_context_->GetDriveService()->GetAboutResource( | 116 sync_context_->GetDriveService()->GetAboutResource( |
116 base::Bind(&SyncEngineInitializer::DidGetAboutResource, | 117 base::Bind(&SyncEngineInitializer::DidGetAboutResource, |
117 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); | 118 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); |
118 } | 119 } |
119 | 120 |
120 void SyncEngineInitializer::DidGetAboutResource( | 121 void SyncEngineInitializer::DidGetAboutResource( |
121 scoped_ptr<SyncTaskToken> token, | 122 scoped_ptr<SyncTaskToken> token, |
122 google_apis::DriveApiErrorCode error, | 123 google_apis::DriveApiErrorCode error, |
123 scoped_ptr<google_apis::AboutResource> about_resource) { | 124 scoped_ptr<google_apis::AboutResource> about_resource) { |
124 cancel_callback_.Reset(); | 125 cancel_callback_.Reset(); |
125 | 126 |
126 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); | 127 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
127 if (status != SYNC_STATUS_OK) { | 128 if (status != SYNC_STATUS_OK) { |
128 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 129 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
129 "[Initialize] Failed to get AboutResource."); | 130 "[Initialize] Failed to get AboutResource."); |
130 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 131 SyncTaskManager::NotifyTaskDone(std::move(token), status); |
131 return; | 132 return; |
132 } | 133 } |
133 | 134 |
134 DCHECK(about_resource); | 135 DCHECK(about_resource); |
135 root_folder_id_ = about_resource->root_folder_id(); | 136 root_folder_id_ = about_resource->root_folder_id(); |
136 largest_change_id_ = about_resource->largest_change_id(); | 137 largest_change_id_ = about_resource->largest_change_id(); |
137 | 138 |
138 DCHECK(!root_folder_id_.empty()); | 139 DCHECK(!root_folder_id_.empty()); |
139 FindSyncRoot(token.Pass()); | 140 FindSyncRoot(std::move(token)); |
140 } | 141 } |
141 | 142 |
142 void SyncEngineInitializer::FindSyncRoot(scoped_ptr<SyncTaskToken> token) { | 143 void SyncEngineInitializer::FindSyncRoot(scoped_ptr<SyncTaskToken> token) { |
143 if (find_sync_root_retry_count_++ >= kMaxRetry) { | 144 if (find_sync_root_retry_count_++ >= kMaxRetry) { |
144 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 145 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
145 "[Initialize] Reached max retry count."); | 146 "[Initialize] Reached max retry count."); |
146 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_FAILED); | 147 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_FAILED); |
147 return; | 148 return; |
148 } | 149 } |
149 | 150 |
150 set_used_network(true); | 151 set_used_network(true); |
151 cancel_callback_ = sync_context_->GetDriveService()->SearchByTitle( | 152 cancel_callback_ = sync_context_->GetDriveService()->SearchByTitle( |
152 kSyncRootFolderTitle, | 153 kSyncRootFolderTitle, |
153 std::string(), // parent_folder_id | 154 std::string(), // parent_folder_id |
154 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, | 155 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, |
155 weak_ptr_factory_.GetWeakPtr(), | 156 weak_ptr_factory_.GetWeakPtr(), |
156 base::Passed(&token))); | 157 base::Passed(&token))); |
157 } | 158 } |
158 | 159 |
159 void SyncEngineInitializer::DidFindSyncRoot( | 160 void SyncEngineInitializer::DidFindSyncRoot( |
160 scoped_ptr<SyncTaskToken> token, | 161 scoped_ptr<SyncTaskToken> token, |
161 google_apis::DriveApiErrorCode error, | 162 google_apis::DriveApiErrorCode error, |
162 scoped_ptr<google_apis::FileList> file_list) { | 163 scoped_ptr<google_apis::FileList> file_list) { |
163 cancel_callback_.Reset(); | 164 cancel_callback_.Reset(); |
164 | 165 |
165 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); | 166 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
166 if (status != SYNC_STATUS_OK) { | 167 if (status != SYNC_STATUS_OK) { |
167 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 168 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
168 "[Initialize] Failed to find sync root."); | 169 "[Initialize] Failed to find sync root."); |
169 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 170 SyncTaskManager::NotifyTaskDone(std::move(token), status); |
170 return; | 171 return; |
171 } | 172 } |
172 | 173 |
173 if (!file_list) { | 174 if (!file_list) { |
174 NOTREACHED(); | 175 NOTREACHED(); |
175 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 176 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
176 "[Initialize] Got invalid resource list."); | 177 "[Initialize] Got invalid resource list."); |
177 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_FAILED); | 178 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_FAILED); |
178 return; | 179 return; |
179 } | 180 } |
180 | 181 |
181 ScopedVector<google_apis::FileResource>* items = file_list->mutable_items(); | 182 ScopedVector<google_apis::FileResource>* items = file_list->mutable_items(); |
182 for (ScopedVector<google_apis::FileResource>::iterator itr = items->begin(); | 183 for (ScopedVector<google_apis::FileResource>::iterator itr = items->begin(); |
183 itr != items->end(); ++itr) { | 184 itr != items->end(); ++itr) { |
184 google_apis::FileResource* entry = *itr; | 185 google_apis::FileResource* entry = *itr; |
185 | 186 |
186 // Ignore deleted folder. | 187 // Ignore deleted folder. |
187 if (entry->labels().is_trashed()) | 188 if (entry->labels().is_trashed()) |
(...skipping 19 matching lines...) Expand all Loading... |
207 if (!file_list->next_link().is_empty()) { | 208 if (!file_list->next_link().is_empty()) { |
208 cancel_callback_ = sync_context_->GetDriveService()->GetRemainingFileList( | 209 cancel_callback_ = sync_context_->GetDriveService()->GetRemainingFileList( |
209 file_list->next_link(), | 210 file_list->next_link(), |
210 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, | 211 base::Bind(&SyncEngineInitializer::DidFindSyncRoot, |
211 weak_ptr_factory_.GetWeakPtr(), | 212 weak_ptr_factory_.GetWeakPtr(), |
212 base::Passed(&token))); | 213 base::Passed(&token))); |
213 return; | 214 return; |
214 } | 215 } |
215 | 216 |
216 if (!sync_root_folder_) { | 217 if (!sync_root_folder_) { |
217 CreateSyncRoot(token.Pass()); | 218 CreateSyncRoot(std::move(token)); |
218 return; | 219 return; |
219 } | 220 } |
220 | 221 |
221 if (!HasNoParents(*sync_root_folder_)) { | 222 if (!HasNoParents(*sync_root_folder_)) { |
222 DetachSyncRoot(token.Pass()); | 223 DetachSyncRoot(std::move(token)); |
223 return; | 224 return; |
224 } | 225 } |
225 | 226 |
226 ListAppRootFolders(token.Pass()); | 227 ListAppRootFolders(std::move(token)); |
227 } | 228 } |
228 | 229 |
229 void SyncEngineInitializer::CreateSyncRoot(scoped_ptr<SyncTaskToken> token) { | 230 void SyncEngineInitializer::CreateSyncRoot(scoped_ptr<SyncTaskToken> token) { |
230 DCHECK(!sync_root_folder_); | 231 DCHECK(!sync_root_folder_); |
231 set_used_network(true); | 232 set_used_network(true); |
232 drive::AddNewDirectoryOptions options; | 233 drive::AddNewDirectoryOptions options; |
233 options.visibility = google_apis::drive::FILE_VISIBILITY_PRIVATE; | 234 options.visibility = google_apis::drive::FILE_VISIBILITY_PRIVATE; |
234 cancel_callback_ = sync_context_->GetDriveService()->AddNewDirectory( | 235 cancel_callback_ = sync_context_->GetDriveService()->AddNewDirectory( |
235 root_folder_id_, kSyncRootFolderTitle, options, | 236 root_folder_id_, kSyncRootFolderTitle, options, |
236 base::Bind(&SyncEngineInitializer::DidCreateSyncRoot, | 237 base::Bind(&SyncEngineInitializer::DidCreateSyncRoot, |
237 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); | 238 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); |
238 } | 239 } |
239 | 240 |
240 void SyncEngineInitializer::DidCreateSyncRoot( | 241 void SyncEngineInitializer::DidCreateSyncRoot( |
241 scoped_ptr<SyncTaskToken> token, | 242 scoped_ptr<SyncTaskToken> token, |
242 google_apis::DriveApiErrorCode error, | 243 google_apis::DriveApiErrorCode error, |
243 scoped_ptr<google_apis::FileResource> entry) { | 244 scoped_ptr<google_apis::FileResource> entry) { |
244 DCHECK(!sync_root_folder_); | 245 DCHECK(!sync_root_folder_); |
245 cancel_callback_.Reset(); | 246 cancel_callback_.Reset(); |
246 | 247 |
247 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); | 248 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
248 if (status != SYNC_STATUS_OK) { | 249 if (status != SYNC_STATUS_OK) { |
249 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 250 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
250 "[Initialize] Failed to create sync root."); | 251 "[Initialize] Failed to create sync root."); |
251 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 252 SyncTaskManager::NotifyTaskDone(std::move(token), status); |
252 return; | 253 return; |
253 } | 254 } |
254 | 255 |
255 FindSyncRoot(token.Pass()); | 256 FindSyncRoot(std::move(token)); |
256 } | 257 } |
257 | 258 |
258 void SyncEngineInitializer::DetachSyncRoot(scoped_ptr<SyncTaskToken> token) { | 259 void SyncEngineInitializer::DetachSyncRoot(scoped_ptr<SyncTaskToken> token) { |
259 DCHECK(sync_root_folder_); | 260 DCHECK(sync_root_folder_); |
260 set_used_network(true); | 261 set_used_network(true); |
261 cancel_callback_ = | 262 cancel_callback_ = |
262 sync_context_->GetDriveService()->RemoveResourceFromDirectory( | 263 sync_context_->GetDriveService()->RemoveResourceFromDirectory( |
263 root_folder_id_, | 264 root_folder_id_, |
264 sync_root_folder_->file_id(), | 265 sync_root_folder_->file_id(), |
265 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot, | 266 base::Bind(&SyncEngineInitializer::DidDetachSyncRoot, |
266 weak_ptr_factory_.GetWeakPtr(), | 267 weak_ptr_factory_.GetWeakPtr(), |
267 base::Passed(&token))); | 268 base::Passed(&token))); |
268 } | 269 } |
269 | 270 |
270 void SyncEngineInitializer::DidDetachSyncRoot( | 271 void SyncEngineInitializer::DidDetachSyncRoot( |
271 scoped_ptr<SyncTaskToken> token, | 272 scoped_ptr<SyncTaskToken> token, |
272 google_apis::DriveApiErrorCode error) { | 273 google_apis::DriveApiErrorCode error) { |
273 cancel_callback_.Reset(); | 274 cancel_callback_.Reset(); |
274 | 275 |
275 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); | 276 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
276 if (status != SYNC_STATUS_OK) { | 277 if (status != SYNC_STATUS_OK) { |
277 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 278 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
278 "[Initialize] Failed to detach sync root."); | 279 "[Initialize] Failed to detach sync root."); |
279 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 280 SyncTaskManager::NotifyTaskDone(std::move(token), status); |
280 return; | 281 return; |
281 } | 282 } |
282 | 283 |
283 ListAppRootFolders(token.Pass()); | 284 ListAppRootFolders(std::move(token)); |
284 } | 285 } |
285 | 286 |
286 void SyncEngineInitializer::ListAppRootFolders( | 287 void SyncEngineInitializer::ListAppRootFolders( |
287 scoped_ptr<SyncTaskToken> token) { | 288 scoped_ptr<SyncTaskToken> token) { |
288 DCHECK(sync_root_folder_); | 289 DCHECK(sync_root_folder_); |
289 set_used_network(true); | 290 set_used_network(true); |
290 cancel_callback_ = | 291 cancel_callback_ = |
291 sync_context_->GetDriveService()->GetFileListInDirectory( | 292 sync_context_->GetDriveService()->GetFileListInDirectory( |
292 sync_root_folder_->file_id(), | 293 sync_root_folder_->file_id(), |
293 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, | 294 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, |
294 weak_ptr_factory_.GetWeakPtr(), | 295 weak_ptr_factory_.GetWeakPtr(), |
295 base::Passed(&token))); | 296 base::Passed(&token))); |
296 } | 297 } |
297 | 298 |
298 void SyncEngineInitializer::DidListAppRootFolders( | 299 void SyncEngineInitializer::DidListAppRootFolders( |
299 scoped_ptr<SyncTaskToken> token, | 300 scoped_ptr<SyncTaskToken> token, |
300 google_apis::DriveApiErrorCode error, | 301 google_apis::DriveApiErrorCode error, |
301 scoped_ptr<google_apis::FileList> file_list) { | 302 scoped_ptr<google_apis::FileList> file_list) { |
302 cancel_callback_.Reset(); | 303 cancel_callback_.Reset(); |
303 | 304 |
304 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); | 305 SyncStatusCode status = DriveApiErrorCodeToSyncStatusCode(error); |
305 if (status != SYNC_STATUS_OK) { | 306 if (status != SYNC_STATUS_OK) { |
306 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 307 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
307 "[Initialize] Failed to get initial app-root folders."); | 308 "[Initialize] Failed to get initial app-root folders."); |
308 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 309 SyncTaskManager::NotifyTaskDone(std::move(token), status); |
309 return; | 310 return; |
310 } | 311 } |
311 | 312 |
312 if (!file_list) { | 313 if (!file_list) { |
313 NOTREACHED(); | 314 NOTREACHED(); |
314 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 315 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
315 "[Initialize] Got invalid initial app-root list."); | 316 "[Initialize] Got invalid initial app-root list."); |
316 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_FAILED); | 317 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_FAILED); |
317 return; | 318 return; |
318 } | 319 } |
319 | 320 |
320 ScopedVector<google_apis::FileResource>* new_entries = | 321 ScopedVector<google_apis::FileResource>* new_entries = |
321 file_list->mutable_items(); | 322 file_list->mutable_items(); |
322 app_root_folders_.insert(app_root_folders_.end(), | 323 app_root_folders_.insert(app_root_folders_.end(), |
323 new_entries->begin(), new_entries->end()); | 324 new_entries->begin(), new_entries->end()); |
324 new_entries->weak_clear(); | 325 new_entries->weak_clear(); |
325 | 326 |
326 set_used_network(true); | 327 set_used_network(true); |
327 if (!file_list->next_link().is_empty()) { | 328 if (!file_list->next_link().is_empty()) { |
328 cancel_callback_ = | 329 cancel_callback_ = |
329 sync_context_->GetDriveService()->GetRemainingFileList( | 330 sync_context_->GetDriveService()->GetRemainingFileList( |
330 file_list->next_link(), | 331 file_list->next_link(), |
331 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, | 332 base::Bind(&SyncEngineInitializer::DidListAppRootFolders, |
332 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); | 333 weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); |
333 return; | 334 return; |
334 } | 335 } |
335 | 336 |
336 PopulateDatabase(token.Pass()); | 337 PopulateDatabase(std::move(token)); |
337 } | 338 } |
338 | 339 |
339 void SyncEngineInitializer::PopulateDatabase( | 340 void SyncEngineInitializer::PopulateDatabase( |
340 scoped_ptr<SyncTaskToken> token) { | 341 scoped_ptr<SyncTaskToken> token) { |
341 DCHECK(sync_root_folder_); | 342 DCHECK(sync_root_folder_); |
342 SyncStatusCode status = metadata_database_->PopulateInitialData( | 343 SyncStatusCode status = metadata_database_->PopulateInitialData( |
343 largest_change_id_, *sync_root_folder_, app_root_folders_); | 344 largest_change_id_, *sync_root_folder_, app_root_folders_); |
344 if (status != SYNC_STATUS_OK) { | 345 if (status != SYNC_STATUS_OK) { |
345 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 346 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
346 "[Initialize] Failed to populate initial data" | 347 "[Initialize] Failed to populate initial data" |
347 " to MetadataDatabase."); | 348 " to MetadataDatabase."); |
348 SyncTaskManager::NotifyTaskDone(token.Pass(), status); | 349 SyncTaskManager::NotifyTaskDone(std::move(token), status); |
349 return; | 350 return; |
350 } | 351 } |
351 | 352 |
352 util::Log(logging::LOG_VERBOSE, FROM_HERE, | 353 util::Log(logging::LOG_VERBOSE, FROM_HERE, |
353 "[Initialize] Completed successfully."); | 354 "[Initialize] Completed successfully."); |
354 SyncTaskManager::NotifyTaskDone(token.Pass(), SYNC_STATUS_OK); | 355 SyncTaskManager::NotifyTaskDone(std::move(token), SYNC_STATUS_OK); |
355 } | 356 } |
356 | 357 |
357 } // namespace drive_backend | 358 } // namespace drive_backend |
358 } // namespace sync_file_system | 359 } // namespace sync_file_system |
OLD | NEW |