| 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.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 | 119 |
| 120 void OnPendingFileListUpdated(int item_count) override { | 120 void OnPendingFileListUpdated(int item_count) override { |
| 121 if (ui_task_runner_->RunsTasksOnCurrentThread()) { | 121 if (ui_task_runner_->RunsTasksOnCurrentThread()) { |
| 122 if (sync_engine_) | 122 if (sync_engine_) |
| 123 sync_engine_->OnPendingFileListUpdated(item_count); | 123 sync_engine_->OnPendingFileListUpdated(item_count); |
| 124 return; | 124 return; |
| 125 } | 125 } |
| 126 | 126 |
| 127 DCHECK(sequence_checker_.CalledOnValidSequence()); | 127 DCHECK(sequence_checker_.CalledOnValidSequence()); |
| 128 ui_task_runner_->PostTask( | 128 ui_task_runner_->PostTask( |
| 129 FROM_HERE, | 129 FROM_HERE, base::BindOnce(&SyncEngine::OnPendingFileListUpdated, |
| 130 base::Bind(&SyncEngine::OnPendingFileListUpdated, | 130 sync_engine_, item_count)); |
| 131 sync_engine_, | |
| 132 item_count)); | |
| 133 } | 131 } |
| 134 | 132 |
| 135 void OnFileStatusChanged(const storage::FileSystemURL& url, | 133 void OnFileStatusChanged(const storage::FileSystemURL& url, |
| 136 SyncFileType file_type, | 134 SyncFileType file_type, |
| 137 SyncFileStatus file_status, | 135 SyncFileStatus file_status, |
| 138 SyncAction sync_action, | 136 SyncAction sync_action, |
| 139 SyncDirection direction) override { | 137 SyncDirection direction) override { |
| 140 if (ui_task_runner_->RunsTasksOnCurrentThread()) { | 138 if (ui_task_runner_->RunsTasksOnCurrentThread()) { |
| 141 if (sync_engine_) | 139 if (sync_engine_) |
| 142 sync_engine_->OnFileStatusChanged( | 140 sync_engine_->OnFileStatusChanged( |
| 143 url, file_type, file_status, sync_action, direction); | 141 url, file_type, file_status, sync_action, direction); |
| 144 return; | 142 return; |
| 145 } | 143 } |
| 146 | 144 |
| 147 DCHECK(sequence_checker_.CalledOnValidSequence()); | 145 DCHECK(sequence_checker_.CalledOnValidSequence()); |
| 148 ui_task_runner_->PostTask( | 146 ui_task_runner_->PostTask( |
| 149 FROM_HERE, | 147 FROM_HERE, |
| 150 base::Bind(&SyncEngine::OnFileStatusChanged, | 148 base::BindOnce(&SyncEngine::OnFileStatusChanged, sync_engine_, url, |
| 151 sync_engine_, | 149 file_type, file_status, sync_action, direction)); |
| 152 url, file_type, file_status, sync_action, direction)); | |
| 153 } | 150 } |
| 154 | 151 |
| 155 void UpdateServiceState(RemoteServiceState state, | 152 void UpdateServiceState(RemoteServiceState state, |
| 156 const std::string& description) override { | 153 const std::string& description) override { |
| 157 if (ui_task_runner_->RunsTasksOnCurrentThread()) { | 154 if (ui_task_runner_->RunsTasksOnCurrentThread()) { |
| 158 if (sync_engine_) | 155 if (sync_engine_) |
| 159 sync_engine_->UpdateServiceState(state, description); | 156 sync_engine_->UpdateServiceState(state, description); |
| 160 return; | 157 return; |
| 161 } | 158 } |
| 162 | 159 |
| 163 DCHECK(sequence_checker_.CalledOnValidSequence()); | 160 DCHECK(sequence_checker_.CalledOnValidSequence()); |
| 164 ui_task_runner_->PostTask( | 161 ui_task_runner_->PostTask( |
| 165 FROM_HERE, | 162 FROM_HERE, base::BindOnce(&SyncEngine::UpdateServiceState, sync_engine_, |
| 166 base::Bind(&SyncEngine::UpdateServiceState, | 163 state, description)); |
| 167 sync_engine_, state, description)); | |
| 168 } | 164 } |
| 169 | 165 |
| 170 void DetachFromSequence() { | 166 void DetachFromSequence() { |
| 171 sequence_checker_.DetachFromSequence(); | 167 sequence_checker_.DetachFromSequence(); |
| 172 } | 168 } |
| 173 | 169 |
| 174 private: | 170 private: |
| 175 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; | 171 scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; |
| 176 base::WeakPtr<SyncEngine> sync_engine_; | 172 base::WeakPtr<SyncEngine> sync_engine_; |
| 177 | 173 |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 sync_worker.reset(new SyncWorker( | 334 sync_worker.reset(new SyncWorker( |
| 339 sync_file_system_dir_, | 335 sync_file_system_dir_, |
| 340 extension_service_weak_ptr, | 336 extension_service_weak_ptr, |
| 341 env_override_)); | 337 env_override_)); |
| 342 } | 338 } |
| 343 | 339 |
| 344 sync_worker_ = std::move(sync_worker); | 340 sync_worker_ = std::move(sync_worker); |
| 345 sync_worker_->AddObserver(worker_observer_.get()); | 341 sync_worker_->AddObserver(worker_observer_.get()); |
| 346 | 342 |
| 347 worker_task_runner_->PostTask( | 343 worker_task_runner_->PostTask( |
| 348 FROM_HERE, | 344 FROM_HERE, base::BindOnce(&SyncWorkerInterface::Initialize, |
| 349 base::Bind(&SyncWorkerInterface::Initialize, | 345 base::Unretained(sync_worker_.get()), |
| 350 base::Unretained(sync_worker_.get()), | 346 base::Passed(&sync_engine_context))); |
| 351 base::Passed(&sync_engine_context))); | |
| 352 if (remote_change_processor_) | 347 if (remote_change_processor_) |
| 353 SetRemoteChangeProcessor(remote_change_processor_); | 348 SetRemoteChangeProcessor(remote_change_processor_); |
| 354 | 349 |
| 355 drive_service_->AddObserver(this); | 350 drive_service_->AddObserver(this); |
| 356 | 351 |
| 357 service_state_ = REMOTE_SERVICE_TEMPORARY_UNAVAILABLE; | 352 service_state_ = REMOTE_SERVICE_TEMPORARY_UNAVAILABLE; |
| 358 OnNetworkChanged(net::NetworkChangeNotifier::GetConnectionType()); | 353 OnNetworkChanged(net::NetworkChangeNotifier::GetConnectionType()); |
| 359 if (drive_service_->HasRefreshToken()) | 354 if (drive_service_->HasRefreshToken()) |
| 360 OnReadyToSendRequests(); | 355 OnReadyToSendRequests(); |
| 361 else | 356 else |
| (...skipping 18 matching lines...) Expand all Loading... |
| 380 else | 375 else |
| 381 callback.Run(SYNC_STATUS_ABORT); | 376 callback.Run(SYNC_STATUS_ABORT); |
| 382 return; | 377 return; |
| 383 } | 378 } |
| 384 | 379 |
| 385 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( | 380 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( |
| 386 FROM_HERE, base::Bind(&DidRegisterOrigin, base::TimeTicks::Now(), | 381 FROM_HERE, base::Bind(&DidRegisterOrigin, base::TimeTicks::Now(), |
| 387 TrackCallback(callback))); | 382 TrackCallback(callback))); |
| 388 | 383 |
| 389 worker_task_runner_->PostTask( | 384 worker_task_runner_->PostTask( |
| 390 FROM_HERE, | 385 FROM_HERE, base::BindOnce(&SyncWorkerInterface::RegisterOrigin, |
| 391 base::Bind(&SyncWorkerInterface::RegisterOrigin, | 386 base::Unretained(sync_worker_.get()), origin, |
| 392 base::Unretained(sync_worker_.get()), | 387 relayed_callback)); |
| 393 origin, relayed_callback)); | |
| 394 } | 388 } |
| 395 | 389 |
| 396 void SyncEngine::EnableOrigin( | 390 void SyncEngine::EnableOrigin( |
| 397 const GURL& origin, const SyncStatusCallback& callback) { | 391 const GURL& origin, const SyncStatusCallback& callback) { |
| 398 if (!sync_worker_) { | 392 if (!sync_worker_) { |
| 399 // It's safe to return OK immediately since this is also checked in | 393 // It's safe to return OK immediately since this is also checked in |
| 400 // SyncWorker initialization. | 394 // SyncWorker initialization. |
| 401 callback.Run(SYNC_STATUS_OK); | 395 callback.Run(SYNC_STATUS_OK); |
| 402 return; | 396 return; |
| 403 } | 397 } |
| 404 | 398 |
| 405 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( | 399 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( |
| 406 FROM_HERE, TrackCallback(callback)); | 400 FROM_HERE, TrackCallback(callback)); |
| 407 | 401 |
| 408 worker_task_runner_->PostTask( | 402 worker_task_runner_->PostTask( |
| 409 FROM_HERE, | 403 FROM_HERE, base::BindOnce(&SyncWorkerInterface::EnableOrigin, |
| 410 base::Bind(&SyncWorkerInterface::EnableOrigin, | 404 base::Unretained(sync_worker_.get()), origin, |
| 411 base::Unretained(sync_worker_.get()), | 405 relayed_callback)); |
| 412 origin, relayed_callback)); | |
| 413 } | 406 } |
| 414 | 407 |
| 415 void SyncEngine::DisableOrigin( | 408 void SyncEngine::DisableOrigin( |
| 416 const GURL& origin, const SyncStatusCallback& callback) { | 409 const GURL& origin, const SyncStatusCallback& callback) { |
| 417 if (!sync_worker_) { | 410 if (!sync_worker_) { |
| 418 // It's safe to return OK immediately since this is also checked in | 411 // It's safe to return OK immediately since this is also checked in |
| 419 // SyncWorker initialization. | 412 // SyncWorker initialization. |
| 420 callback.Run(SYNC_STATUS_OK); | 413 callback.Run(SYNC_STATUS_OK); |
| 421 return; | 414 return; |
| 422 } | 415 } |
| 423 | 416 |
| 424 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( | 417 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( |
| 425 FROM_HERE, TrackCallback(callback)); | 418 FROM_HERE, TrackCallback(callback)); |
| 426 | 419 |
| 427 worker_task_runner_->PostTask( | 420 worker_task_runner_->PostTask( |
| 428 FROM_HERE, | 421 FROM_HERE, base::BindOnce(&SyncWorkerInterface::DisableOrigin, |
| 429 base::Bind(&SyncWorkerInterface::DisableOrigin, | 422 base::Unretained(sync_worker_.get()), origin, |
| 430 base::Unretained(sync_worker_.get()), | 423 relayed_callback)); |
| 431 origin, | |
| 432 relayed_callback)); | |
| 433 } | 424 } |
| 434 | 425 |
| 435 void SyncEngine::UninstallOrigin( | 426 void SyncEngine::UninstallOrigin( |
| 436 const GURL& origin, | 427 const GURL& origin, |
| 437 UninstallFlag flag, | 428 UninstallFlag flag, |
| 438 const SyncStatusCallback& callback) { | 429 const SyncStatusCallback& callback) { |
| 439 if (!sync_worker_) { | 430 if (!sync_worker_) { |
| 440 // It's safe to return OK immediately since this is also checked in | 431 // It's safe to return OK immediately since this is also checked in |
| 441 // SyncWorker initialization. | 432 // SyncWorker initialization. |
| 442 callback.Run(SYNC_STATUS_OK); | 433 callback.Run(SYNC_STATUS_OK); |
| 443 return; | 434 return; |
| 444 } | 435 } |
| 445 | 436 |
| 446 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( | 437 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( |
| 447 FROM_HERE, TrackCallback(callback)); | 438 FROM_HERE, TrackCallback(callback)); |
| 448 worker_task_runner_->PostTask( | 439 worker_task_runner_->PostTask( |
| 449 FROM_HERE, | 440 FROM_HERE, base::BindOnce(&SyncWorkerInterface::UninstallOrigin, |
| 450 base::Bind(&SyncWorkerInterface::UninstallOrigin, | 441 base::Unretained(sync_worker_.get()), origin, |
| 451 base::Unretained(sync_worker_.get()), | 442 flag, relayed_callback)); |
| 452 origin, flag, relayed_callback)); | |
| 453 } | 443 } |
| 454 | 444 |
| 455 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) { | 445 void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) { |
| 456 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) { | 446 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) { |
| 457 callback.Run(SYNC_STATUS_SYNC_DISABLED, storage::FileSystemURL()); | 447 callback.Run(SYNC_STATUS_SYNC_DISABLED, storage::FileSystemURL()); |
| 458 return; | 448 return; |
| 459 } | 449 } |
| 460 | 450 |
| 461 base::Closure abort_closure = | 451 base::Closure abort_closure = |
| 462 base::Bind(callback, SYNC_STATUS_ABORT, storage::FileSystemURL()); | 452 base::Bind(callback, SYNC_STATUS_ABORT, storage::FileSystemURL()); |
| 463 | 453 |
| 464 if (!sync_worker_) { | 454 if (!sync_worker_) { |
| 465 abort_closure.Run(); | 455 abort_closure.Run(); |
| 466 return; | 456 return; |
| 467 } | 457 } |
| 468 | 458 |
| 469 SyncFileCallback tracked_callback = callback_tracker_.Register( | 459 SyncFileCallback tracked_callback = callback_tracker_.Register( |
| 470 abort_closure, callback); | 460 abort_closure, callback); |
| 471 SyncFileCallback relayed_callback = RelayCallbackToCurrentThread( | 461 SyncFileCallback relayed_callback = RelayCallbackToCurrentThread( |
| 472 FROM_HERE, tracked_callback); | 462 FROM_HERE, tracked_callback); |
| 473 worker_task_runner_->PostTask( | 463 worker_task_runner_->PostTask( |
| 474 FROM_HERE, | 464 FROM_HERE, |
| 475 base::Bind(&SyncWorkerInterface::ProcessRemoteChange, | 465 base::BindOnce(&SyncWorkerInterface::ProcessRemoteChange, |
| 476 base::Unretained(sync_worker_.get()), | 466 base::Unretained(sync_worker_.get()), relayed_callback)); |
| 477 relayed_callback)); | |
| 478 } | 467 } |
| 479 | 468 |
| 480 void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) { | 469 void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) { |
| 481 remote_change_processor_ = processor; | 470 remote_change_processor_ = processor; |
| 482 | 471 |
| 483 if (!sync_worker_) | 472 if (!sync_worker_) |
| 484 return; | 473 return; |
| 485 | 474 |
| 486 remote_change_processor_wrapper_.reset( | 475 remote_change_processor_wrapper_.reset( |
| 487 new RemoteChangeProcessorWrapper(processor)); | 476 new RemoteChangeProcessorWrapper(processor)); |
| 488 | 477 |
| 489 remote_change_processor_on_worker_.reset(new RemoteChangeProcessorOnWorker( | 478 remote_change_processor_on_worker_.reset(new RemoteChangeProcessorOnWorker( |
| 490 remote_change_processor_wrapper_->AsWeakPtr(), | 479 remote_change_processor_wrapper_->AsWeakPtr(), |
| 491 ui_task_runner_.get(), | 480 ui_task_runner_.get(), |
| 492 worker_task_runner_.get())); | 481 worker_task_runner_.get())); |
| 493 | 482 |
| 494 worker_task_runner_->PostTask( | 483 worker_task_runner_->PostTask( |
| 495 FROM_HERE, | 484 FROM_HERE, base::BindOnce(&SyncWorkerInterface::SetRemoteChangeProcessor, |
| 496 base::Bind(&SyncWorkerInterface::SetRemoteChangeProcessor, | 485 base::Unretained(sync_worker_.get()), |
| 497 base::Unretained(sync_worker_.get()), | 486 remote_change_processor_on_worker_.get())); |
| 498 remote_change_processor_on_worker_.get())); | |
| 499 } | 487 } |
| 500 | 488 |
| 501 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() { | 489 LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() { |
| 502 return this; | 490 return this; |
| 503 } | 491 } |
| 504 | 492 |
| 505 RemoteServiceState SyncEngine::GetCurrentState() const { | 493 RemoteServiceState SyncEngine::GetCurrentState() const { |
| 506 if (!sync_enabled_) | 494 if (!sync_enabled_) |
| 507 return REMOTE_SERVICE_DISABLED; | 495 return REMOTE_SERVICE_DISABLED; |
| 508 if (!has_refresh_token_) | 496 if (!has_refresh_token_) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 519 return; | 507 return; |
| 520 } | 508 } |
| 521 | 509 |
| 522 StatusMapCallback tracked_callback = | 510 StatusMapCallback tracked_callback = |
| 523 callback_tracker_.Register(abort_closure, callback); | 511 callback_tracker_.Register(abort_closure, callback); |
| 524 StatusMapCallback relayed_callback = | 512 StatusMapCallback relayed_callback = |
| 525 RelayCallbackToCurrentThread(FROM_HERE, tracked_callback); | 513 RelayCallbackToCurrentThread(FROM_HERE, tracked_callback); |
| 526 | 514 |
| 527 worker_task_runner_->PostTask( | 515 worker_task_runner_->PostTask( |
| 528 FROM_HERE, | 516 FROM_HERE, |
| 529 base::Bind(&SyncWorkerInterface::GetOriginStatusMap, | 517 base::BindOnce(&SyncWorkerInterface::GetOriginStatusMap, |
| 530 base::Unretained(sync_worker_.get()), | 518 base::Unretained(sync_worker_.get()), relayed_callback)); |
| 531 relayed_callback)); | |
| 532 } | 519 } |
| 533 | 520 |
| 534 void SyncEngine::DumpFiles(const GURL& origin, | 521 void SyncEngine::DumpFiles(const GURL& origin, |
| 535 const ListCallback& callback) { | 522 const ListCallback& callback) { |
| 536 base::Closure abort_closure = | 523 base::Closure abort_closure = |
| 537 base::Bind(callback, base::Passed(std::unique_ptr<base::ListValue>())); | 524 base::Bind(callback, base::Passed(std::unique_ptr<base::ListValue>())); |
| 538 | 525 |
| 539 if (!sync_worker_) { | 526 if (!sync_worker_) { |
| 540 abort_closure.Run(); | 527 abort_closure.Run(); |
| 541 return; | 528 return; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 if (sync_enabled_) { | 566 if (sync_enabled_) { |
| 580 if (!sync_worker_) | 567 if (!sync_worker_) |
| 581 Initialize(); | 568 Initialize(); |
| 582 | 569 |
| 583 // Have no login credential. | 570 // Have no login credential. |
| 584 if (!sync_worker_) | 571 if (!sync_worker_) |
| 585 return; | 572 return; |
| 586 | 573 |
| 587 worker_task_runner_->PostTask( | 574 worker_task_runner_->PostTask( |
| 588 FROM_HERE, | 575 FROM_HERE, |
| 589 base::Bind(&SyncWorkerInterface::SetSyncEnabled, | 576 base::BindOnce(&SyncWorkerInterface::SetSyncEnabled, |
| 590 base::Unretained(sync_worker_.get()), | 577 base::Unretained(sync_worker_.get()), sync_enabled_)); |
| 591 sync_enabled_)); | |
| 592 return; | 578 return; |
| 593 } | 579 } |
| 594 | 580 |
| 595 if (!sync_worker_) | 581 if (!sync_worker_) |
| 596 return; | 582 return; |
| 597 | 583 |
| 598 // TODO(tzik): Consider removing SyncWorkerInterface::SetSyncEnabled and | 584 // TODO(tzik): Consider removing SyncWorkerInterface::SetSyncEnabled and |
| 599 // let SyncEngine handle the flag. | 585 // let SyncEngine handle the flag. |
| 600 worker_task_runner_->PostTask( | 586 worker_task_runner_->PostTask( |
| 601 FROM_HERE, | 587 FROM_HERE, |
| 602 base::Bind(&SyncWorkerInterface::SetSyncEnabled, | 588 base::BindOnce(&SyncWorkerInterface::SetSyncEnabled, |
| 603 base::Unretained(sync_worker_.get()), | 589 base::Unretained(sync_worker_.get()), sync_enabled_)); |
| 604 sync_enabled_)); | |
| 605 Reset(); | 590 Reset(); |
| 606 } | 591 } |
| 607 | 592 |
| 608 void SyncEngine::PromoteDemotedChanges(const base::Closure& callback) { | 593 void SyncEngine::PromoteDemotedChanges(const base::Closure& callback) { |
| 609 if (!sync_worker_) { | 594 if (!sync_worker_) { |
| 610 callback.Run(); | 595 callback.Run(); |
| 611 return; | 596 return; |
| 612 } | 597 } |
| 613 | 598 |
| 614 base::Closure relayed_callback = RelayCallbackToCurrentThread( | 599 base::Closure relayed_callback = RelayCallbackToCurrentThread( |
| 615 FROM_HERE, callback_tracker_.Register(callback, callback)); | 600 FROM_HERE, callback_tracker_.Register(callback, callback)); |
| 616 | 601 |
| 617 worker_task_runner_->PostTask( | 602 worker_task_runner_->PostTask( |
| 618 FROM_HERE, | 603 FROM_HERE, |
| 619 base::Bind(&SyncWorkerInterface::PromoteDemotedChanges, | 604 base::BindOnce(&SyncWorkerInterface::PromoteDemotedChanges, |
| 620 base::Unretained(sync_worker_.get()), | 605 base::Unretained(sync_worker_.get()), relayed_callback)); |
| 621 relayed_callback)); | |
| 622 } | 606 } |
| 623 | 607 |
| 624 void SyncEngine::ApplyLocalChange(const FileChange& local_change, | 608 void SyncEngine::ApplyLocalChange(const FileChange& local_change, |
| 625 const base::FilePath& local_path, | 609 const base::FilePath& local_path, |
| 626 const SyncFileMetadata& local_metadata, | 610 const SyncFileMetadata& local_metadata, |
| 627 const storage::FileSystemURL& url, | 611 const storage::FileSystemURL& url, |
| 628 const SyncStatusCallback& callback) { | 612 const SyncStatusCallback& callback) { |
| 629 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) { | 613 if (GetCurrentState() == REMOTE_SERVICE_DISABLED) { |
| 630 callback.Run(SYNC_STATUS_SYNC_DISABLED); | 614 callback.Run(SYNC_STATUS_SYNC_DISABLED); |
| 631 return; | 615 return; |
| 632 } | 616 } |
| 633 | 617 |
| 634 if (!sync_worker_) { | 618 if (!sync_worker_) { |
| 635 callback.Run(SYNC_STATUS_ABORT); | 619 callback.Run(SYNC_STATUS_ABORT); |
| 636 return; | 620 return; |
| 637 } | 621 } |
| 638 | 622 |
| 639 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( | 623 SyncStatusCallback relayed_callback = RelayCallbackToCurrentThread( |
| 640 FROM_HERE, TrackCallback(callback)); | 624 FROM_HERE, TrackCallback(callback)); |
| 641 worker_task_runner_->PostTask( | 625 worker_task_runner_->PostTask( |
| 642 FROM_HERE, | 626 FROM_HERE, |
| 643 base::Bind(&SyncWorkerInterface::ApplyLocalChange, | 627 base::BindOnce(&SyncWorkerInterface::ApplyLocalChange, |
| 644 base::Unretained(sync_worker_.get()), | 628 base::Unretained(sync_worker_.get()), local_change, |
| 645 local_change, | 629 local_path, local_metadata, url, relayed_callback)); |
| 646 local_path, | |
| 647 local_metadata, | |
| 648 url, | |
| 649 relayed_callback)); | |
| 650 } | 630 } |
| 651 | 631 |
| 652 void SyncEngine::OnNotificationReceived() { | 632 void SyncEngine::OnNotificationReceived() { |
| 653 if (!sync_worker_) | 633 if (!sync_worker_) |
| 654 return; | 634 return; |
| 655 | 635 |
| 656 worker_task_runner_->PostTask( | 636 worker_task_runner_->PostTask( |
| 657 FROM_HERE, | 637 FROM_HERE, |
| 658 base::Bind(&SyncWorkerInterface::ActivateService, | 638 base::BindOnce(&SyncWorkerInterface::ActivateService, |
| 659 base::Unretained(sync_worker_.get()), | 639 base::Unretained(sync_worker_.get()), REMOTE_SERVICE_OK, |
| 660 REMOTE_SERVICE_OK, | 640 "Got push notification for Drive")); |
| 661 "Got push notification for Drive")); | |
| 662 } | 641 } |
| 663 | 642 |
| 664 void SyncEngine::OnPushNotificationEnabled(bool /* enabled */) {} | 643 void SyncEngine::OnPushNotificationEnabled(bool /* enabled */) {} |
| 665 | 644 |
| 666 void SyncEngine::OnReadyToSendRequests() { | 645 void SyncEngine::OnReadyToSendRequests() { |
| 667 has_refresh_token_ = true; | 646 has_refresh_token_ = true; |
| 668 if (!sync_worker_) | 647 if (!sync_worker_) |
| 669 return; | 648 return; |
| 670 | 649 |
| 671 worker_task_runner_->PostTask( | 650 worker_task_runner_->PostTask( |
| 672 FROM_HERE, | 651 FROM_HERE, base::BindOnce(&SyncWorkerInterface::ActivateService, |
| 673 base::Bind(&SyncWorkerInterface::ActivateService, | 652 base::Unretained(sync_worker_.get()), |
| 674 base::Unretained(sync_worker_.get()), | 653 REMOTE_SERVICE_OK, "Authenticated")); |
| 675 REMOTE_SERVICE_OK, | |
| 676 "Authenticated")); | |
| 677 } | 654 } |
| 678 | 655 |
| 679 void SyncEngine::OnRefreshTokenInvalid() { | 656 void SyncEngine::OnRefreshTokenInvalid() { |
| 680 has_refresh_token_ = false; | 657 has_refresh_token_ = false; |
| 681 if (!sync_worker_) | 658 if (!sync_worker_) |
| 682 return; | 659 return; |
| 683 | 660 |
| 684 worker_task_runner_->PostTask( | 661 worker_task_runner_->PostTask( |
| 685 FROM_HERE, | 662 FROM_HERE, base::BindOnce(&SyncWorkerInterface::DeactivateService, |
| 686 base::Bind(&SyncWorkerInterface::DeactivateService, | 663 base::Unretained(sync_worker_.get()), |
| 687 base::Unretained(sync_worker_.get()), | 664 "Found invalid refresh token.")); |
| 688 "Found invalid refresh token.")); | |
| 689 } | 665 } |
| 690 | 666 |
| 691 void SyncEngine::OnNetworkChanged( | 667 void SyncEngine::OnNetworkChanged( |
| 692 net::NetworkChangeNotifier::ConnectionType type) { | 668 net::NetworkChangeNotifier::ConnectionType type) { |
| 693 if (!sync_worker_) | 669 if (!sync_worker_) |
| 694 return; | 670 return; |
| 695 | 671 |
| 696 bool network_available_old = network_available_; | 672 bool network_available_old = network_available_; |
| 697 network_available_ = (type != net::NetworkChangeNotifier::CONNECTION_NONE); | 673 network_available_ = (type != net::NetworkChangeNotifier::CONNECTION_NONE); |
| 698 | 674 |
| 699 if (!network_available_old && network_available_) { | 675 if (!network_available_old && network_available_) { |
| 700 worker_task_runner_->PostTask( | 676 worker_task_runner_->PostTask( |
| 701 FROM_HERE, | 677 FROM_HERE, base::BindOnce(&SyncWorkerInterface::ActivateService, |
| 702 base::Bind(&SyncWorkerInterface::ActivateService, | 678 base::Unretained(sync_worker_.get()), |
| 703 base::Unretained(sync_worker_.get()), | 679 REMOTE_SERVICE_OK, "Connected")); |
| 704 REMOTE_SERVICE_OK, | |
| 705 "Connected")); | |
| 706 } else if (network_available_old && !network_available_) { | 680 } else if (network_available_old && !network_available_) { |
| 707 worker_task_runner_->PostTask( | 681 worker_task_runner_->PostTask( |
| 708 FROM_HERE, | 682 FROM_HERE, |
| 709 base::Bind(&SyncWorkerInterface::DeactivateService, | 683 base::BindOnce(&SyncWorkerInterface::DeactivateService, |
| 710 base::Unretained(sync_worker_.get()), | 684 base::Unretained(sync_worker_.get()), "Disconnected")); |
| 711 "Disconnected")); | |
| 712 } | 685 } |
| 713 } | 686 } |
| 714 | 687 |
| 715 void SyncEngine::GoogleSigninFailed(const GoogleServiceAuthError& error) { | 688 void SyncEngine::GoogleSigninFailed(const GoogleServiceAuthError& error) { |
| 716 Reset(); | 689 Reset(); |
| 717 UpdateServiceState(REMOTE_SERVICE_AUTHENTICATION_REQUIRED, | 690 UpdateServiceState(REMOTE_SERVICE_AUTHENTICATION_REQUIRED, |
| 718 "Failed to sign in."); | 691 "Failed to sign in."); |
| 719 } | 692 } |
| 720 | 693 |
| 721 void SyncEngine::GoogleSigninSucceeded(const std::string& account_id, | 694 void SyncEngine::GoogleSigninSucceeded(const std::string& account_id, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 | 771 |
| 799 SyncStatusCallback SyncEngine::TrackCallback( | 772 SyncStatusCallback SyncEngine::TrackCallback( |
| 800 const SyncStatusCallback& callback) { | 773 const SyncStatusCallback& callback) { |
| 801 return callback_tracker_.Register( | 774 return callback_tracker_.Register( |
| 802 base::Bind(callback, SYNC_STATUS_ABORT), | 775 base::Bind(callback, SYNC_STATUS_ABORT), |
| 803 callback); | 776 callback); |
| 804 } | 777 } |
| 805 | 778 |
| 806 } // namespace drive_backend | 779 } // namespace drive_backend |
| 807 } // namespace sync_file_system | 780 } // namespace sync_file_system |
| OLD | NEW |