Chromium Code Reviews| Index: chrome/browser/prerender/prerender_contents.h |
| diff --git a/chrome/browser/prerender/prerender_contents.h b/chrome/browser/prerender/prerender_contents.h |
| index 0e1f4988ba8c0b2deccd458cd7c08153ff205096..f598cc043d42c08baf406ec0568cc60672cc895e 100644 |
| --- a/chrome/browser/prerender/prerender_contents.h |
| +++ b/chrome/browser/prerender/prerender_contents.h |
| @@ -37,6 +37,7 @@ class WebContents; |
| namespace prerender { |
| +class PrerenderHandle; |
| class PrerenderManager; |
| class PrerenderRenderViewHostObserver; |
| class PrerenderTracker; |
| @@ -66,6 +67,13 @@ class PrerenderContents : public content::NotificationObserver, |
| DISALLOW_COPY_AND_ASSIGN(Factory); |
| }; |
| + // Predicate functor used in maps to sort by load start time. |
| + class LessThanByLoadStartTime { |
|
dominich
2012/06/22 15:36:16
public?
|
| + public: |
| + bool operator() (const PrerenderContents* lhs, |
| + const PrerenderContents* rhs) const; |
| + }; |
| + |
| // Information on pages that the prerendered page has tried to prerender. |
| struct PendingPrerenderInfo; |
| typedef std::list<PendingPrerenderInfo> PendingPrerenderList; |
| @@ -80,7 +88,7 @@ class PrerenderContents : public content::NotificationObserver, |
| // MatchComplete. |
| MATCH_COMPLETE_DEFAULT, |
| // A prerender that used to be a regular prerender, but has since been |
| - // replaced by a MatchComplete dummy. Therefore, we will record this only |
| + // replaced by a MatchComplete dummy. Therefore, we will record this only |
| // for Match, but not for MatchComplete. |
| MATCH_COMPLETE_REPLACED, |
| // A prerender that is a MatchComplete dummy replacing a regular prerender. |
| @@ -95,6 +103,10 @@ class PrerenderContents : public content::NotificationObserver, |
| virtual ~PrerenderContents(); |
| + // For MatchComplete correctness, create a dummy replacement prerender contents |
| + // to stand in for this prerender contents that (which we are about to destroy). |
| + PrerenderContents* CreateDummyReplacement() const; |
| + |
| bool Init(); |
| static Factory* CreateFactory(); |
| @@ -153,6 +165,10 @@ class PrerenderContents : public content::NotificationObserver, |
| Origin origin() const { return origin_; } |
| uint8 experiment_id() const { return experiment_id_; } |
| + int client_count() const { return client_count_; } |
|
dominich
2012/06/22 15:36:16
naming nit: I don't know what a client is or what
|
| + void IncrementClientCount(); |
| + void DecrementClientCount(); |
| + |
| base::TimeTicks load_start_time() const { return load_start_time_; } |
| // Indicates whether this prerendered page can be used for the provided |
| @@ -160,7 +176,9 @@ class PrerenderContents : public content::NotificationObserver, |
| // set to the URL that is found as a match if it is provided. |
| // TODO(gavinp,mmenke): Rework matching to be based on both the URL |
| // and the session WebStorage. |
| - bool MatchesURL(const GURL& url, GURL* matching_url) const; |
| + bool Matches( |
| + const GURL& url, |
| + const content::SessionStorageNamespace* session_storage_namespace); |
| void OnJSOutOfMemory(); |
| bool ShouldSuppressDialogs(); |
| @@ -216,12 +234,13 @@ class PrerenderContents : public content::NotificationObserver, |
| bool IsCrossSiteNavigationPending() const; |
| // Adds a pending prerender to the list. |
| - virtual void AddPendingPrerender(const GURL& url, |
| + virtual void AddPendingPrerender(scoped_ptr<PrerenderHandle> prerender_handle, |
|
dominich
2012/06/22 15:36:16
I don't know why, but seeing a scoped_ptr<> passed
|
| + const GURL& url, |
| const content::Referrer& referrer, |
| const gfx::Size& size); |
| // Returns true if |url| corresponds to a pending prerender. |
| - bool IsPendingEntry(const GURL& url) const; |
| + bool IsPendingEntry(const PrerenderHandle* prerender_handle) const; |
|
dominich
2012/06/22 15:36:16
if |prerender_handle| can never be NULL, prefer pa
|
| // Reissues any pending prerender requests from the prerendered page. Also |
| // clears the list of pending requests. |
| @@ -258,6 +277,11 @@ class PrerenderContents : public content::NotificationObserver, |
| bool prerendering_has_started_; |
| + // Time at which we started to load the URL. This is used to compute |
| + // the time elapsed from initiating a prerender until the time the |
| + // (potentially only partially) prerendered page is shown to the user. |
|
dominich
2012/06/22 15:36:16
Is it not used to potentially expire stale prerend
|
| + base::TimeTicks load_start_time_; |
|
dominich
2012/06/22 15:36:16
The move to protected is unexpected as I thought P
|
| + |
| private: |
| class TabContentsDelegateImpl; |
| @@ -306,6 +330,10 @@ class PrerenderContents : public content::NotificationObserver, |
| // such as HTTP redirects or javascript redirects. |
| std::vector<GURL> alias_urls_; |
| + // Number of distinct clients of this prerendered page (distinct link elements |
| + // for instance). |
|
dominich
2012/06/22 15:36:16
Ah - maybe instance_count_ ?
|
| + int client_count_; |
| + |
| bool has_stopped_loading_; |
| // True when the main frame has finished loading. |
| @@ -324,11 +352,6 @@ class PrerenderContents : public content::NotificationObserver, |
| // Used solely to prevent double deletion. |
| bool prerendering_has_been_cancelled_; |
| - // Time at which we started to load the URL. This is used to compute |
| - // the time elapsed from initiating a prerender until the time the |
| - // (potentially only partially) prerendered page is shown to the user. |
| - base::TimeTicks load_start_time_; |
| - |
| // Process Metrics of the render process associated with the |
| // RenderViewHost for this object. |
| scoped_ptr<base::ProcessMetrics> process_metrics_; |