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

Side by Side Diff: chrome/browser/prerender/prerender_resource_handler.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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_resource_handler.h" 5 #include "chrome/browser/prerender/prerender_resource_handler.h"
6 6
7 #include "chrome/browser/net/chrome_url_request_context.h" 7 #include "chrome/browser/net/chrome_url_request_context.h"
8 #include "chrome/common/resource_response.h" 8 #include "chrome/common/resource_response.h"
9 #include "net/base/load_flags.h" 9 #include "net/base/load_flags.h"
10 #include "net/http/http_response_headers.h" 10 #include "net/http/http_response_headers.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 uint64 size) { 93 uint64 size) {
94 return next_handler_->OnUploadProgress(request_id, position, size); 94 return next_handler_->OnUploadProgress(request_id, position, size);
95 } 95 }
96 96
97 bool PrerenderResourceHandler::OnRequestRedirected(int request_id, 97 bool PrerenderResourceHandler::OnRequestRedirected(int request_id,
98 const GURL& url, 98 const GURL& url,
99 ResourceResponse* response, 99 ResourceResponse* response,
100 bool* defer) { 100 bool* defer) {
101 bool will_redirect = next_handler_->OnRequestRedirected( 101 bool will_redirect = next_handler_->OnRequestRedirected(
102 request_id, url, response, defer); 102 request_id, url, response, defer);
103 if (will_redirect) 103 if (will_redirect) {
104 alias_urls_.push_back(url);
104 url_ = url; 105 url_ = url;
106 }
105 return will_redirect; 107 return will_redirect;
106 } 108 }
107 109
108 bool PrerenderResourceHandler::OnResponseStarted(int request_id, 110 bool PrerenderResourceHandler::OnResponseStarted(int request_id,
109 ResourceResponse* response) { 111 ResourceResponse* response) {
110 if (ShouldPrerender(url_, 112 if (ShouldPrerender(url_,
111 response, 113 response,
112 get_current_time_, 114 get_current_time_,
113 prerender_duration_)) { 115 prerender_duration_)) {
114 BrowserThread::PostTask( 116 BrowserThread::PostTask(
115 BrowserThread::UI, 117 BrowserThread::UI,
116 FROM_HERE, 118 FROM_HERE,
117 NewRunnableMethod( 119 NewRunnableMethod(
118 this, 120 this,
119 &PrerenderResourceHandler::RunCallbackFromUIThread, 121 &PrerenderResourceHandler::RunCallbackFromUIThread,
120 url_)); 122 url_,
123 alias_urls_));
121 } 124 }
122 return next_handler_->OnResponseStarted(request_id, response); 125 return next_handler_->OnResponseStarted(request_id, response);
123 } 126 }
124 127
125 bool PrerenderResourceHandler::OnWillStart(int request_id, 128 bool PrerenderResourceHandler::OnWillStart(int request_id,
126 const GURL& url, 129 const GURL& url,
127 bool* defer) { 130 bool* defer) {
128 bool will_start = next_handler_->OnWillStart(request_id, url, defer); 131 bool will_start = next_handler_->OnWillStart(request_id, url, defer);
129 if (will_start) 132 if (will_start) {
133 alias_urls_.push_back(url);
130 url_ = url; 134 url_ = url;
135 }
131 return will_start; 136 return will_start;
132 } 137 }
133 138
134 bool PrerenderResourceHandler::OnWillRead(int request_id, 139 bool PrerenderResourceHandler::OnWillRead(int request_id,
135 net::IOBuffer** buf, 140 net::IOBuffer** buf,
136 int* buf_size, 141 int* buf_size,
137 int min_size) { 142 int min_size) {
138 return next_handler_->OnWillRead(request_id, buf, buf_size, min_size); 143 return next_handler_->OnWillRead(request_id, buf, buf_size, min_size);
139 } 144 }
140 145
141 bool PrerenderResourceHandler::OnReadCompleted(int request_id, 146 bool PrerenderResourceHandler::OnReadCompleted(int request_id,
142 int* bytes_read) { 147 int* bytes_read) {
143 return next_handler_->OnReadCompleted(request_id, bytes_read); 148 return next_handler_->OnReadCompleted(request_id, bytes_read);
144 } 149 }
145 150
146 bool PrerenderResourceHandler::OnResponseCompleted( 151 bool PrerenderResourceHandler::OnResponseCompleted(
147 int request_id, 152 int request_id,
148 const net::URLRequestStatus& status, 153 const net::URLRequestStatus& status,
149 const std::string& security_info) { 154 const std::string& security_info) {
150 return next_handler_->OnResponseCompleted(request_id, status, security_info); 155 return next_handler_->OnResponseCompleted(request_id, status, security_info);
151 } 156 }
152 157
153 void PrerenderResourceHandler::OnRequestClosed() { 158 void PrerenderResourceHandler::OnRequestClosed() {
154 next_handler_->OnRequestClosed(); 159 next_handler_->OnRequestClosed();
155 } 160 }
156 161
157 void PrerenderResourceHandler::RunCallbackFromUIThread(const GURL& url) { 162 void PrerenderResourceHandler::RunCallbackFromUIThread(const GURL& url,
163 const std::vector<GURL>&
164 alias_urls) {
158 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 165 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
159 prerender_callback_->Run(url); 166 prerender_callback_->Run(url, alias_urls);
160 } 167 }
161 168
162 void PrerenderResourceHandler::StartPrerender(const GURL& url) { 169 void PrerenderResourceHandler::StartPrerender(const GURL& url,
170 const std::vector<GURL>&
171 alias_urls) {
163 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 172 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
164 prerender_manager_->AddPreload(url); 173 prerender_manager_->AddPreload(url, alias_urls);
165 } 174 }
166 175
167 void PrerenderResourceHandler::set_prerender_duration(base::TimeDelta dt) { 176 void PrerenderResourceHandler::set_prerender_duration(base::TimeDelta dt) {
168 prerender_duration_ = dt; 177 prerender_duration_ = dt;
169 } 178 }
170 179
171 void PrerenderResourceHandler::set_get_current_time_function( 180 void PrerenderResourceHandler::set_get_current_time_function(
172 GetCurrentTimeFunction get_current_time) { 181 GetCurrentTimeFunction get_current_time) {
173 DCHECK(get_current_time); 182 DCHECK(get_current_time);
174 get_current_time_ = get_current_time; 183 get_current_time_ = get_current_time;
175 } 184 }
176 185
177 // Note: this should stay in line with prerendermanager 186 // Note: this should stay in line with prerendermanager
178 // static 187 // static
179 const int PrerenderResourceHandler::kDefaultPrerenderDurationSeconds = 20; 188 const int PrerenderResourceHandler::kDefaultPrerenderDurationSeconds = 20;
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_resource_handler.h ('k') | chrome/browser/prerender/prerender_resource_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698