| Index: components/offline_pages/core/background/offliner_stub.cc
|
| diff --git a/components/offline_pages/core/background/offliner_stub.cc b/components/offline_pages/core/background/offliner_stub.cc
|
| index 04fe6eae1341d75923a1ecc128c7323266869d3c..58b80a159286601b889932e8cecc78754d00f547 100644
|
| --- a/components/offline_pages/core/background/offliner_stub.cc
|
| +++ b/components/offline_pages/core/background/offliner_stub.cc
|
| @@ -24,31 +24,37 @@ bool OfflinerStub::LoadAndSave(const SavePageRequest& request,
|
| if (disable_loading_)
|
| return false;
|
|
|
| - completion_callback_ = completion_callback;
|
| - progress_callback_ = progress_callback;
|
| + pending_request_.reset(new SavePageRequest(request));
|
| + completion_callback_ =
|
| + base::Bind(completion_callback, request, Offliner::RequestStatus::SAVED);
|
|
|
| // Post the callback on the run loop.
|
| if (enable_callback_) {
|
| const int64_t arbitrary_size = 153LL;
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE, base::Bind(progress_callback_, request, arbitrary_size));
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE, base::Bind(completion_callback_, request,
|
| - Offliner::RequestStatus::SAVED));
|
| + FROM_HERE, base::Bind(progress_callback, request, arbitrary_size));
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
|
| + completion_callback_);
|
| }
|
| return true;
|
| }
|
|
|
| -void OfflinerStub::Cancel(const CancelCallback& callback) {
|
| +bool OfflinerStub::Cancel(const CancelCallback& callback) {
|
| cancel_called_ = true;
|
| - callback.Run(0LL);
|
| + if (!pending_request_)
|
| + return false;
|
| +
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE, base::Bind(callback, *pending_request_.get()));
|
| + pending_request_.reset();
|
| + return true;
|
| }
|
|
|
| -bool OfflinerStub::HandleTimeout(const SavePageRequest& request) {
|
| +bool OfflinerStub::HandleTimeout(int64_t request_id) {
|
| if (snapshot_on_last_retry_) {
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE, base::Bind(completion_callback_, request,
|
| - Offliner::RequestStatus::SAVED));
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
|
| + completion_callback_);
|
| + pending_request_.reset();
|
| return true;
|
| }
|
| return false;
|
|
|