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

Side by Side 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: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prerender/prerender_tab_helper.h" 5 #include "chrome/browser/prerender/prerender_tab_helper.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "chrome/browser/prerender/prerender_histograms.h" 10 #include "chrome/browser/prerender/prerender_histograms.h"
11 #include "chrome/browser/prerender/prerender_manager.h" 11 #include "chrome/browser/prerender/prerender_manager.h"
12 #include "chrome/browser/prerender/prerender_manager_factory.h" 12 #include "chrome/browser/prerender/prerender_manager_factory.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/ui/tab_contents/core_tab_helper.h" 14 #include "chrome/browser/ui/tab_contents/core_tab_helper.h"
15 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 15 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
16 #include "content/public/browser/notification_service.h"
17 #include "content/public/browser/notification_types.h"
16 #include "content/public/browser/render_view_host.h" 18 #include "content/public/browser/render_view_host.h"
19 #include "content/public/browser/resource_request_details.h"
17 #include "content/public/browser/web_contents.h" 20 #include "content/public/browser/web_contents.h"
18 #include "content/public/browser/web_contents_view.h" 21 #include "content/public/browser/web_contents_view.h"
19 #include "skia/ext/platform_canvas.h" 22 #include "skia/ext/platform_canvas.h"
20 #include "third_party/skia/include/core/SkBitmap.h" 23 #include "third_party/skia/include/core/SkBitmap.h"
21 #include "ui/gfx/rect.h" 24 #include "ui/gfx/rect.h"
22 25
23 using content::WebContents; 26 using content::WebContents;
24 27
25 namespace prerender { 28 namespace prerender {
26 29
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 128
126 base::WeakPtrFactory<PixelStats> weak_factory_; 129 base::WeakPtrFactory<PixelStats> weak_factory_;
127 130
128 PrerenderTabHelper* tab_helper_; 131 PrerenderTabHelper* tab_helper_;
129 }; 132 };
130 133
131 PrerenderTabHelper::PrerenderTabHelper(TabContentsWrapper* tab) 134 PrerenderTabHelper::PrerenderTabHelper(TabContentsWrapper* tab)
132 : content::WebContentsObserver(tab->web_contents()), 135 : content::WebContentsObserver(tab->web_contents()),
133 pixel_stats_(new PixelStats(this)), 136 pixel_stats_(new PixelStats(this)),
134 tab_(tab) { 137 tab_(tab) {
138 notification_registrar_.Add(
139 this, content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT,
140 content::Source<content::WebContents>(web_contents()));
135 } 141 }
136 142
137 PrerenderTabHelper::~PrerenderTabHelper() { 143 PrerenderTabHelper::~PrerenderTabHelper() {
138 } 144 }
139 145
140 void PrerenderTabHelper::ProvisionalChangeToMainFrameUrl(
141 const GURL& url,
142 const GURL& opener_url,
143 content::RenderViewHost* render_view_host) {
144 url_ = url;
145 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
146 if (!prerender_manager)
147 return;
148 if (prerender_manager->IsWebContentsPrerendering(web_contents()))
149 return;
150 prerender_manager->MarkWebContentsAsNotPrerendered(web_contents());
151 }
152
153 void PrerenderTabHelper::DidCommitProvisionalLoadForFrame( 146 void PrerenderTabHelper::DidCommitProvisionalLoadForFrame(
154 int64 frame_id, 147 int64 frame_id,
155 bool is_main_frame, 148 bool is_main_frame,
156 const GURL& validated_url, 149 const GURL& validated_url,
157 content::PageTransition transition_type, 150 content::PageTransition transition_type,
158 content::RenderViewHost* render_view_host) { 151 content::RenderViewHost* render_view_host) {
159 if (!is_main_frame) 152 if (!is_main_frame)
160 return; 153 return;
161 url_ = validated_url; 154 url_ = validated_url;
162 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); 155 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 prerender_manager->histograms()->RecordFractionPixelsFinalAtSwapin(1.0); 235 prerender_manager->histograms()->RecordFractionPixelsFinalAtSwapin(1.0);
243 } else { 236 } else {
244 // If we have not finished loading yet, record the actual load start, and 237 // If we have not finished loading yet, record the actual load start, and
245 // rebase the start time to now. 238 // rebase the start time to now.
246 actual_load_start_ = pplt_load_start_; 239 actual_load_start_ = pplt_load_start_;
247 pplt_load_start_ = base::TimeTicks::Now(); 240 pplt_load_start_ = base::TimeTicks::Now();
248 pixel_stats_->GetBitmap(PixelStats::BITMAP_SWAP_IN, web_contents()); 241 pixel_stats_->GetBitmap(PixelStats::BITMAP_SWAP_IN, web_contents());
249 } 242 }
250 } 243 }
251 244
245 void PrerenderTabHelper::HandleResourceReceivedRedirect(const GURL& new_url) {
246 url_ = new_url;
247 RecordPageviewEvent(PAGEVIEW_EVENT_NEW_URL);
248 if (IsTopSite(url_))
249 RecordPageviewEvent(PAGEVIEW_EVENT_TOP_SITE_NEW_URL);
250 PrerenderManager* prerender_manager = MaybeGetPrerenderManager();
251 if (!prerender_manager)
252 return;
253 if (prerender_manager->IsWebContentsPrerendering(web_contents()))
254 return;
255 prerender_manager->MarkWebContentsAsNotPrerendered(web_contents());
256 }
257
258 void PrerenderTabHelper::Observe(
259 int type,
cbentzel 2012/06/06 14:54:42 Nit: these arguments should only be indented by 4
260 const content::NotificationSource& source,
261 const content::NotificationDetails& details) {
262 switch (type) {
263 case content::NOTIFICATION_RESOURCE_RECEIVED_REDIRECT: {
264 DCHECK(content::Source<content::WebContents>(source).ptr() ==
265 web_contents());
266 content::ResourceRedirectDetails* resource_redirect_details =
267 content::Details<content::ResourceRedirectDetails>(details).ptr();
268 CHECK(resource_redirect_details);
269 HandleResourceReceivedRedirect(resource_redirect_details->new_url);
270 break;
271 }
272
273 default:
274 NOTREACHED() << "Unexpected notification sent.";
275 break;
276 }
277 }
278
252 } // namespace prerender 279 } // namespace prerender
OLDNEW
« 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