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

Unified Diff: chrome/browser/prerender/prerender_contents.cc

Issue 6171007: For prerendering, keep track of all the intermediate redirects, and hook into... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 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/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,45 @@
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) {
+ printf("\n\n*** new matching URL: %s\n\n", url.spec().c_str());
cbentzel 2011/01/12 18:04:14 Remove printf
tburkard 2011/01/12 21:32:10 Done.
+ matching_urls_.push_back(url);
+}
+
+bool PrerenderContents::MatchesUrl(const GURL& url) {
+ for (std::vector<GURL>::iterator it = matching_urls_.begin();
cbentzel 2011/01/12 18:04:14 Just use std::find instead of writing out the loop
tburkard 2011/01/12 21:32:10 had a more complex check in there at first.
+ it != matching_urls_.end();
+ ++it) {
+ if (*it == url)
+ return true;
+ }
+ return false;
+}

Powered by Google App Engine
This is Rietveld 408576698