class SyncTaskAdapter : public ExclusiveTask {
public:
explicit SyncTaskAdapter(const SyncTaskManager::Task& task) : task_(task) {}
- virtual ~SyncTaskAdapter() {}
+ ~SyncTaskAdapter() override {}
- virtual void RunExclusive(const SyncStatusCallback& callback) OVERRIDE {
+ void RunExclusive(const SyncStatusCallback& callback) override {
task_.Run(callback);
}
maximum_background_task_(maximum_background_task),
pending_task_seq_(0),
task_token_seq_(SyncTaskToken::kMinimumBackgroundTaskTokenID),
- task_runner_(task_runner) {
+ task_runner_(task_runner),
+ weak_ptr_factory_(this) {
}
SyncTaskManager::~SyncTaskManager() {
+ weak_ptr_factory_.InvalidateWeakPtrs();
+
client_.reset();
token_.reset();
}
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
DCHECK(!token_);
NotifyTaskDone(
- SyncTaskToken::CreateForForegroundTask(AsWeakPtr(), task_runner_.get()),
+ SyncTaskToken::CreateForForegroundTask(
+ weak_ptr_factory_.GetWeakPtr(), task_runner_.get()),
status);
}
scoped_ptr<SyncTaskToken> token(GetToken(from_here, callback));
if (!token) {
PushPendingTask(
- base::Bind(&SyncTaskManager::ScheduleSyncTask, AsWeakPtr(), from_here,
+ base::Bind(&SyncTaskManager::ScheduleSyncTask,
+ weak_ptr_factory_.GetWeakPtr(), from_here,
base::Passed(&task), priority, callback),
priority);
return;
task_runner_->PostTask(
FROM_HERE,
base::Bind(&SyncTaskManager::MaybeStartNextForegroundTask,
- AsWeakPtr(), base::Passed(&token)));
+ weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
}
void SyncTaskManager::UpdateTaskBlockerBody(
if (!foreground_task_token) {
PushPendingTask(
base::Bind(&SyncTaskManager::UpdateTaskBlockerBody,
- AsWeakPtr(),
+ weak_ptr_factory_.GetWeakPtr(),
base::Passed(&foreground_task_token),
base::Passed(&background_task_token),
base::Passed(&task_log),
base::Passed(&task_blocker),
continuation),
PRIORITY_HIGH);
- MaybeStartNextForegroundTask(scoped_ptr<SyncTaskToken>());
+ MaybeStartNextForegroundTask(nullptr);
return;
}
}
// Wait for NotifyTaskDone to release a |task_blocker|.
pending_backgrounding_task_ =
base::Bind(&SyncTaskManager::UpdateTaskBlockerBody,
- AsWeakPtr(),
+ weak_ptr_factory_.GetWeakPtr(),
base::Passed(&foreground_task_token),
base::Passed(&background_task_token),
base::Passed(&task_log),
foreground_task_token->clear_callback();
background_task_token =
- SyncTaskToken::CreateForBackgroundTask(AsWeakPtr(),
+ SyncTaskToken::CreateForBackgroundTask(weak_ptr_factory_.GetWeakPtr(),
task_runner_.get(),
task_token_seq_++,
task_blocker.Pass());
}
token_ = foreground_task_token.Pass();
- MaybeStartNextForegroundTask(scoped_ptr<SyncTaskToken>());
+ MaybeStartNextForegroundTask(nullptr);
background_task_token->SetTaskLog(task_log.Pass());
continuation.Run(background_task_token.Pass());
}
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
if (!token_)
- return scoped_ptr<SyncTaskToken>();
+ return nullptr;
token_->UpdateTask(from_here, callback);
return token_.Pass();
}