| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_worker.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/sync_worker.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 extension_service_(extension_service), | 59 extension_service_(extension_service), |
| 60 weak_ptr_factory_(this) { | 60 weak_ptr_factory_(this) { |
| 61 sequence_checker_.DetachFromSequence(); | 61 sequence_checker_.DetachFromSequence(); |
| 62 DCHECK(base_dir_.IsAbsolute()); | 62 DCHECK(base_dir_.IsAbsolute()); |
| 63 } | 63 } |
| 64 | 64 |
| 65 SyncWorker::~SyncWorker() { | 65 SyncWorker::~SyncWorker() { |
| 66 observers_.Clear(); | 66 observers_.Clear(); |
| 67 } | 67 } |
| 68 | 68 |
| 69 void SyncWorker::Initialize(scoped_ptr<SyncEngineContext> context) { | 69 void SyncWorker::Initialize(std::unique_ptr<SyncEngineContext> context) { |
| 70 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 70 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 71 DCHECK(!task_manager_); | 71 DCHECK(!task_manager_); |
| 72 | 72 |
| 73 context_ = std::move(context); | 73 context_ = std::move(context); |
| 74 | 74 |
| 75 task_manager_.reset(new SyncTaskManager( | 75 task_manager_.reset(new SyncTaskManager( |
| 76 weak_ptr_factory_.GetWeakPtr(), 0 /* maximum_background_task */, | 76 weak_ptr_factory_.GetWeakPtr(), 0 /* maximum_background_task */, |
| 77 context_->GetWorkerTaskRunner(), | 77 context_->GetWorkerTaskRunner(), |
| 78 context_->GetWorkerPool())); | 78 context_->GetWorkerPool())); |
| 79 task_manager_->Initialize(SYNC_STATUS_OK); | 79 task_manager_->Initialize(SYNC_STATUS_OK); |
| 80 | 80 |
| 81 PostInitializeTask(); | 81 PostInitializeTask(); |
| 82 } | 82 } |
| 83 | 83 |
| 84 void SyncWorker::RegisterOrigin( | 84 void SyncWorker::RegisterOrigin( |
| 85 const GURL& origin, | 85 const GURL& origin, |
| 86 const SyncStatusCallback& callback) { | 86 const SyncStatusCallback& callback) { |
| 87 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 87 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 88 | 88 |
| 89 if (!GetMetadataDatabase()) | 89 if (!GetMetadataDatabase()) |
| 90 PostInitializeTask(); | 90 PostInitializeTask(); |
| 91 | 91 |
| 92 scoped_ptr<RegisterAppTask> task( | 92 std::unique_ptr<RegisterAppTask> task( |
| 93 new RegisterAppTask(context_.get(), origin.host())); | 93 new RegisterAppTask(context_.get(), origin.host())); |
| 94 if (task->CanFinishImmediately()) { | 94 if (task->CanFinishImmediately()) { |
| 95 callback.Run(SYNC_STATUS_OK); | 95 callback.Run(SYNC_STATUS_OK); |
| 96 return; | 96 return; |
| 97 } | 97 } |
| 98 | 98 |
| 99 task_manager_->ScheduleSyncTask(FROM_HERE, std::move(task), | 99 task_manager_->ScheduleSyncTask(FROM_HERE, std::move(task), |
| 100 SyncTaskManager::PRIORITY_HIGH, callback); | 100 SyncTaskManager::PRIORITY_HIGH, callback); |
| 101 } | 101 } |
| 102 | 102 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 128 callback); | 128 callback); |
| 129 } | 129 } |
| 130 | 130 |
| 131 void SyncWorker::UninstallOrigin( | 131 void SyncWorker::UninstallOrigin( |
| 132 const GURL& origin, | 132 const GURL& origin, |
| 133 RemoteFileSyncService::UninstallFlag flag, | 133 RemoteFileSyncService::UninstallFlag flag, |
| 134 const SyncStatusCallback& callback) { | 134 const SyncStatusCallback& callback) { |
| 135 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 135 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 136 | 136 |
| 137 task_manager_->ScheduleSyncTask( | 137 task_manager_->ScheduleSyncTask( |
| 138 FROM_HERE, | 138 FROM_HERE, std::unique_ptr<SyncTask>( |
| 139 scoped_ptr<SyncTask>( | 139 new UninstallAppTask(context_.get(), origin.host(), flag)), |
| 140 new UninstallAppTask(context_.get(), origin.host(), flag)), | 140 SyncTaskManager::PRIORITY_HIGH, callback); |
| 141 SyncTaskManager::PRIORITY_HIGH, | |
| 142 callback); | |
| 143 } | 141 } |
| 144 | 142 |
| 145 void SyncWorker::ProcessRemoteChange(const SyncFileCallback& callback) { | 143 void SyncWorker::ProcessRemoteChange(const SyncFileCallback& callback) { |
| 146 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 144 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 147 | 145 |
| 148 RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer(context_.get()); | 146 RemoteToLocalSyncer* syncer = new RemoteToLocalSyncer(context_.get()); |
| 149 task_manager_->ScheduleSyncTask( | 147 task_manager_->ScheduleSyncTask( |
| 150 FROM_HERE, | 148 FROM_HERE, std::unique_ptr<SyncTask>(syncer), |
| 151 scoped_ptr<SyncTask>(syncer), | |
| 152 SyncTaskManager::PRIORITY_MED, | 149 SyncTaskManager::PRIORITY_MED, |
| 153 base::Bind(&SyncWorker::DidProcessRemoteChange, | 150 base::Bind(&SyncWorker::DidProcessRemoteChange, |
| 154 weak_ptr_factory_.GetWeakPtr(), | 151 weak_ptr_factory_.GetWeakPtr(), syncer, callback)); |
| 155 syncer, | |
| 156 callback)); | |
| 157 } | 152 } |
| 158 | 153 |
| 159 void SyncWorker::SetRemoteChangeProcessor( | 154 void SyncWorker::SetRemoteChangeProcessor( |
| 160 RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) { | 155 RemoteChangeProcessorOnWorker* remote_change_processor_on_worker) { |
| 161 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 156 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 162 | 157 |
| 163 context_->SetRemoteChangeProcessor(remote_change_processor_on_worker); | 158 context_->SetRemoteChangeProcessor(remote_change_processor_on_worker); |
| 164 } | 159 } |
| 165 | 160 |
| 166 RemoteServiceState SyncWorker::GetCurrentState() const { | 161 RemoteServiceState SyncWorker::GetCurrentState() const { |
| 167 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 162 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 168 | 163 |
| 169 if (!sync_enabled_) | 164 if (!sync_enabled_) |
| 170 return REMOTE_SERVICE_DISABLED; | 165 return REMOTE_SERVICE_DISABLED; |
| 171 return service_state_; | 166 return service_state_; |
| 172 } | 167 } |
| 173 | 168 |
| 174 void SyncWorker::GetOriginStatusMap( | 169 void SyncWorker::GetOriginStatusMap( |
| 175 const RemoteFileSyncService::StatusMapCallback& callback) { | 170 const RemoteFileSyncService::StatusMapCallback& callback) { |
| 176 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 171 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 177 | 172 |
| 178 if (!GetMetadataDatabase()) | 173 if (!GetMetadataDatabase()) |
| 179 return; | 174 return; |
| 180 | 175 |
| 181 std::vector<std::string> app_ids; | 176 std::vector<std::string> app_ids; |
| 182 GetMetadataDatabase()->GetRegisteredAppIDs(&app_ids); | 177 GetMetadataDatabase()->GetRegisteredAppIDs(&app_ids); |
| 183 | 178 |
| 184 scoped_ptr<RemoteFileSyncService::OriginStatusMap> | 179 std::unique_ptr<RemoteFileSyncService::OriginStatusMap> status_map( |
| 185 status_map(new RemoteFileSyncService::OriginStatusMap); | 180 new RemoteFileSyncService::OriginStatusMap); |
| 186 for (std::vector<std::string>::const_iterator itr = app_ids.begin(); | 181 for (std::vector<std::string>::const_iterator itr = app_ids.begin(); |
| 187 itr != app_ids.end(); ++itr) { | 182 itr != app_ids.end(); ++itr) { |
| 188 const std::string& app_id = *itr; | 183 const std::string& app_id = *itr; |
| 189 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(app_id); | 184 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(app_id); |
| 190 (*status_map)[origin] = | 185 (*status_map)[origin] = |
| 191 GetMetadataDatabase()->IsAppEnabled(app_id) ? "Enabled" : "Disabled"; | 186 GetMetadataDatabase()->IsAppEnabled(app_id) ? "Enabled" : "Disabled"; |
| 192 } | 187 } |
| 193 | 188 |
| 194 callback.Run(std::move(status_map)); | 189 callback.Run(std::move(status_map)); |
| 195 } | 190 } |
| 196 | 191 |
| 197 scoped_ptr<base::ListValue> SyncWorker::DumpFiles(const GURL& origin) { | 192 std::unique_ptr<base::ListValue> SyncWorker::DumpFiles(const GURL& origin) { |
| 198 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 193 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 199 | 194 |
| 200 if (!GetMetadataDatabase()) | 195 if (!GetMetadataDatabase()) |
| 201 return scoped_ptr<base::ListValue>(); | 196 return std::unique_ptr<base::ListValue>(); |
| 202 return GetMetadataDatabase()->DumpFiles(origin.host()); | 197 return GetMetadataDatabase()->DumpFiles(origin.host()); |
| 203 } | 198 } |
| 204 | 199 |
| 205 scoped_ptr<base::ListValue> SyncWorker::DumpDatabase() { | 200 std::unique_ptr<base::ListValue> SyncWorker::DumpDatabase() { |
| 206 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 201 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 207 | 202 |
| 208 if (!GetMetadataDatabase()) | 203 if (!GetMetadataDatabase()) |
| 209 return scoped_ptr<base::ListValue>(); | 204 return std::unique_ptr<base::ListValue>(); |
| 210 return GetMetadataDatabase()->DumpDatabase(); | 205 return GetMetadataDatabase()->DumpDatabase(); |
| 211 } | 206 } |
| 212 | 207 |
| 213 void SyncWorker::SetSyncEnabled(bool enabled) { | 208 void SyncWorker::SetSyncEnabled(bool enabled) { |
| 214 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 209 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 215 | 210 |
| 216 if (sync_enabled_ == enabled) | 211 if (sync_enabled_ == enabled) |
| 217 return; | 212 return; |
| 218 | 213 |
| 219 RemoteServiceState old_state = GetCurrentState(); | 214 RemoteServiceState old_state = GetCurrentState(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 246 void SyncWorker::ApplyLocalChange(const FileChange& local_change, | 241 void SyncWorker::ApplyLocalChange(const FileChange& local_change, |
| 247 const base::FilePath& local_path, | 242 const base::FilePath& local_path, |
| 248 const SyncFileMetadata& local_metadata, | 243 const SyncFileMetadata& local_metadata, |
| 249 const storage::FileSystemURL& url, | 244 const storage::FileSystemURL& url, |
| 250 const SyncStatusCallback& callback) { | 245 const SyncStatusCallback& callback) { |
| 251 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 246 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 252 | 247 |
| 253 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( | 248 LocalToRemoteSyncer* syncer = new LocalToRemoteSyncer( |
| 254 context_.get(), local_metadata, local_change, local_path, url); | 249 context_.get(), local_metadata, local_change, local_path, url); |
| 255 task_manager_->ScheduleSyncTask( | 250 task_manager_->ScheduleSyncTask( |
| 256 FROM_HERE, | 251 FROM_HERE, std::unique_ptr<SyncTask>(syncer), |
| 257 scoped_ptr<SyncTask>(syncer), | |
| 258 SyncTaskManager::PRIORITY_MED, | 252 SyncTaskManager::PRIORITY_MED, |
| 259 base::Bind(&SyncWorker::DidApplyLocalChange, | 253 base::Bind(&SyncWorker::DidApplyLocalChange, |
| 260 weak_ptr_factory_.GetWeakPtr(), | 254 weak_ptr_factory_.GetWeakPtr(), syncer, callback)); |
| 261 syncer, | |
| 262 callback)); | |
| 263 } | 255 } |
| 264 | 256 |
| 265 void SyncWorker::MaybeScheduleNextTask() { | 257 void SyncWorker::MaybeScheduleNextTask() { |
| 266 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 258 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 267 | 259 |
| 268 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) | 260 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) |
| 269 return; | 261 return; |
| 270 | 262 |
| 271 // TODO(tzik): Notify observer of OnRemoteChangeQueueUpdated. | 263 // TODO(tzik): Notify observer of OnRemoteChangeQueueUpdated. |
| 272 // TODO(tzik): Add an interface to get the number of dirty trackers to | 264 // TODO(tzik): Add an interface to get the number of dirty trackers to |
| (...skipping 16 matching lines...) Expand all Loading... |
| 289 | 281 |
| 290 UpdateServiceStateFromSyncStatusCode(status, used_network); | 282 UpdateServiceStateFromSyncStatusCode(status, used_network); |
| 291 | 283 |
| 292 if (GetMetadataDatabase()) { | 284 if (GetMetadataDatabase()) { |
| 293 FOR_EACH_OBSERVER( | 285 FOR_EACH_OBSERVER( |
| 294 Observer, observers_, | 286 Observer, observers_, |
| 295 OnPendingFileListUpdated(GetMetadataDatabase()->CountDirtyTracker())); | 287 OnPendingFileListUpdated(GetMetadataDatabase()->CountDirtyTracker())); |
| 296 } | 288 } |
| 297 } | 289 } |
| 298 | 290 |
| 299 void SyncWorker::RecordTaskLog(scoped_ptr<TaskLogger::TaskLog> task_log) { | 291 void SyncWorker::RecordTaskLog(std::unique_ptr<TaskLogger::TaskLog> task_log) { |
| 300 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 292 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 301 | 293 |
| 302 context_->GetUITaskRunner()->PostTask( | 294 context_->GetUITaskRunner()->PostTask( |
| 303 FROM_HERE, | 295 FROM_HERE, |
| 304 base::Bind(&TaskLogger::RecordLog, | 296 base::Bind(&TaskLogger::RecordLog, |
| 305 context_->GetTaskLogger(), | 297 context_->GetTaskLogger(), |
| 306 base::Passed(&task_log))); | 298 base::Passed(&task_log))); |
| 307 } | 299 } |
| 308 | 300 |
| 309 void SyncWorker::ActivateService(RemoteServiceState service_state, | 301 void SyncWorker::ActivateService(RemoteServiceState service_state, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 356 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 365 DCHECK(!GetMetadataDatabase()); | 357 DCHECK(!GetMetadataDatabase()); |
| 366 | 358 |
| 367 // This initializer task may not run if MetadataDatabase in context_ is | 359 // This initializer task may not run if MetadataDatabase in context_ is |
| 368 // already initialized when it runs. | 360 // already initialized when it runs. |
| 369 SyncEngineInitializer* initializer = | 361 SyncEngineInitializer* initializer = |
| 370 new SyncEngineInitializer(context_.get(), | 362 new SyncEngineInitializer(context_.get(), |
| 371 base_dir_.Append(kDatabaseName), | 363 base_dir_.Append(kDatabaseName), |
| 372 env_override_); | 364 env_override_); |
| 373 task_manager_->ScheduleSyncTask( | 365 task_manager_->ScheduleSyncTask( |
| 374 FROM_HERE, | 366 FROM_HERE, std::unique_ptr<SyncTask>(initializer), |
| 375 scoped_ptr<SyncTask>(initializer), | |
| 376 SyncTaskManager::PRIORITY_HIGH, | 367 SyncTaskManager::PRIORITY_HIGH, |
| 377 base::Bind(&SyncWorker::DidInitialize, | 368 base::Bind(&SyncWorker::DidInitialize, weak_ptr_factory_.GetWeakPtr(), |
| 378 weak_ptr_factory_.GetWeakPtr(), | |
| 379 initializer)); | 369 initializer)); |
| 380 } | 370 } |
| 381 | 371 |
| 382 void SyncWorker::DidInitialize(SyncEngineInitializer* initializer, | 372 void SyncWorker::DidInitialize(SyncEngineInitializer* initializer, |
| 383 SyncStatusCode status) { | 373 SyncStatusCode status) { |
| 384 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 374 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 385 | 375 |
| 386 if (status == SYNC_STATUS_ACCESS_FORBIDDEN) { | 376 if (status == SYNC_STATUS_ACCESS_FORBIDDEN) { |
| 387 UpdateServiceState(REMOTE_SERVICE_ACCESS_FORBIDDEN, "Access forbidden"); | 377 UpdateServiceState(REMOTE_SERVICE_ACCESS_FORBIDDEN, "Access forbidden"); |
| 388 return; | 378 return; |
| 389 } | 379 } |
| 390 if (status != SYNC_STATUS_OK) { | 380 if (status != SYNC_STATUS_OK) { |
| 391 UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE, | 381 UpdateServiceState(REMOTE_SERVICE_TEMPORARY_UNAVAILABLE, |
| 392 "Could not initialize remote service"); | 382 "Could not initialize remote service"); |
| 393 return; | 383 return; |
| 394 } | 384 } |
| 395 | 385 |
| 396 scoped_ptr<MetadataDatabase> metadata_database = | 386 std::unique_ptr<MetadataDatabase> metadata_database = |
| 397 initializer->PassMetadataDatabase(); | 387 initializer->PassMetadataDatabase(); |
| 398 if (metadata_database) { | 388 if (metadata_database) { |
| 399 context_->SetMetadataDatabase(std::move(metadata_database)); | 389 context_->SetMetadataDatabase(std::move(metadata_database)); |
| 400 return; | 390 return; |
| 401 } | 391 } |
| 402 | 392 |
| 403 UpdateServiceState(REMOTE_SERVICE_OK, std::string()); | 393 UpdateServiceState(REMOTE_SERVICE_OK, std::string()); |
| 404 UpdateRegisteredApps(); | 394 UpdateRegisteredApps(); |
| 405 } | 395 } |
| 406 | 396 |
| 407 void SyncWorker::UpdateRegisteredApps() { | 397 void SyncWorker::UpdateRegisteredApps() { |
| 408 MetadataDatabase* metadata_db = GetMetadataDatabase(); | 398 MetadataDatabase* metadata_db = GetMetadataDatabase(); |
| 409 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 399 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 410 DCHECK(metadata_db); | 400 DCHECK(metadata_db); |
| 411 | 401 |
| 412 scoped_ptr<std::vector<std::string> > app_ids(new std::vector<std::string>); | 402 std::unique_ptr<std::vector<std::string>> app_ids( |
| 403 new std::vector<std::string>); |
| 413 metadata_db->GetRegisteredAppIDs(app_ids.get()); | 404 metadata_db->GetRegisteredAppIDs(app_ids.get()); |
| 414 | 405 |
| 415 AppStatusMap* app_status = new AppStatusMap; | 406 AppStatusMap* app_status = new AppStatusMap; |
| 416 base::Closure callback = | 407 base::Closure callback = |
| 417 base::Bind(&SyncWorker::DidQueryAppStatus, | 408 base::Bind(&SyncWorker::DidQueryAppStatus, |
| 418 weak_ptr_factory_.GetWeakPtr(), | 409 weak_ptr_factory_.GetWeakPtr(), |
| 419 base::Owned(app_status)); | 410 base::Owned(app_status)); |
| 420 | 411 |
| 421 context_->GetUITaskRunner()->PostTask( | 412 context_->GetUITaskRunner()->PostTask( |
| 422 FROM_HERE, | 413 FROM_HERE, |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 | 543 |
| 553 if (status == SYNC_STATUS_UNKNOWN_ORIGIN && syncer->url().is_valid()) { | 544 if (status == SYNC_STATUS_UNKNOWN_ORIGIN && syncer->url().is_valid()) { |
| 554 RegisterOrigin(syncer->url().origin(), | 545 RegisterOrigin(syncer->url().origin(), |
| 555 base::Bind(&EmptyStatusCallback)); | 546 base::Bind(&EmptyStatusCallback)); |
| 556 } | 547 } |
| 557 | 548 |
| 558 if (syncer->needs_remote_change_listing() && | 549 if (syncer->needs_remote_change_listing() && |
| 559 !listing_remote_changes_) { | 550 !listing_remote_changes_) { |
| 560 task_manager_->ScheduleSyncTask( | 551 task_manager_->ScheduleSyncTask( |
| 561 FROM_HERE, | 552 FROM_HERE, |
| 562 scoped_ptr<SyncTask>(new ListChangesTask(context_.get())), | 553 std::unique_ptr<SyncTask>(new ListChangesTask(context_.get())), |
| 563 SyncTaskManager::PRIORITY_HIGH, | 554 SyncTaskManager::PRIORITY_HIGH, |
| 564 base::Bind(&SyncWorker::DidFetchChanges, | 555 base::Bind(&SyncWorker::DidFetchChanges, |
| 565 weak_ptr_factory_.GetWeakPtr())); | 556 weak_ptr_factory_.GetWeakPtr())); |
| 566 should_check_remote_change_ = false; | 557 should_check_remote_change_ = false; |
| 567 listing_remote_changes_ = true; | 558 listing_remote_changes_ = true; |
| 568 time_to_check_changes_ = | 559 time_to_check_changes_ = |
| 569 base::TimeTicks::Now() + | 560 base::TimeTicks::Now() + |
| 570 base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); | 561 base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); |
| 571 } | 562 } |
| 572 | 563 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 588 if (listing_remote_changes_) | 579 if (listing_remote_changes_) |
| 589 return false; | 580 return false; |
| 590 | 581 |
| 591 base::TimeTicks now = base::TimeTicks::Now(); | 582 base::TimeTicks now = base::TimeTicks::Now(); |
| 592 if (!should_check_remote_change_ && now < time_to_check_changes_) { | 583 if (!should_check_remote_change_ && now < time_to_check_changes_) { |
| 593 if (!GetMetadataDatabase()->HasDirtyTracker() && | 584 if (!GetMetadataDatabase()->HasDirtyTracker() && |
| 594 should_check_conflict_) { | 585 should_check_conflict_) { |
| 595 should_check_conflict_ = false; | 586 should_check_conflict_ = false; |
| 596 return task_manager_->ScheduleSyncTaskIfIdle( | 587 return task_manager_->ScheduleSyncTaskIfIdle( |
| 597 FROM_HERE, | 588 FROM_HERE, |
| 598 scoped_ptr<SyncTask>(new ConflictResolver(context_.get())), | 589 std::unique_ptr<SyncTask>(new ConflictResolver(context_.get())), |
| 599 base::Bind(&SyncWorker::DidResolveConflict, | 590 base::Bind(&SyncWorker::DidResolveConflict, |
| 600 weak_ptr_factory_.GetWeakPtr())); | 591 weak_ptr_factory_.GetWeakPtr())); |
| 601 } | 592 } |
| 602 return false; | 593 return false; |
| 603 } | 594 } |
| 604 | 595 |
| 605 if (task_manager_->ScheduleSyncTaskIfIdle( | 596 if (task_manager_->ScheduleSyncTaskIfIdle( |
| 606 FROM_HERE, | 597 FROM_HERE, |
| 607 scoped_ptr<SyncTask>(new ListChangesTask(context_.get())), | 598 std::unique_ptr<SyncTask>(new ListChangesTask(context_.get())), |
| 608 base::Bind(&SyncWorker::DidFetchChanges, | 599 base::Bind(&SyncWorker::DidFetchChanges, |
| 609 weak_ptr_factory_.GetWeakPtr()))) { | 600 weak_ptr_factory_.GetWeakPtr()))) { |
| 610 should_check_remote_change_ = false; | 601 should_check_remote_change_ = false; |
| 611 listing_remote_changes_ = true; | 602 listing_remote_changes_ = true; |
| 612 time_to_check_changes_ = | 603 time_to_check_changes_ = |
| 613 now + base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); | 604 now + base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds); |
| 614 return true; | 605 return true; |
| 615 } | 606 } |
| 616 return false; | 607 return false; |
| 617 } | 608 } |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 return context_->GetDriveUploader(); | 707 return context_->GetDriveUploader(); |
| 717 } | 708 } |
| 718 | 709 |
| 719 MetadataDatabase* SyncWorker::GetMetadataDatabase() { | 710 MetadataDatabase* SyncWorker::GetMetadataDatabase() { |
| 720 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); | 711 DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
| 721 return context_->GetMetadataDatabase(); | 712 return context_->GetMetadataDatabase(); |
| 722 } | 713 } |
| 723 | 714 |
| 724 } // namespace drive_backend | 715 } // namespace drive_backend |
| 725 } // namespace sync_file_system | 716 } // namespace sync_file_system |
| OLD | NEW |