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

Side by Side Diff: chrome/browser/android/offline_pages/prerendering_offliner.cc

Issue 2637563002: [Offline Pages] Snapshotting on timeout of last retry. (Closed)
Patch Set: rebasing and a cl format Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/offline_pages/prerendering_offliner.h" 5 #include "chrome/browser/android/offline_pages/prerendering_offliner.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/sys_info.h" 9 #include "base/sys_info.h"
10 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" 10 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h"
11 #include "chrome/browser/android/offline_pages/offliner_helper.h" 11 #include "chrome/browser/android/offline_pages/offliner_helper.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "components/offline_pages/core/background/offliner_policy.h"
13 #include "components/offline_pages/core/background/save_page_request.h" 14 #include "components/offline_pages/core/background/save_page_request.h"
14 #include "components/offline_pages/core/client_namespace_constants.h" 15 #include "components/offline_pages/core/client_namespace_constants.h"
15 #include "components/offline_pages/core/offline_page_model.h" 16 #include "components/offline_pages/core/offline_page_model.h"
16 #include "content/public/browser/browser_context.h" 17 #include "content/public/browser/browser_context.h"
17 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
18 19
19 namespace offline_pages { 20 namespace offline_pages {
20 21
21 PrerenderingOffliner::PrerenderingOffliner( 22 PrerenderingOffliner::PrerenderingOffliner(
22 content::BrowserContext* browser_context, 23 content::BrowserContext* browser_context,
23 const OfflinerPolicy* policy, 24 const OfflinerPolicy* policy,
24 OfflinePageModel* offline_page_model) 25 OfflinePageModel* offline_page_model)
25 : browser_context_(browser_context), 26 : browser_context_(browser_context),
27 policy_(policy),
26 offline_page_model_(offline_page_model), 28 offline_page_model_(offline_page_model),
27 pending_request_(nullptr), 29 pending_request_(nullptr),
28 is_low_end_device_(base::SysInfo::IsLowEndDevice()), 30 is_low_end_device_(base::SysInfo::IsLowEndDevice()),
29 app_listener_(nullptr), 31 app_listener_(nullptr),
30 weak_ptr_factory_(this) {} 32 weak_ptr_factory_(this) {}
31 33
32 PrerenderingOffliner::~PrerenderingOffliner() {} 34 PrerenderingOffliner::~PrerenderingOffliner() {}
33 35
34 void PrerenderingOffliner::OnLoadPageDone( 36 void PrerenderingOffliner::OnLoadPageDone(
35 const SavePageRequest& request, 37 const SavePageRequest& request,
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 195
194 void PrerenderingOffliner::Cancel() { 196 void PrerenderingOffliner::Cancel() {
195 if (pending_request_) { 197 if (pending_request_) {
196 pending_request_.reset(nullptr); 198 pending_request_.reset(nullptr);
197 app_listener_.reset(nullptr); 199 app_listener_.reset(nullptr);
198 GetOrCreateLoader()->StopLoading(); 200 GetOrCreateLoader()->StopLoading();
199 // TODO(dougarnett): Consider ability to cancel SavePage request. 201 // TODO(dougarnett): Consider ability to cancel SavePage request.
200 } 202 }
201 } 203 }
202 204
205 bool PrerenderingOffliner::HandleTimeout(const SavePageRequest& request) {
206 if (pending_request_) {
207 DCHECK(request.request_id() == pending_request_->request_id());
208 if (GetOrCreateLoader()->IsLowbarMet() &&
209 (request.started_attempt_count() + 1 >= policy_->GetMaxStartedTries() ||
210 request.completed_attempt_count() + 1 >=
211 policy_->GetMaxCompletedTries())) {
212 GetOrCreateLoader()->StartSnapshot();
213 return true;
214 }
215 }
216 return false;
217 }
218
203 void PrerenderingOffliner::SetLoaderForTesting( 219 void PrerenderingOffliner::SetLoaderForTesting(
204 std::unique_ptr<PrerenderingLoader> loader) { 220 std::unique_ptr<PrerenderingLoader> loader) {
205 DCHECK(!loader_); 221 DCHECK(!loader_);
206 loader_ = std::move(loader); 222 loader_ = std::move(loader);
207 } 223 }
208 224
209 void PrerenderingOffliner::SetLowEndDeviceForTesting(bool is_low_end_device) { 225 void PrerenderingOffliner::SetLowEndDeviceForTesting(bool is_low_end_device) {
210 is_low_end_device_ = is_low_end_device; 226 is_low_end_device_ = is_low_end_device;
211 } 227 }
212 228
(...skipping 25 matching lines...) Expand all
238 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES) { 254 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES) {
239 DVLOG(1) << "App became active, canceling current offlining request"; 255 DVLOG(1) << "App became active, canceling current offlining request";
240 SavePageRequest* request = pending_request_.get(); 256 SavePageRequest* request = pending_request_.get();
241 Cancel(); 257 Cancel();
242 completion_callback_.Run(*request, 258 completion_callback_.Run(*request,
243 Offliner::RequestStatus::FOREGROUND_CANCELED); 259 Offliner::RequestStatus::FOREGROUND_CANCELED);
244 } 260 }
245 } 261 }
246 262
247 } // namespace offline_pages 263 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698