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

Side by Side Diff: chrome/renderer/prerender/prerender_dispatcher.cc

Issue 11288002: Lose chrome/renderer/prerender/prerendering_support.* (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix method comments Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/prerender/prerender_dispatcher.h" 5 #include "chrome/renderer/prerender/prerender_dispatcher.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/common/prerender_messages.h" 8 #include "chrome/common/prerender_messages.h"
9 #include "chrome/renderer/prerender/prerendering_support.h" 9 #include "chrome/renderer/prerender/prerender_extra_data.h"
10 #include "content/public/renderer/render_thread.h"
10 #include "googleurl/src/gurl.h" 11 #include "googleurl/src/gurl.h"
11 #include "third_party/WebKit/Source/Platform/chromium/public/WebPrerenderingSupp ort.h" 12 #include "third_party/WebKit/Source/Platform/chromium/public/WebPrerenderingSupp ort.h"
12 13
13 namespace prerender { 14 namespace prerender {
14 15
15 PrerenderDispatcher::PrerenderDispatcher() 16 PrerenderDispatcher::PrerenderDispatcher() {
16 : prerendering_support_(new PrerenderingSupport()) { 17 WebKit::WebPrerenderingSupport::initialize(this);
17 WebKit::WebPrerenderingSupport::initialize(prerendering_support_.get());
18 } 18 }
19 19
20 PrerenderDispatcher::~PrerenderDispatcher() { 20 PrerenderDispatcher::~PrerenderDispatcher() {
21 if (prerendering_support_.get()) 21 WebKit::WebPrerenderingSupport::shutdown();
22 WebKit::WebPrerenderingSupport::shutdown();
23 } 22 }
24 23
25 bool PrerenderDispatcher::IsPrerenderURL(const GURL& url) const { 24 bool PrerenderDispatcher::IsPrerenderURL(const GURL& url) const {
26 return prerender_urls_.find(url) != prerender_urls_.end(); 25 return prerender_urls_.find(url) != prerender_urls_.end();
27 } 26 }
28 27
29 bool PrerenderDispatcher::OnControlMessageReceived(
30 const IPC::Message& message) {
31 bool handled = true;
32 IPC_BEGIN_MESSAGE_MAP(PrerenderDispatcher, message)
33 IPC_MESSAGE_HANDLER(PrerenderMsg_AddPrerenderURL, OnAddPrerenderURL)
34 IPC_MESSAGE_HANDLER(PrerenderMsg_RemovePrerenderURL, OnRemovePrerenderURL)
35 IPC_MESSAGE_UNHANDLED(handled = false)
36 IPC_END_MESSAGE_MAP()
37
38 return handled;
39 }
40
41 void PrerenderDispatcher::OnAddPrerenderURL(const GURL& url) { 28 void PrerenderDispatcher::OnAddPrerenderURL(const GURL& url) {
42 PrerenderMap::iterator it = prerender_urls_.find(url); 29 PrerenderMap::iterator it = prerender_urls_.find(url);
43 if (it != prerender_urls_.end()) { 30 if (it != prerender_urls_.end()) {
44 DCHECK(it->second > 0); 31 DCHECK_LT(0, it->second);
45 it->second += 1; 32 it->second += 1;
46 } else { 33 } else {
47 prerender_urls_[url] = 1; 34 prerender_urls_[url] = 1;
48 } 35 }
49 } 36 }
50 37
51 void PrerenderDispatcher::OnRemovePrerenderURL(const GURL& url) { 38 void PrerenderDispatcher::OnRemovePrerenderURL(const GURL& url) {
52 PrerenderMap::iterator it = prerender_urls_.find(url); 39 PrerenderMap::iterator it = prerender_urls_.find(url);
53 // This is possible with a spurious remove. 40 // This is possible with a spurious remove.
54 // TODO(cbentzel): We'd also want to send the map of active prerenders when 41 // TODO(cbentzel): We'd also want to send the map of active prerenders when
55 // creating a new render process, so the Add/Remove go relative to that. 42 // creating a new render process, so the Add/Remove go relative to that.
56 // This may not be that big of a deal in practice, since the newly created tab 43 // This may not be that big of a deal in practice, since the newly created tab
57 // is unlikely to go to the prerendered page. 44 // is unlikely to go to the prerendered page.
58 if (it == prerender_urls_.end()) 45 if (it == prerender_urls_.end())
59 return; 46 return;
60 DCHECK(it->second > 0); 47 DCHECK_LT(0, it->second);
61 it->second -= 1; 48 it->second -= 1;
62 if (it->second == 0) 49 if (it->second == 0)
63 prerender_urls_.erase(it); 50 prerender_urls_.erase(it);
64 } 51 }
65 52
53 bool PrerenderDispatcher::OnControlMessageReceived(
54 const IPC::Message& message) {
55 bool handled = true;
56 IPC_BEGIN_MESSAGE_MAP(PrerenderDispatcher, message)
57 IPC_MESSAGE_HANDLER(PrerenderMsg_AddPrerenderURL, OnAddPrerenderURL)
58 IPC_MESSAGE_HANDLER(PrerenderMsg_RemovePrerenderURL, OnRemovePrerenderURL)
59 IPC_MESSAGE_UNHANDLED(handled = false)
60 IPC_END_MESSAGE_MAP()
61
62 return handled;
63 }
64
65 void PrerenderDispatcher::add(const WebKit::WebPrerender& prerender) {
66 const PrerenderExtraData& extra_data =
67 PrerenderExtraData::FromPrerender(prerender);
68 content::RenderThread::Get()->Send(new PrerenderHostMsg_AddLinkRelPrerender(
69 extra_data.prerender_id(), GURL(prerender.url()),
70 content::Referrer(GURL(prerender.referrer()), prerender.referrerPolicy()),
71 extra_data.size(), extra_data.render_view_route_id()));
72 }
73
74 void PrerenderDispatcher::cancel(const WebKit::WebPrerender& prerender) {
75 const PrerenderExtraData& extra_data =
76 PrerenderExtraData::FromPrerender(prerender);
77 content::RenderThread::Get()->Send(
78 new PrerenderHostMsg_CancelLinkRelPrerender(extra_data.prerender_id()));
79 }
80
81 void PrerenderDispatcher::abandon(const WebKit::WebPrerender& prerender) {
82 const PrerenderExtraData& extra_data =
83 PrerenderExtraData::FromPrerender(prerender);
84 content::RenderThread::Get()->Send(
85 new PrerenderHostMsg_AbandonLinkRelPrerender(extra_data.prerender_id()));
86 }
87
66 } // namespace prerender 88 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/renderer/prerender/prerender_dispatcher.h ('k') | chrome/renderer/prerender/prerendering_support.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698