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

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

Issue 6824054: PrerenderContents uses RESOURCE_RECEIVED_REDIRECT notification. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 8 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
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/test/data/prerender/prerender_redirect.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_contents.cc
diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc
index c142f159881f75390482be7dbeb5bf376b5da973..d00b66f77ac7241cee550ccaeafd10ff9edc0f78 100644
--- a/chrome/browser/prerender/prerender_contents.cc
+++ b/chrome/browser/prerender/prerender_contents.cc
@@ -22,6 +22,7 @@
#include "content/browser/browsing_instance.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/renderer_host/resource_dispatcher_host.h"
+#include "content/browser/renderer_host/resource_request_details.h"
#include "content/browser/site_instance.h"
#include "content/common/notification_service.h"
#include "content/common/view_messages.h"
@@ -138,6 +139,10 @@ void PrerenderContents::StartPrerendering() {
registrar_.Add(this, NotificationType::DOWNLOAD_INITIATED,
NotificationService::AllSources());
+ // Register for redirects.
Charlie Reis 2011/04/11 21:15:52 Please add "from this RenderViewHostDelegate," sin
cbentzel 2011/04/12 18:07:59 Done.
+ registrar_.Add(this, NotificationType::RESOURCE_RECEIVED_REDIRECT,
+ Source<RenderViewHostDelegate>(this));
+
DCHECK(load_start_time_.is_null());
load_start_time_ = base::TimeTicks::Now();
@@ -322,6 +327,23 @@ void PrerenderContents::Observe(NotificationType type,
break;
}
+ case NotificationType::RESOURCE_RECEIVED_REDIRECT: {
+ // RESOURCE_RECEIVED_REDIRECT can come for any resource on a page.
+ // If it's a redirect on the top-level resource, the name needs
+ // to be remembered for future matching, and if it redirects to
+ // an https resource, it needs to be canceled. If a subresource
+ // is redirected, nothing changes.
Charlie Reis 2011/04/11 21:15:52 How are you distinguishing whether it's top-level
cbentzel 2011/04/11 21:18:35 I'll change to resource_type(). This was using "Ma
cbentzel 2011/04/12 18:07:59 resource_type() is much clearer about what's going
+ DCHECK(Source<RenderViewHostDelegate>(source).ptr() == this);
+ ResourceRedirectDetails* resource_redirect_details =
+ Details<ResourceRedirectDetails>(details).ptr();
+ CHECK(resource_redirect_details != NULL);
Charlie Reis 2011/04/11 21:15:52 I think Chrome style is to omit the "!= NULL".
cbentzel 2011/04/12 18:07:59 Done.
+ if (MatchesURL(resource_redirect_details->url())) {
+ if (!AddAliasURL(resource_redirect_details->new_url()))
+ Destroy(FINAL_STATUS_HTTPS);
+ }
+ break;
+ }
+
default:
NOTREACHED() << "Unexpected notification sent.";
break;
@@ -412,8 +434,6 @@ bool PrerenderContents::OnMessageReceived(const IPC::Message& message) {
IPC_BEGIN_MESSAGE_MAP_EX(PrerenderContents, message, message_is_ok)
IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame,
OnDidStartProvisionalLoadForFrame)
- IPC_MESSAGE_HANDLER(ViewHostMsg_DidRedirectProvisionalLoad,
- OnDidRedirectProvisionalLoad)
IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFaviconURL, OnUpdateFaviconURL)
IPC_MESSAGE_HANDLER(ViewHostMsg_MaybeCancelPrerender,
OnMaybeCancelPrerender)
@@ -441,13 +461,6 @@ void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id,
}
}
-void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id,
- const GURL& source_url,
- const GURL& target_url) {
- if (!AddAliasURL(target_url))
- Destroy(FINAL_STATUS_HTTPS);
-}
-
void PrerenderContents::OnUpdateFaviconURL(int32 page_id,
const GURL& icon_url) {
icon_url_ = icon_url;
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/test/data/prerender/prerender_redirect.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698