Chromium Code Reviews| Index: chrome/browser/prerender/prerender_link_manager.h |
| diff --git a/chrome/browser/prerender/prerender_link_manager.h b/chrome/browser/prerender/prerender_link_manager.h |
| index 8795f0a5737c63b95548a2f56055f0cf7ef060e6..503f056294466d21a6476eaebbac7059cb93dd7a 100644 |
| --- a/chrome/browser/prerender/prerender_link_manager.h |
| +++ b/chrome/browser/prerender/prerender_link_manager.h |
| @@ -5,10 +5,10 @@ |
| #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_LINK_MANAGER_H_ |
| #define CHROME_BROWSER_PRERENDER_PRERENDER_LINK_MANAGER_H_ |
| -#include <map> |
| -#include <utility> |
| +#include <list> |
| #include "base/basictypes.h" |
| +#include "base/time.h" |
| #include "chrome/browser/prerender/prerender_handle.h" |
| #include "chrome/browser/profiles/profile_keyed_service.h" |
| #include "googleurl/src/gurl.h" |
| @@ -41,16 +41,12 @@ class PrerenderLinkManager : public ProfileKeyedService, |
| // A <link rel=prerender ...> element has been inserted into the document. |
| // The |prerender_id| must be unique per |child_id|, and is assigned by the |
| // WebPrerendererClient. |
| - // Returns true if the prerender was accepted by the prerender manager, |
| - // and false if not. In either case, the |prerender_id| is usable for |
| - // future OnCancelPrerender and OnAbandonPrerender calls. |
| - bool OnAddPrerender( |
| - int child_id, |
| - int prerender_id, |
| - const GURL& url, |
| - const content::Referrer& referrer, |
| - const gfx::Size& size, |
| - int render_view_route_id); |
| + void OnAddPrerender(int child_id, |
| + int prerender_id, |
| + const GURL& url, |
| + const content::Referrer& referrer, |
| + const gfx::Size& size, |
| + int render_view_route_id); |
| // A <link rel=prerender ...> element has been explicitly removed from a |
| // document. |
| @@ -70,17 +66,50 @@ class PrerenderLinkManager : public ProfileKeyedService, |
| friend class PrerenderBrowserTest; |
| friend class PrerenderTest; |
| - typedef std::pair<int, int> ChildAndPrerenderIdPair; |
| - typedef std::map<ChildAndPrerenderIdPair, PrerenderHandle*> |
| - IdPairToPrerenderHandleMap; |
| - |
| - void RemovePrerender( |
| - const IdPairToPrerenderHandleMap::iterator& id_to_handle_iter); |
| + struct Prerender { |
|
mmenke
2012/12/28 18:25:33
Think this name may be be a little too vague - I l
gavinp
2012/12/28 19:53:46
LinkPrerender. Trying to do the rename on my part
|
| + Prerender(int launcher_child_id, |
| + int prerender_id, |
| + const GURL& url, |
| + const content::Referrer& referrer, |
| + const gfx::Size& size, |
| + int render_view_route_id, |
| + base::TimeTicks creation_time); |
| + ~Prerender(); |
| + |
| + // Parameters from PrerenderLinkManager::OnAddPrerender(): |
| + int launcher_child_id; |
| + int prerender_id; |
| + GURL url; |
| + content::Referrer referrer; |
| + gfx::Size size; |
| + int render_view_route_id; |
| + |
| + // The time at which this Prerender was added to PrerenderLinkManager. |
| + base::TimeTicks creation_time; |
| + |
| + // Initially NULL, |handle| is set once we start this prerender. It is owned |
| + // by this struct, and must be deleted before destructing this struct. |
| + PrerenderHandle* handle; |
| + }; |
| bool IsEmpty() const; |
| - IdPairToPrerenderHandleMap::iterator FindPrerenderHandle( |
| - PrerenderHandle* prerender_handle); |
| + // Returns a count of currently running prerenders. |
| + size_t CountRunningPrerenders() const; |
| + |
| + // Start any prerenders that can be started, respecting concurrency limits for |
| + // the system and per launcher. |
| + void StartPrerenders(); |
| + |
| + Prerender* FindByLauncherChildIdAndPrerenderId(int child_id, |
| + int prerender_id); |
|
mmenke
2012/12/28 18:25:33
Think it's worth mentioning:
1) This is only use
mmenke
2012/12/28 18:35:18
Blegh - I was thinking this was child_id and rende
gavinp
2012/12/28 19:53:46
Ignore what comment?
mmenke
2012/12/28 20:15:13
Not rightly sure. Maybe you should ignore that co
|
| + |
| + Prerender* FindByPrerenderHandle(PrerenderHandle* prerender_handle); |
| + |
| + void RemovePrerender(Prerender* prerender); |
| + |
| + // From ProfileKeyedService: |
| + virtual void Shutdown() OVERRIDE; |
| // From PrerenderHandle::Observer: |
| virtual void OnPrerenderStart(PrerenderHandle* prerender_handle) OVERRIDE; |
| @@ -88,12 +117,14 @@ class PrerenderLinkManager : public ProfileKeyedService, |
| virtual void OnPrerenderAddAlias(PrerenderHandle* prerender_handle, |
| const GURL& alias_url) OVERRIDE; |
| + bool has_shutdown_; |
| + |
| PrerenderManager* manager_; |
| - // A map from child process id and prerender id to PrerenderHandles. We map |
| - // from this pair because the prerender ids are only unique within their |
| - // renderer process. |
| - IdPairToPrerenderHandleMap ids_to_handle_map_; |
| + // All prerenders known to this PrerenderLinkManager. Insertions are always |
| + // made at the back, so the oldest prerender is at the front, and the youngest |
| + // at the back. |
| + std::list<Prerender> prerenders_; |
| DISALLOW_COPY_AND_ASSIGN(PrerenderLinkManager); |
| }; |