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

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

Issue 2023293002: OfflinePageModel cleanups - improved CanSavePage() and moved static kInvalidOfflineId to impl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" 8 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h"
9 #include "chrome/browser/android/offline_pages/offline_page_utils.h"
9 #include "components/offline_pages/background/save_page_request.h" 10 #include "components/offline_pages/background/save_page_request.h"
10 #include "content/public/browser/browser_context.h" 11 #include "content/public/browser/browser_context.h"
11 12
12 namespace offline_pages { 13 namespace offline_pages {
13 14
14 PrerenderingOffliner::PrerenderingOffliner( 15 PrerenderingOffliner::PrerenderingOffliner(
15 content::BrowserContext* browser_context, 16 content::BrowserContext* browser_context,
16 const OfflinerPolicy* policy, 17 const OfflinerPolicy* policy,
17 OfflinePageModel* offline_page_model) 18 OfflinePageModel* offline_page_model)
18 : browser_context_(browser_context), 19 : browser_context_(browser_context),
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 completion_callback.Run(request, save_status); 95 completion_callback.Run(request, save_status);
95 } 96 }
96 97
97 bool PrerenderingOffliner::LoadAndSave(const SavePageRequest& request, 98 bool PrerenderingOffliner::LoadAndSave(const SavePageRequest& request,
98 const CompletionCallback& callback) { 99 const CompletionCallback& callback) {
99 if (pending_request_) { 100 if (pending_request_) {
100 DVLOG(1) << "Already have pending request"; 101 DVLOG(1) << "Already have pending request";
101 return false; 102 return false;
102 } 103 }
103 104
104 if (!CanSavePage(request.url())) { 105 if (!OfflinePageUtils::CanSaveURL(request.url())) {
105 DVLOG(1) << "Not able to save page"; 106 DVLOG(1) << "Not able to save page";
106 return false; 107 return false;
107 } 108 }
108 109
109 // Track pending request for callback handling. 110 // Track pending request for callback handling.
110 pending_request_ = &request; 111 pending_request_ = &request;
111 112
112 // Kick off load page attempt. 113 // Kick off load page attempt.
113 bool accepted = GetOrCreateLoader()->LoadPage( 114 bool accepted = GetOrCreateLoader()->LoadPage(
114 request.url(), 115 request.url(),
(...skipping 12 matching lines...) Expand all
127 // TODO(dougarnett): Consider ability to cancel SavePage request. 128 // TODO(dougarnett): Consider ability to cancel SavePage request.
128 } 129 }
129 } 130 }
130 131
131 void PrerenderingOffliner::SetLoaderForTesting( 132 void PrerenderingOffliner::SetLoaderForTesting(
132 std::unique_ptr<PrerenderingLoader> loader) { 133 std::unique_ptr<PrerenderingLoader> loader) {
133 DCHECK(!loader_); 134 DCHECK(!loader_);
134 loader_ = std::move(loader); 135 loader_ = std::move(loader);
135 } 136 }
136 137
137 bool PrerenderingOffliner::CanSavePage(const GURL& url) {
138 if (!offline_page_model_) {
139 // Assume we can save if no OfflinePageModel (for unit tests).
140 // TODO(dougarnett): Make OfflinePageModel::CanSavePage() mockable for test.
141 return true;
142 }
143 return offline_page_model_->CanSavePage(url);
144 }
145
146 void PrerenderingOffliner::SavePage( 138 void PrerenderingOffliner::SavePage(
147 const GURL& url, 139 const GURL& url,
148 const ClientId& client_id, 140 const ClientId& client_id,
149 std::unique_ptr<OfflinePageArchiver> archiver, 141 std::unique_ptr<OfflinePageArchiver> archiver,
150 const SavePageCallback& callback) { 142 const SavePageCallback& callback) {
151 DCHECK(offline_page_model_); 143 DCHECK(offline_page_model_);
152 offline_page_model_->SavePage(url, client_id, std::move(archiver), callback); 144 offline_page_model_->SavePage(url, client_id, std::move(archiver), callback);
153 } 145 }
154 146
155 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() { 147 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() {
156 if (!loader_) { 148 if (!loader_) {
157 loader_.reset(new PrerenderingLoader(browser_context_)); 149 loader_.reset(new PrerenderingLoader(browser_context_));
158 } 150 }
159 return loader_.get(); 151 return loader_.get();
160 } 152 }
161 153
162 } // namespace offline_pages 154 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698