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_; |