Chromium Code Reviews| Index: chrome/browser/prerender/prerender_contents.cc |
| =================================================================== |
| --- chrome/browser/prerender/prerender_contents.cc (revision 71356) |
| +++ chrome/browser/prerender/prerender_contents.cc (working copy) |
| @@ -16,18 +16,26 @@ |
| #include "chrome/common/notification_service.h" |
| #include "chrome/common/url_constants.h" |
| #include "chrome/common/view_types.h" |
| +#include "chrome/common/render_messages.h" |
| #include "chrome/common/render_messages_params.h" |
| #include "gfx/rect.h" |
| PrerenderContents::PrerenderContents(PrerenderManager* prerender_manager, |
| Profile* profile, |
| - const GURL& url) |
| + const GURL& url, |
| + const std::vector<GURL>& alias_urls) |
| : prerender_manager_(prerender_manager), |
| render_view_host_(NULL), |
| prerender_url_(url), |
| profile_(profile), |
| page_id_(0) { |
| DCHECK(prerender_manager != NULL); |
| + AddAliasURL(prerender_url_); |
| + for (std::vector<GURL>::const_iterator it = alias_urls.begin(); |
| + it != alias_urls.end(); |
| + ++it) { |
| + AddAliasURL(*it); |
| + } |
| } |
| void PrerenderContents::StartPrerendering() { |
| @@ -87,6 +95,8 @@ |
| navigate_params_.reset(p); |
| url_ = params.url; |
| + |
| + AddAliasURL(url_); |
| } |
| void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host, |
| @@ -215,3 +225,39 @@ |
| void PrerenderContents::ShowCreatedFullscreenWidget(int route_id) { |
| NOTIMPLEMENTED(); |
| } |
| + |
| +bool PrerenderContents::OnMessageReceived(const IPC::Message& message) { |
| + bool handled = true; |
| + bool message_is_ok = true; |
| + IPC_BEGIN_MESSAGE_MAP_EX(PrerenderContents, message, message_is_ok) |
| + IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame, |
| + OnDidStartProvisionalLoadForFrame) |
| + IPC_MESSAGE_HANDLER(ViewHostMsg_DidRedirectProvisionalLoad, |
| + OnDidRedirectProvisionalLoad) |
| + IPC_MESSAGE_UNHANDLED(handled = false) |
| + IPC_END_MESSAGE_MAP_EX() |
| + |
| + return handled; |
| +} |
| + |
| +void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id, |
| + bool is_main_frame, |
| + const GURL& url) { |
| + if (is_main_frame) |
| + AddAliasURL(url); |
| +} |
| + |
| +void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id, |
| + const GURL& source_url, |
| + const GURL& target_url) { |
| + AddAliasURL(target_url); |
| +} |
| + |
| +void PrerenderContents::AddAliasURL(const GURL& url) { |
| + alias_urls_.push_back(url); |
|
brettw
2011/01/14 01:34:13
Would alos_urls_ be better as a std::set?
tburkard
2011/01/18 22:29:18
Since it's just 1-3 elements, I thought a vector w
|
| +} |
| + |
| +bool PrerenderContents::MatchesURL(const GURL& url) const { |
| + return std::find(alias_urls_.begin(), alias_urls_.end(), url) |
| + != alias_urls_.end(); |
| +} |