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

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

Issue 10316020: Remove WebContentsImpl::OnDidRedirectProvisionalLoad. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix botched rebase Created 8 years, 6 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_tab_helper.cc
diff --git a/chrome/browser/prerender/prerender_tab_helper.cc b/chrome/browser/prerender/prerender_tab_helper.cc
index a84d79a6095f3215059fd448fdae718f878df1c2..2175abf175acaaed275a9d53a96448e7e8008261 100644
--- a/chrome/browser/prerender/prerender_tab_helper.cc
+++ b/chrome/browser/prerender/prerender_tab_helper.cc
@@ -13,7 +13,10 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/tab_contents/core_tab_helper.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/resource_request_details.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_view.h"
#include "skia/ext/platform_canvas.h"
@@ -132,24 +135,14 @@ PrerenderTabHelper::PrerenderTabHelper(TabContentsWrapper* tab)
: content::WebContentsObserver(tab->web_contents()),
pixel_stats_(new PixelStats(this)),
tab_(tab) {
+ notification_registrar_.Add(
+ this, content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT,
+ content::Source<content::WebContents>(web_contents()));
}
PrerenderTabHelper::~PrerenderTabHelper() {
}
-void PrerenderTabHelper::ProvisionalChangeToMainFrameUrl(
- const GURL& url,
- const GURL& opener_url,
- content::RenderViewHost* render_view_host) {
- url_ = url;
- PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
- if (!prerender_manager)
- return;
- if (prerender_manager->IsWebContentsPrerendering(web_contents()))
- return;
- prerender_manager->MarkWebContentsAsNotPrerendered(web_contents());
-}
-
void PrerenderTabHelper::DidCommitProvisionalLoadForFrame(
int64 frame_id,
bool is_main_frame,
@@ -249,4 +242,35 @@ void PrerenderTabHelper::PrerenderSwappedIn() {
}
}
+void PrerenderTabHelper::HandleResourceReceivedRedirect(const GURL& new_url) {
+ url_ = new_url;
+ PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
+ if (!prerender_manager)
+ return;
+ if (prerender_manager->IsWebContentsPrerendering(web_contents()))
+ return;
+ prerender_manager->MarkWebContentsAsNotPrerendered(web_contents());
+}
+
+void PrerenderTabHelper::Observe(
+ int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ switch (type) {
+ case content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT: {
+ DCHECK(content::Source<content::WebContents>(source).ptr() ==
+ web_contents());
+ content::ResourceRedirectDetails* resource_redirect_details =
+ content::Details<content::ResourceRedirectDetails>(details).ptr();
+ CHECK(resource_redirect_details);
+ HandleResourceReceivedRedirect(resource_redirect_details->new_url);
+ break;
+ }
+
+ default:
+ NOTREACHED() << "Unexpected notification sent.";
+ break;
+ }
+}
+
} // namespace prerender
« no previous file with comments | « chrome/browser/prerender/prerender_tab_helper.h ('k') | content/browser/renderer_host/render_view_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698