Chromium Code Reviews| Index: chrome/renderer/prerender/prerender_dispatcher.h | 
| diff --git a/chrome/renderer/prerender/prerender_dispatcher.h b/chrome/renderer/prerender/prerender_dispatcher.h | 
| index de81c54ca4eb5911c05ae3fbbf01e32b291864b9..9566a53c82142b7b466c4608a724d341a109548f 100644 | 
| --- a/chrome/renderer/prerender/prerender_dispatcher.h | 
| +++ b/chrome/renderer/prerender/prerender_dispatcher.h | 
| @@ -6,23 +6,26 @@ | 
| #define CHROME_RENDERER_PRERENDER_PRERENDER_DISPATCHER_H_ | 
| #include <map> | 
| +#include <set> | 
| #include "base/compiler_specific.h" | 
| #include "base/memory/scoped_ptr.h" | 
| #include "content/public/renderer/render_process_observer.h" | 
| +#include "third_party/WebKit/Source/Platform/chromium/public/WebPrerenderingSupport.h" | 
| class GURL; | 
| namespace prerender { | 
| -class PrerenderingSupport; | 
| +// There is one PrerenderDispatcher per render process. It keeps track of | 
| +// prerenders launched by WebKit, and signals the browser process. It tracks | 
| +// prerenders have been launched, and sends events on lifetime events to | 
| +// WebKit. | 
| +// TODO(gavinp): Add more syncronization between the WebKit origin data and the | 
| +// browser process origin data. | 
| -// PrerenderDispatcher keeps track of which URLs are being prerendered. There | 
| -// is only one PrerenderDispatcher per render process, and it will only be | 
| -// aware of prerenders that are triggered by this render process. As well, | 
| -// it holds on to other objects that must exist once per-renderer process, | 
| -// such as the PrerenderingSupport. | 
| -class PrerenderDispatcher : public content::RenderProcessObserver { | 
| +class PrerenderDispatcher : public content::RenderProcessObserver, | 
| + public WebKit::WebPrerenderingSupport { | 
| public: | 
| PrerenderDispatcher(); | 
| virtual ~PrerenderDispatcher(); | 
| @@ -32,18 +35,25 @@ class PrerenderDispatcher : public content::RenderProcessObserver { | 
| private: | 
| friend class PrerenderDispatcherTest; | 
| - void OnAddPrerenderURL(const GURL& url); | 
| - void OnRemovePrerenderURL(const GURL& url); | 
| + // Message handlers for messages from the browser process. | 
| + void OnStartedPrerender(int prerender_id); | 
| + void OnAddAliasToPrerender(int prerender_id, const GURL& url); | 
| + void OnStoppedPrerender(int prerender_id); | 
| - // RenderProcessObserver: | 
| + // from RenderProcessObserver | 
| virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; | 
| - typedef std::map<GURL, int> PrerenderMap; | 
| - PrerenderMap prerender_urls_; | 
| + // from WebKit::WebPrerenderingSupport | 
| + virtual void add(WebKit::WebPrerender* prerender) OVERRIDE; | 
| + virtual void cancel(WebKit::WebPrerender* prerender) OVERRIDE; | 
| + virtual void abandon(WebKit::WebPrerender* prerender) OVERRIDE; | 
| - // There is one PrerenderingSupport object per renderer, and it provides | 
| - // the interface to prerendering to the WebKit platform. | 
| - scoped_ptr<PrerenderingSupport> prerendering_support_; | 
| + // from WebKit, prerender elements launched by renderers in our process. | 
| + std::map<int, WebKit::WebPrerender*> prerenders_; | 
| + | 
| + // from the browser process, which prerenders have been launched. | 
| 
 
mmenke
2012/09/12 16:31:45
nit:  Comments are generally capitalized (And thos
 
 | 
| + std::multimap<int, GURL> prerender_aliases_; | 
| + std::set<int> running_prerenders_; | 
| 
 
mmenke
2012/09/12 16:31:45
|running_prerenders_| doesn't seem to serve any pu
 
 | 
| }; | 
| } // namespace prerender |