Chromium Code Reviews| Index: chrome/browser/android/offline_pages/background_loader_offliner.cc |
| diff --git a/chrome/browser/android/offline_pages/background_loader_offliner.cc b/chrome/browser/android/offline_pages/background_loader_offliner.cc |
| index 6c4a9b3062be368710d69e0f30013a9f1ee276ff..bf0fd4ef596f0935f8acc2b5b5e3bf72b6aa5d7c 100644 |
| --- a/chrome/browser/android/offline_pages/background_loader_offliner.cc |
| +++ b/chrome/browser/android/offline_pages/background_loader_offliner.cc |
| @@ -81,6 +81,7 @@ void HandleApplicationStateChangeCancel( |
| completion_callback.Run(canceled_request, |
| Offliner::RequestStatus::FOREGROUND_CANCELED); |
| } |
| + |
| } // namespace |
| BackgroundLoaderOffliner::BackgroundLoaderOffliner( |
| @@ -414,8 +415,16 @@ void BackgroundLoaderOffliner::OnPageSaved(SavePageResult save_result, |
| ResetState(); |
| if (save_state_ == DELETE_AFTER_SAVE) { |
| + // Delete the saved page off disk and from the OPM. |
| + std::vector<int64_t> offline_ids; |
| + offline_ids.push_back(offline_id); |
| + offline_page_model_->DeletePagesByOfflineId( |
| + offline_ids, |
| + base::Bind(&BackgroundLoaderOffliner::DeleteOfflinePageCallback, |
| + weak_ptr_factory_.GetWeakPtr(), request)); |
| save_state_ = NONE; |
| - cancel_callback_.Run(request); |
| + // We don't return to the caller until the page has been removed from the |
|
Dmitry Titov
2017/05/01 23:00:38
I think this comment is not needed, we do this kin
|
| + // OfflinePageModel to prevent retrying a page while we are deleting it. |
| return; |
| } |
| @@ -436,6 +445,12 @@ void BackgroundLoaderOffliner::OnPageSaved(SavePageResult save_result, |
| completion_callback_.Run(request, save_status); |
| } |
| +void BackgroundLoaderOffliner::DeleteOfflinePageCallback( |
| + const SavePageRequest& request, |
| + DeletePageResult result) { |
| + cancel_callback_.Run(request); |
| +} |
| + |
| void BackgroundLoaderOffliner::ResetState() { |
| pending_request_.reset(); |
| snapshot_controller_.reset(); |