Chromium Code Reviews

Issue 5912001: Add PrerenderResourceHandler and hook it into the ResourceDispatcherHost.... (Closed)

Created:
10 years ago by cbentzel
Modified:
9 years, 7 months ago
Reviewers:
darin (slow to review), gavinp, willchan no longer on Chromium, tburkard
CC:
chromium-reviews, cbentzel+watch_chromium.org, darin-cc_chromium.org, brettw-cc_chromium.org, Paweł Hajdan Jr.
Visibility:
Public.

Description

Add PrerenderResourceHandler and hook it into the ResourceDispatcherHost. The PrerenderResourceHandler will initiate prerendering of a web page under the following conditions: - The initial request is a GET for a ResourceType::PREFETCH resource. - The mime-type (sniffed or explicitly specified) of the resource is text/html. - The response status code is a 200. - The top-level page will not need to be revalidated until after it's guaranteed to be removed from potential use. The handler passes along all data to the backing resource handler. BUG=61745 TEST=unit_tests --gtest_filter="PrerenderResourceHandlerTest*" Manual Test: Start Chrome with --enable-page-prerender. Go to a page with a <link rel=prefetch> element. Navigate to that element, and make sure that it uses the prerendered view. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=71162

Patch Set 1 #

Patch Set 2 : Added unit test, fixed cancellation #

Patch Set 3 : Fixed comments in unit test #

Patch Set 4 : Added more test cases #

Patch Set 5 : Delinted #

Patch Set 6 : Check the scheme for prerendering. #

Patch Set 7 : Merge with trunk #

Patch Set 8 : Fix unit tests. #

Total comments: 6

Patch Set 9 : Remove extra comment. #

Total comments: 21

Patch Set 10 : Only prerender resource which don't need revalidation within expiry time. #

Patch Set 11 : Access control in PrerenderManager. #

Patch Set 12 : Merge with trunk, change MaybeCreate #

Patch Set 13 : Merge with trunk #

Patch Set 14 : Fixed the merge. #

Patch Set 15 : More comments and fixing nits #

Total comments: 2

Patch Set 16 : Remove PrerenderResourceHandler::Timer and use a function pointer instead. #

Patch Set 17 : URLRequestStatus -> net::URLRequestStatus #

Patch Set 18 : Appease the Windows compiler #

Patch Set 19 : Actually fix win build #

Patch Set 20 : Merge with trunk #

Patch Set 21 : Another merge with trunk #

Unified diffs Side-by-side diffs Stats (+536 lines, -13 lines)
M chrome/browser/net/chrome_url_request_context.h View 7 chunks +12 lines, -0 lines 0 comments
M chrome/browser/net/chrome_url_request_context.cc View 2 chunks +2 lines, -0 lines 0 comments
M chrome/browser/prerender/prerender_manager.h View 4 chunks +8 lines, -7 lines 0 comments
M chrome/browser/prerender/prerender_manager_unittest.cc View 3 chunks +5 lines, -2 lines 0 comments
A chrome/browser/prerender/prerender_resource_handler.h View 1 chunk +99 lines, -0 lines 0 comments
A chrome/browser/prerender/prerender_resource_handler.cc View 1 chunk +179 lines, -0 lines 0 comments
A chrome/browser/prerender/prerender_resource_handler_unittest.cc View 1 chunk +214 lines, -0 lines 0 comments
M chrome/browser/profiles/profile_impl.h View 1 chunk +1 line, -1 line 0 comments
M chrome/browser/profiles/profile_impl.cc View 1 chunk +3 lines, -3 lines 0 comments
M chrome/browser/renderer_host/resource_dispatcher_host.cc View 2 chunks +10 lines, -0 lines 0 comments
M chrome/chrome_browser.gypi View 1 chunk +2 lines, -0 lines 0 comments
M chrome/chrome_tests.gypi View 1 chunk +1 line, -0 lines 0 comments

Messages

