Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1456)

Unified Diff: chrome/browser/android/offline_pages/prerendering_offliner.cc

Issue 2836863002: [Offline pages] Removing active_request_ from request coordinator (Closed)
Patch Set: Removing extra dcheck Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/offline_pages/prerendering_offliner.cc
diff --git a/chrome/browser/android/offline_pages/prerendering_offliner.cc b/chrome/browser/android/offline_pages/prerendering_offliner.cc
index 899bc1070eb66a479878c82f7a481f5d586dbec4..f2c29a0aee39318f9fa5395cc93465865229f3ce 100644
--- a/chrome/browser/android/offline_pages/prerendering_offliner.cc
+++ b/chrome/browser/android/offline_pages/prerendering_offliner.cc
@@ -255,23 +255,23 @@ bool PrerenderingOffliner::LoadAndSave(
}
void PrerenderingOffliner::Cancel(const CancelCallback& callback) {
- int64_t request_id = 0LL;
- if (pending_request_) {
- request_id = pending_request_->request_id();
- pending_request_.reset(nullptr);
- app_listener_.reset(nullptr);
- GetOrCreateLoader()->StopLoading();
- // TODO(dougarnett): Consider ability to cancel SavePage request.
- }
- callback.Run(request_id);
+ DCHECK(pending_request_);
+ if (!pending_request_)
Pete Williamson 2017/04/24 17:41:38 Shouldn't we be running the callback even if there
fgorski 2017/04/24 21:40:58 Handled by signature change as explained earlier.
+ return;
+ SavePageRequest canceled_request(*pending_request_.get());
+ pending_request_.reset(nullptr);
+ app_listener_.reset(nullptr);
+ GetOrCreateLoader()->StopLoading();
+ callback.Run(canceled_request);
}
-bool PrerenderingOffliner::HandleTimeout(const SavePageRequest& request) {
+bool PrerenderingOffliner::HandleTimeout(int64_t request_id) {
if (pending_request_) {
- DCHECK(request.request_id() == pending_request_->request_id());
+ DCHECK(request_id == pending_request_->request_id());
if (GetOrCreateLoader()->IsLowbarMet() &&
- (request.started_attempt_count() + 1 >= policy_->GetMaxStartedTries() ||
- request.completed_attempt_count() + 1 >=
+ (pending_request_->started_attempt_count() + 1 >=
+ policy_->GetMaxStartedTries() ||
+ pending_request_->completed_attempt_count() + 1 >=
policy_->GetMaxCompletedTries())) {
saved_on_last_retry_ = true;
GetOrCreateLoader()->StartSnapshot();
@@ -318,21 +318,20 @@ void PrerenderingOffliner::OnApplicationStateChange(
application_state ==
base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES) {
DVLOG(1) << "App became active, canceling current offlining request";
- SavePageRequest* request = pending_request_.get();
- // This works because Bind will make a copy of request, and we
- // should not have to worry about reset being called before cancel callback.
Cancel(base::Bind(&PrerenderingOffliner::HandleApplicationStateChangeCancel,
- weak_ptr_factory_.GetWeakPtr(), *request));
+ weak_ptr_factory_.GetWeakPtr()));
Pete Williamson 2017/04/24 17:41:38 If we don't pass the pending request here, how is
chili 2017/04/24 17:44:53 I think it's simply passing in the pending_request
fgorski 2017/04/24 21:40:58 Cathy is correct here, the value comes from Cancel
}
}
void PrerenderingOffliner::HandleApplicationStateChangeCancel(
- const SavePageRequest& request,
- int64_t offline_id) {
+ const SavePageRequest& canceled_request) {
// This shouldn't be immediate, but account for case where request was reset
// while waiting for callback.
- if (pending_request_ && pending_request_->request_id() != offline_id)
+ if (pending_request_ &&
+ pending_request_->request_id() != canceled_request.request_id()) {
return;
- completion_callback_.Run(request, RequestStatus::FOREGROUND_CANCELED);
+ }
+ completion_callback_.Run(canceled_request,
+ RequestStatus::FOREGROUND_CANCELED);
}
} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698