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

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

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.h
diff --git a/chrome/browser/android/offline_pages/prerendering_offliner.h b/chrome/browser/android/offline_pages/prerendering_offliner.h
index a9851429bdd1a601cc2b4678b50159b0260e3e5b..9a3f340057e34c61c0b362bb56d9a99de8e5df07 100644
--- a/chrome/browser/android/offline_pages/prerendering_offliner.h
+++ b/chrome/browser/android/offline_pages/prerendering_offliner.h
@@ -5,13 +5,15 @@
#ifndef CHROME_BROWSER_ANDROID_OFFLINE_PAGES_PRERENDERING_OFFLINER_H_
#define CHROME_BROWSER_ANDROID_OFFLINE_PAGES_PRERENDERING_OFFLINER_H_
+#include <memory>
+
+#include "base/memory/weak_ptr.h"
#include "chrome/browser/android/offline_pages/prerendering_loader.h"
#include "components/offline_pages/background/offliner.h"
#include "components/offline_pages/offline_page_model.h"
-class PrerenderManager;
-
namespace content {
+class BrowserContext;
class WebContents;
} // namespace content
@@ -24,18 +26,35 @@ class OfflinerPolicy;
// the OfflinePageModel to save it.
class PrerenderingOffliner : public Offliner {
public:
- PrerenderingOffliner(const OfflinerPolicy* policy,
- PrerenderManager* prerender_manager,
+ PrerenderingOffliner(content::BrowserContext* browser_context,
+ const OfflinerPolicy* policy,
OfflinePageModel* offline_page_model);
~PrerenderingOffliner() override;
+ // Offliner implementation.
bool LoadAndSave(const SavePageRequest& request,
const CompletionCallback& callback) override;
-
void Cancel() override;
+ // Allows a loader to be injected for testing. This may only be done once
+ // and must be called before any of the Offliner interface methods are called.
+ void SetLoaderForTesting(std::unique_ptr<PrerenderingLoader> loader);
+
private:
+ void OnLoadPageDone(const Offliner::CompletionStatus load_status,
+ content::WebContents* contents);
+
+ PrerenderingLoader* GetOrCreateLoader();
+
+ // Not owned.
+ content::BrowserContext* browser_context_;
+ // Not owned.
+ OfflinePageModel* offline_page_model_;
+ // Lazily created.
std::unique_ptr<PrerenderingLoader> loader_;
+ base::WeakPtrFactory<PrerenderingOffliner> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(PrerenderingOffliner);
};
} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698