Total messages: 19 (0 generated)
cbentzel
darin: I added you as reviewer since this touches ResourceDispatcherHost and ChromeURLRequestContext. Please redirect if ...
10 years ago (2010-12-16 21:59:52 UTC) #1
cbentzel
[+eroman, who could also review the RenderDispatcherHost/ChromeURLRequestContext changes]
10 years ago (2010-12-16 22:49:00 UTC) #2
gavinp
Just one question about design... http://codereview.chromium.org/5912001/diff/2002/chrome/browser/prerender/prerender_resource_handler.cc File chrome/browser/prerender/prerender_resource_handler.cc (right): http://codereview.chromium.org/5912001/diff/2002/chrome/browser/prerender/prerender_resource_handler.cc#newcode56 chrome/browser/prerender/prerender_resource_handler.cc:56: // DCHECK(url_.is_valid()); lose the ...
10 years ago (2010-12-17 16:15:33 UTC) #3
cbentzel
http://codereview.chromium.org/5912001/diff/2002/chrome/browser/prerender/prerender_resource_handler.cc File chrome/browser/prerender/prerender_resource_handler.cc (right): http://codereview.chromium.org/5912001/diff/2002/chrome/browser/prerender/prerender_resource_handler.cc#newcode56 chrome/browser/prerender/prerender_resource_handler.cc:56: // DCHECK(url_.is_valid()); On 2010/12/17 16:15:33, gavinp wrote: > lose ...
10 years ago (2010-12-17 16:23:21 UTC) #4
cbentzel
[-eroman,+willchan] Eric is busy today, so adding Will Chan for the ResourceDispatcherHost/ChromeURLRequestContext changes.
10 years ago (2010-12-17 19:24:03 UTC) #5
darin (slow to review)
http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_resource_handler.cc File chrome/browser/prerender/prerender_resource_handler.cc (right): http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_resource_handler.cc#newcode101 chrome/browser/prerender/prerender_resource_handler.cc:101: prerender_callback_->Run(url); there seems to be the assumption here that ...
10 years ago (2010-12-17 19:58:21 UTC) #6
cbentzel
http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_resource_handler.cc File chrome/browser/prerender/prerender_resource_handler.cc (right): http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_resource_handler.cc#newcode101 chrome/browser/prerender/prerender_resource_handler.cc:101: prerender_callback_->Run(url); On 2010/12/17 19:58:21, darin wrote: > there seems ...
10 years ago (2010-12-17 20:03:50 UTC) #7
cbentzel
On 2010/12/17 20:03:50, cbentzel wrote: > http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_resource_handler.cc > File chrome/browser/prerender/prerender_resource_handler.cc (right): > > http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_resource_handler.cc#newcode101 > ...
10 years ago (2010-12-17 20:06:07 UTC) #8
willchan no longer on Chromium
Preliminary look seems fine to me, although I didn't read the PrerenderResourceHandler stuff in detail. ...
10 years ago (2010-12-17 21:45:17 UTC) #9
cbentzel
Thanks for the reviews so far. http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_manager.h File chrome/browser/prerender/prerender_manager.h (right): http://codereview.chromium.org/5912001/diff/62001/chrome/browser/prerender/prerender_manager.h#newcode23 chrome/browser/prerender/prerender_manager.h:23: class PrerenderManager : ...
10 years ago (2010-12-19 00:40:56 UTC) #10
cbentzel
Ping. Any chance for re-review? On Sat, Dec 18, 2010 at 7:40 PM, <cbentzel@chromium.org> wrote: ...
10 years ago (2010-12-21 15:54:47 UTC) #11
tburkard
LGTM On Tue, Dec 21, 2010 at 7:52 AM, Chris Bentzel <cbentzel@chromium.org>wrote: > Ping. Any ...
10 years ago (2010-12-22 20:28:48 UTC) #12
cbentzel
darin/willchan: Any other concerns?
9 years, 11 months ago (2011-01-04 17:22:54 UTC) #13
cbentzel
On 2011/01/04 17:22:54, cbentzel wrote: > darin/willchan: Any other concerns? Actually, hold off. I did ...
9 years, 11 months ago (2011-01-04 18:58:52 UTC) #14
cbentzel
On 2011/01/04 18:58:52, cbentzel wrote: > On 2011/01/04 17:22:54, cbentzel wrote: > > darin/willchan: Any ...
9 years, 11 months ago (2011-01-04 21:21:26 UTC) #15
darin (slow to review)
http://codereview.chromium.org/5912001/diff/110001/chrome/browser/prerender/prerender_resource_handler_unittest.cc File chrome/browser/prerender/prerender_resource_handler_unittest.cc (right): http://codereview.chromium.org/5912001/diff/110001/chrome/browser/prerender/prerender_resource_handler_unittest.cc#newcode71 chrome/browser/prerender/prerender_resource_handler_unittest.cc:71: void AdvanceTime(base::TimeDelta dt) { I don't see any callers ...
9 years, 11 months ago (2011-01-06 06:18:19 UTC) #16
cbentzel
http://codereview.chromium.org/5912001/diff/110001/chrome/browser/prerender/prerender_resource_handler_unittest.cc File chrome/browser/prerender/prerender_resource_handler_unittest.cc (right): http://codereview.chromium.org/5912001/diff/110001/chrome/browser/prerender/prerender_resource_handler_unittest.cc#newcode71 chrome/browser/prerender/prerender_resource_handler_unittest.cc:71: void AdvanceTime(base::TimeDelta dt) { On 2011/01/06 06:18:20, darin wrote: ...
9 years, 11 months ago (2011-01-06 15:29:49 UTC) #17
cbentzel
Are there any other concerns, or is this ok to land? On 2011/01/06 15:29:49, cbentzel ...
9 years, 11 months ago (2011-01-07 23:04:24 UTC) #18
cbentzel
9 years, 11 months ago (2011-01-11 21:17:17 UTC) #19
I talked to Darin over chat, and the resulting lack of LGTM was neutral.

I'll land this - the Mac trybot failures were due to the fork/testserver issue.

Powered by Google App Engine