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

Unified Diff: chrome/renderer/prerender/prerender_dispatcher.h

Issue 10918189: Add PrerenderStatusEvent on Prerenders (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 8 years, 3 months 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/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

Powered by Google App Engine
This is Rietveld 408576698