Index: chrome/browser/prerender/prerender_contents.cc |
=================================================================== |
--- chrome/browser/prerender/prerender_contents.cc (revision 71174) |
+++ chrome/browser/prerender/prerender_contents.cc (working copy) |
@@ -16,6 +16,7 @@ |
#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" |
@@ -49,6 +50,7 @@ |
Source<Profile>(profile_)); |
render_view_host_->CreateRenderView(string16()); |
render_view_host_->NavigateToURL(prerender_url_); |
+ AddMatchingUrl(prerender_url_); |
} |
PrerenderContents::~PrerenderContents() { |
@@ -87,6 +89,8 @@ |
navigate_params_.reset(p); |
url_ = params.url; |
+ |
+ AddMatchingUrl(url_); |
} |
void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host, |
@@ -215,3 +219,52 @@ |
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) |
+ AddMatchingUrl(url); |
+} |
+ |
+void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id, |
+ const GURL& source_url, |
+ const GURL& target_url) { |
+ AddMatchingUrl(target_url); |
+} |
+ |
+void PrerenderContents::AddMatchingUrl(const GURL& url) { |
+ matching_urls_.push_back(url); |
+} |
+ |
+bool PrerenderContents::MatchesUrl(const GURL& url) { |
+ for (std::vector<GURL>::iterator it = matching_urls_.begin(); |
cbentzel
2011/01/12 23:49:53
i'd just do std::find here.
cbentzel
2011/01/12 23:49:53
const_iterator to be safe [and this method should
tburkard
2011/01/13 19:14:16
Done.
tburkard
2011/01/13 19:14:16
Done.
|
+ it != matching_urls_.end(); |
+ ++it) { |
+ if (*it == url) |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+void PrerenderContents::AddAliasURLs(const std::vector<GURL>& alias_urls) { |
+ for (std::vector<GURL>::const_iterator it = alias_urls.begin(); |
cbentzel
2011/01/12 23:49:53
I think this can go away in favor of constructor (
tburkard
2011/01/13 19:14:16
Done.
|
+ it != alias_urls.end(); |
+ ++it) { |
+ AddMatchingUrl(*it); |
+ } |
+} |