OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_throttle.h" | 5 #include "chrome/browser/prerender/prerender_resource_throttle.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/numerics/safe_conversions.h" | 9 #include "base/numerics/safe_conversions.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "chrome/browser/prerender/prerender_final_status.h" | 11 #include "chrome/browser/prerender/prerender_final_status.h" |
12 #include "chrome/browser/prerender/prerender_manager.h" | 12 #include "chrome/browser/prerender/prerender_manager.h" |
13 #include "chrome/browser/prerender/prerender_util.h" | 13 #include "chrome/browser/prerender/prerender_util.h" |
14 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
15 #include "content/public/browser/render_frame_host.h" | 15 #include "content/public/browser/render_frame_host.h" |
16 #include "content/public/browser/resource_controller.h" | |
17 #include "content/public/browser/resource_request_info.h" | 16 #include "content/public/browser/resource_request_info.h" |
18 #include "content/public/browser/web_contents.h" | 17 #include "content/public/browser/web_contents.h" |
19 #include "net/http/http_response_headers.h" | 18 #include "net/http/http_response_headers.h" |
20 #include "net/url_request/redirect_info.h" | 19 #include "net/url_request/redirect_info.h" |
21 #include "net/url_request/url_request.h" | 20 #include "net/url_request/url_request.h" |
22 | 21 |
23 using content::BrowserThread; | 22 using content::BrowserThread; |
24 using content::ResourceType; | 23 using content::ResourceType; |
25 | 24 |
26 namespace prerender { | 25 namespace prerender { |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 content::IsResourceTypeFrame(info->GetResourceType()), | 132 content::IsResourceTypeFrame(info->GetResourceType()), |
134 IsNoStoreResponse(*request_), redirect_count, | 133 IsNoStoreResponse(*request_), redirect_count, |
135 info->GetChildID(), info->GetRenderFrameID(), | 134 info->GetChildID(), info->GetRenderFrameID(), |
136 prerender_throttle_info_)); | 135 prerender_throttle_info_)); |
137 } | 136 } |
138 | 137 |
139 const char* PrerenderResourceThrottle::GetNameForLogging() const { | 138 const char* PrerenderResourceThrottle::GetNameForLogging() const { |
140 return "PrerenderResourceThrottle"; | 139 return "PrerenderResourceThrottle"; |
141 } | 140 } |
142 | 141 |
143 void PrerenderResourceThrottle::Resume() { | 142 void PrerenderResourceThrottle::ResumeHandler() { |
144 controller()->Resume(); | 143 Resume(); |
145 } | |
146 | |
147 void PrerenderResourceThrottle::Cancel() { | |
148 controller()->Cancel(); | |
149 } | 144 } |
150 | 145 |
151 // static | 146 // static |
152 void PrerenderResourceThrottle::WillStartRequestOnUI( | 147 void PrerenderResourceThrottle::WillStartRequestOnUI( |
153 const base::WeakPtr<PrerenderResourceThrottle>& throttle, | 148 const base::WeakPtr<PrerenderResourceThrottle>& throttle, |
154 const std::string& method, | 149 const std::string& method, |
155 ResourceType resource_type, | 150 ResourceType resource_type, |
156 int render_process_id, | 151 int render_process_id, |
157 int render_frame_id, | 152 int render_frame_id, |
158 const GURL& url, | 153 const GURL& url, |
(...skipping 28 matching lines...) Expand all Loading... |
187 // to conserve network usage in mobile devices. | 182 // to conserve network usage in mobile devices. |
188 prerender_contents->AddResourceThrottle(throttle); | 183 prerender_contents->AddResourceThrottle(throttle); |
189 return; | 184 return; |
190 #endif | 185 #endif |
191 } | 186 } |
192 } | 187 } |
193 | 188 |
194 BrowserThread::PostTask( | 189 BrowserThread::PostTask( |
195 BrowserThread::IO, FROM_HERE, | 190 BrowserThread::IO, FROM_HERE, |
196 base::Bind(cancel ? &PrerenderResourceThrottle::Cancel | 191 base::Bind(cancel ? &PrerenderResourceThrottle::Cancel |
197 : &PrerenderResourceThrottle::Resume, | 192 : &PrerenderResourceThrottle::ResumeHandler, |
198 throttle)); | 193 throttle)); |
199 } | 194 } |
200 | 195 |
201 // static | 196 // static |
202 void PrerenderResourceThrottle::WillRedirectRequestOnUI( | 197 void PrerenderResourceThrottle::WillRedirectRequestOnUI( |
203 const base::WeakPtr<PrerenderResourceThrottle>& throttle, | 198 const base::WeakPtr<PrerenderResourceThrottle>& throttle, |
204 const std::string& follow_only_when_prerender_shown_header, | 199 const std::string& follow_only_when_prerender_shown_header, |
205 ResourceType resource_type, | 200 ResourceType resource_type, |
206 bool async, | 201 bool async, |
207 bool is_no_store, | 202 bool is_no_store, |
(...skipping 26 matching lines...) Expand all Loading... |
234 // Defer the redirect until the prerender is used or canceled. | 229 // Defer the redirect until the prerender is used or canceled. |
235 prerender_contents->AddResourceThrottle(throttle); | 230 prerender_contents->AddResourceThrottle(throttle); |
236 return; | 231 return; |
237 } | 232 } |
238 } | 233 } |
239 } | 234 } |
240 | 235 |
241 BrowserThread::PostTask( | 236 BrowserThread::PostTask( |
242 BrowserThread::IO, FROM_HERE, | 237 BrowserThread::IO, FROM_HERE, |
243 base::Bind(cancel ? &PrerenderResourceThrottle::Cancel | 238 base::Bind(cancel ? &PrerenderResourceThrottle::Cancel |
244 : &PrerenderResourceThrottle::Resume, | 239 : &PrerenderResourceThrottle::ResumeHandler, |
245 throttle)); | 240 throttle)); |
246 } | 241 } |
247 | 242 |
248 // static | 243 // static |
249 void PrerenderResourceThrottle::WillProcessResponseOnUI( | 244 void PrerenderResourceThrottle::WillProcessResponseOnUI( |
250 bool is_main_resource, | 245 bool is_main_resource, |
251 bool is_no_store, | 246 bool is_no_store, |
252 int redirect_count, | 247 int redirect_count, |
253 int render_process_id, | 248 int render_process_id, |
254 int render_frame_id, | 249 int render_frame_id, |
(...skipping 18 matching lines...) Expand all Loading... |
273 if (g_prerender_contents_for_testing) | 268 if (g_prerender_contents_for_testing) |
274 return g_prerender_contents_for_testing; | 269 return g_prerender_contents_for_testing; |
275 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( | 270 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( |
276 render_process_id, render_frame_id); | 271 render_process_id, render_frame_id); |
277 content::WebContents* web_contents = | 272 content::WebContents* web_contents = |
278 content::WebContents::FromRenderFrameHost(rfh); | 273 content::WebContents::FromRenderFrameHost(rfh); |
279 return PrerenderContents::FromWebContents(web_contents); | 274 return PrerenderContents::FromWebContents(web_contents); |
280 } | 275 } |
281 | 276 |
282 } // namespace prerender | 277 } // namespace prerender |
OLD | NEW |