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(); |
+} |