| 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 |