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

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

Issue 2016313003: Adds unit tests for Offliner SavePage implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Renamed Fake* to Stub* and added files to proper build target 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 "components/offline_pages/background/save_page_request.h" 9 #include "components/offline_pages/background/save_page_request.h"
10 #include "content/public/browser/browser_context.h" 10 #include "content/public/browser/browser_context.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 completion_callback.Run(request, save_status); 94 completion_callback.Run(request, save_status);
95 } 95 }
96 96
97 bool PrerenderingOffliner::LoadAndSave(const SavePageRequest& request, 97 bool PrerenderingOffliner::LoadAndSave(const SavePageRequest& request,
98 const CompletionCallback& callback) { 98 const CompletionCallback& callback) {
99 if (pending_request_) { 99 if (pending_request_) {
100 DVLOG(1) << "Already have pending request"; 100 DVLOG(1) << "Already have pending request";
101 return false; 101 return false;
102 } 102 }
103 103
104 if (!CanSavePage(request.url())) { 104 if (!GetOrCreateLoader()->CanPrerender()) {
105 DVLOG(1) << "Not able to save page"; 105 DVLOG(1) << "Prerendering not allowed/configured";
106 return false; 106 return false;
107 } 107 }
108 108
109 if (!OfflinePageModel::CanSavePage(request.url())) {
110 DVLOG(1) << "Not able to save page for requested url: " << request.url();
111 return false;
112 }
113
109 // Track pending request for callback handling. 114 // Track pending request for callback handling.
110 pending_request_ = &request; 115 pending_request_ = &request;
111 116
112 // Kick off load page attempt. 117 // Kick off load page attempt.
113 bool accepted = GetOrCreateLoader()->LoadPage( 118 bool accepted = GetOrCreateLoader()->LoadPage(
114 request.url(), 119 request.url(),
115 base::Bind(&PrerenderingOffliner::OnLoadPageDone, 120 base::Bind(&PrerenderingOffliner::OnLoadPageDone,
116 weak_ptr_factory_.GetWeakPtr(), request, callback)); 121 weak_ptr_factory_.GetWeakPtr(), request, callback));
117 if (!accepted) 122 if (!accepted)
118 pending_request_ = nullptr; 123 pending_request_ = nullptr;
119 124
120 return accepted; 125 return accepted;
121 } 126 }
122 127
123 void PrerenderingOffliner::Cancel() { 128 void PrerenderingOffliner::Cancel() {
124 if (pending_request_) { 129 if (pending_request_) {
125 pending_request_ = nullptr; 130 pending_request_ = nullptr;
126 GetOrCreateLoader()->StopLoading(); 131 GetOrCreateLoader()->StopLoading();
127 // TODO(dougarnett): Consider ability to cancel SavePage request. 132 // TODO(dougarnett): Consider ability to cancel SavePage request.
128 } 133 }
129 } 134 }
130 135
131 void PrerenderingOffliner::SetLoaderForTesting( 136 void PrerenderingOffliner::SetLoaderForTesting(
132 std::unique_ptr<PrerenderingLoader> loader) { 137 std::unique_ptr<PrerenderingLoader> loader) {
133 DCHECK(!loader_); 138 DCHECK(!loader_);
134 loader_ = std::move(loader); 139 loader_ = std::move(loader);
135 } 140 }
136 141
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( 142 void PrerenderingOffliner::SavePage(
147 const GURL& url, 143 const GURL& url,
148 const ClientId& client_id, 144 const ClientId& client_id,
149 std::unique_ptr<OfflinePageArchiver> archiver, 145 std::unique_ptr<OfflinePageArchiver> archiver,
150 const SavePageCallback& callback) { 146 const SavePageCallback& callback) {
151 DCHECK(offline_page_model_); 147 DCHECK(offline_page_model_);
152 offline_page_model_->SavePage(url, client_id, std::move(archiver), callback); 148 offline_page_model_->SavePage(url, client_id, std::move(archiver), callback);
153 } 149 }
154 150
155 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() { 151 PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() {
156 if (!loader_) { 152 if (!loader_) {
157 loader_.reset(new PrerenderingLoader(browser_context_)); 153 loader_.reset(new PrerenderingLoader(browser_context_));
158 } 154 }
159 return loader_.get(); 155 return loader_.get();
160 } 156 }
161 157
162 } // namespace offline_pages 158 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698