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

Unified Diff: chrome/browser/prerender/prerender_contents.h

Issue 11348357: Add observer interface to PrerenderContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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/prerender/prerender_contents.h
diff --git a/chrome/browser/prerender/prerender_contents.h b/chrome/browser/prerender/prerender_contents.h
index 7461937ef0e3dc2a121b8ba334be77ce3fa462b4..e0fa2c02ee0dfc27c79da8da929037a4ed05e5f5 100644
--- a/chrome/browser/prerender/prerender_contents.h
+++ b/chrome/browser/prerender/prerender_contents.h
@@ -9,6 +9,7 @@
#include <utility>
#include <vector>
+#include "base/observer_list.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h"
@@ -45,7 +46,6 @@ namespace prerender {
class PrerenderHandle;
class PrerenderManager;
class PrerenderRenderViewHostObserver;
-class PrerenderTracker;
class PrerenderContents : public content::NotificationObserver,
public content::WebContentsObserver {
@@ -61,7 +61,6 @@ class PrerenderContents : public content::NotificationObserver,
// prerender_tracker, and profile are stored as weak pointers.
virtual PrerenderContents* CreatePrerenderContents(
PrerenderManager* prerender_manager,
- PrerenderTracker* prerender_tracker,
Profile* profile,
const GURL& url,
const content::Referrer& referrer,
@@ -72,6 +71,19 @@ class PrerenderContents : public content::NotificationObserver,
DISALLOW_COPY_AND_ASSIGN(Factory);
};
+ class Observer {
+ public:
+ // Signals that the prerender has started running.
+ virtual void OnPrerenderStart(PrerenderContents* contents) = 0;
+
+ // Signals that the prerender has stopped running.
+ virtual void OnPrerenderStop(PrerenderContents* contents) = 0;
+
+ protected:
+ Observer();
+ virtual ~Observer() = 0;
+ };
+
// A container for extra data on pending prerenders.
struct PendingPrerenderInfo {
public:
@@ -116,6 +128,10 @@ class PrerenderContents : public content::NotificationObserver,
virtual ~PrerenderContents();
+ void AddObserver(Observer* observer);
+ void RemoveObserver(Observer* observer);
+ void ClearObservers();
mmenke 2012/12/03 20:02:47 ClearObservers() doesn't seem to have a function b
gavinp 2012/12/04 18:04:48 Done.
+
// For MatchComplete correctness, create a dummy replacement prerender
// contents to stand in for this prerender contents that (which we are about
// to destroy).
@@ -147,6 +163,8 @@ class PrerenderContents : public content::NotificationObserver,
content::RenderViewHost* GetRenderViewHostMutable();
const content::RenderViewHost* GetRenderViewHost() const;
+ PrerenderManager* prerender_manager() { return prerender_manager_; }
+
string16 title() const { return title_; }
int32 page_id() const { return page_id_; }
GURL icon_url() const { return icon_url_; }
@@ -254,13 +272,17 @@ class PrerenderContents : public content::NotificationObserver,
protected:
PrerenderContents(PrerenderManager* prerender_manager,
- PrerenderTracker* prerender_tracker,
Profile* profile,
const GURL& url,
const content::Referrer& referrer,
Origin origin,
uint8 experiment_id);
+ // These call out to methods on our Observers, using our observer_list_.
+ void NotifyPrerenderStart();
+ void NotifyPrerenderStop();
+ void NotifyPrerenderAddAlias(const GURL& alias_url);
mmenke 2012/12/03 20:02:47 NotifyPrerenderAddAlias is not currently implement
gavinp 2012/12/04 18:04:48 Done.
+
// Called whenever a RenderViewHost is created for prerendering. Only called
// once the RenderViewHost has a RenderView and RenderWidgetHostView.
virtual void OnRenderViewHostCreated(
@@ -303,12 +325,11 @@ class PrerenderContents : public content::NotificationObserver,
// Returns the ProcessMetrics for the render process, if it exists.
base::ProcessMetrics* MaybeGetProcessMetrics();
+ ObserverList<Observer> observer_list_;
+
// The prerender manager owning this object.
PrerenderManager* prerender_manager_;
- // The prerender tracker tracking prerenders.
- PrerenderTracker* prerender_tracker_;
-
// The URL being prerendered.
GURL prerender_url_;

Powered by Google App Engine
This is Rietveld 408576698