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

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

Issue 1961083002: Updates to PrerenderingOffliner and PrerenderingLoader interfaces to push PrerenderManager knowledge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed the unnecessary const on enum accessor as it made a trybot unhappy. Created 4 years, 7 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 b6d834be1f87df73b59c7582489df0e665eed38d..c38afcb7ab8f248ff3751aa2ecabf301cdf3c91c 100644
--- a/chrome/browser/android/offline_pages/prerendering_offliner.cc
+++ b/chrome/browser/android/offline_pages/prerendering_offliner.cc
@@ -4,23 +4,54 @@
#include "chrome/browser/android/offline_pages/prerendering_offliner.h"
+#include "base/bind.h"
+#include "components/offline_pages/background/save_page_request.h"
+#include "content/public/browser/browser_context.h"
+
namespace offline_pages {
-PrerenderingOffliner::PrerenderingOffliner(const OfflinerPolicy* policy,
- PrerenderManager* prerender_manager,
- OfflinePageModel* offline_page_model)
- : loader_(new PrerenderingLoader(prerender_manager)) {}
+PrerenderingOffliner::PrerenderingOffliner(
+ content::BrowserContext* browser_context,
+ const OfflinerPolicy* policy,
+ OfflinePageModel* offline_page_model)
+ : browser_context_(browser_context),
+ offline_page_model_(offline_page_model),
+ weak_ptr_factory_(this) {}
PrerenderingOffliner::~PrerenderingOffliner() {}
+void PrerenderingOffliner::OnLoadPageDone(
+ const Offliner::CompletionStatus load_status,
+ content::WebContents* contents) {
+ // TODO(dougarnett): Implement save attempt and running CompletionCallback.
+}
+
bool PrerenderingOffliner::LoadAndSave(const SavePageRequest& request,
const CompletionCallback& callback) {
- // TODO(dougarnett): implement.
- return false;
+ if (!offline_page_model_->CanSavePage(request.url()))
+ return false;
+
+ // Kick off load page attempt.
+ return GetOrCreateLoader()->LoadPage(
+ request.url(), base::Bind(&PrerenderingOffliner::OnLoadPageDone,
+ weak_ptr_factory_.GetWeakPtr()));
}
void PrerenderingOffliner::Cancel() {
- loader_->StopLoading();
+ GetOrCreateLoader()->StopLoading();
+}
+
+PrerenderingLoader* PrerenderingOffliner::GetOrCreateLoader() {
+ if (!loader_) {
+ loader_.reset(new PrerenderingLoader(browser_context_));
+ }
+ return loader_.get();
+}
+
+void PrerenderingOffliner::SetLoaderForTesting(
+ std::unique_ptr<PrerenderingLoader> loader) {
+ DCHECK(!loader_);
+ loader_ = std::move(loader);
}
} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698