Chromium Code Reviews| Index: components/sync_driver/sync_service.cc |
| diff --git a/components/sync_driver/sync_service.cc b/components/sync_driver/sync_service.cc |
| index ab73a66a9f6780baef7710a45b6e1733dbb16ac3..ccff75fe2e8bf8ed891be3c3bac444ebfc8f5016 100644 |
| --- a/components/sync_driver/sync_service.cc |
| +++ b/components/sync_driver/sync_service.cc |
| @@ -9,9 +9,31 @@ |
| namespace sync_driver { |
| +SyncSetupInProgressHandle::SyncSetupInProgressHandle(base::Closure on_destroy) |
| + : on_destroy_(on_destroy) {} |
| + |
| +SyncSetupInProgressHandle::~SyncSetupInProgressHandle() { |
| + on_destroy_.Run(); |
| +} |
| + |
| SyncService::SyncTokenStatus::SyncTokenStatus() |
| : connection_status(syncer::CONNECTION_NOT_ATTEMPTED), |
| last_get_token_error(GoogleServiceAuthError::AuthErrorNone()) {} |
| -SyncService::SyncTokenStatus::~SyncTokenStatus() {} |
| +std::unique_ptr<SyncSetupInProgressHandle> |
| +SyncService::GetSetupInProgressHandle() { |
| + if (++outstanding_setup_in_progress_handles_ == 1) |
| + SetSetupInProgress(true); |
| + |
| + return std::unique_ptr<SyncSetupInProgressHandle>( |
| + new SyncSetupInProgressHandle( |
| + base::Bind(&SyncService::OnSetupInProgressHandleDestroyed, |
| + base::Unretained(this)))); |
|
tommycli
2016/06/09 17:46:38
Will the SyncService ever get destroyed before the
Nicolas Zea
2016/06/09 23:02:01
It shouldn't, but either way this seems brittle. I
tommycli
2016/06/10 00:04:15
Done.
|
| } |
| + |
| +void SyncService::OnSetupInProgressHandleDestroyed() { |
| + if (--outstanding_setup_in_progress_handles_ == 0) |
| + SetSetupInProgress(false); |
| +} |
| + |
| +} // namespace sync_driver |