Commit 1093cd5a authored by Yafei Duan's avatar Yafei Duan Committed by Commit Bot

[Offline Pages] Avoid moving OnceCallback twice.

Avoid moving OnceCallback twice by wrapping it using
base::AdaptCallbackForRepeating.

Bug: 874024
Change-Id: Ieee18e1084a555f4757e7c18c54a79cb13902736
Reviewed-on: https://chromium-review.googlesource.com/1175311
Commit-Queue: Yafei Duan <romax@chromium.org>
Reviewed-by: default avatarPeter Williamson <petewil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583145}
parent f4adaf8f
......@@ -343,18 +343,22 @@ void RequestCoordinator::GetQueuedRequestsCallback(
void RequestCoordinator::StopOfflining(CancelCallback final_callback,
Offliner::RequestStatus stop_status) {
// Wrapping the |final_callback| since it might be moved twice if offliner
// returns false when Cancel().
// TODO(https://crbug.com/874313): refactor so we can use |final_callback| as
// an OnceCallback.
auto callback = base::AdaptCallbackForRepeating(std::move(final_callback));
if (offliner_ && state_ == RequestCoordinatorState::OFFLINING) {
DCHECK_NE(active_request_id_, 0);
if (offliner_->Cancel(base::BindOnce(
&RequestCoordinator::HandleCancelUpdateStatusCallback,
weak_ptr_factory_.GetWeakPtr(), std::move(final_callback),
stop_status))) {
weak_ptr_factory_.GetWeakPtr(), callback, stop_status))) {
return;
}
}
UpdateStatusForCancel(stop_status);
std::move(final_callback).Run(active_request_id_);
callback.Run(active_request_id_);
}
void RequestCoordinator::GetRequestsForSchedulingCallback(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment