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

Side by Side Diff: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc

Issue 23460046: Check the return value when canceling prerenders. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/renderer_host/chrome_resource_dispatcher_host_delegate. h" 5 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 return false; 221 return false;
222 222
223 // If prefetch is disabled, kill the request. 223 // If prefetch is disabled, kill the request.
224 if (!prerender::PrerenderManager::IsPrefetchEnabled()) 224 if (!prerender::PrerenderManager::IsPrefetchEnabled())
225 return false; 225 return false;
226 } 226 }
227 227
228 // Abort any prerenders that spawn requests that use invalid HTTP methods 228 // Abort any prerenders that spawn requests that use invalid HTTP methods
229 // or invalid schemes. 229 // or invalid schemes.
230 if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { 230 if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) {
231 if (!prerender::PrerenderManager::IsValidHttpMethod(method)) { 231 if (!prerender::PrerenderManager::IsValidHttpMethod(method) &&
232 prerender_tracker_->TryCancelOnIOThread( 232 prerender_tracker_->TryCancelOnIOThread(
233 child_id, route_id, prerender::FINAL_STATUS_INVALID_HTTP_METHOD); 233 child_id, route_id, prerender::FINAL_STATUS_INVALID_HTTP_METHOD)) {
234 return false; 234 return false;
235 } 235 }
236 if (!prerender::PrerenderManager::DoesSubresourceURLHaveValidScheme(url)) { 236 if (!prerender::PrerenderManager::DoesSubresourceURLHaveValidScheme(url) &&
237 prerender_tracker_->TryCancelOnIOThread(
238 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) {
237 ReportUnsupportedPrerenderScheme(url); 239 ReportUnsupportedPrerenderScheme(url);
238 prerender_tracker_->TryCancelOnIOThread(
239 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME);
240 return false; 240 return false;
241 } 241 }
242 } 242 }
243 243
244 return true; 244 return true;
245 } 245 }
246 246
247 void ChromeResourceDispatcherHostDelegate::RequestBeginning( 247 void ChromeResourceDispatcherHostDelegate::RequestBeginning(
248 net::URLRequest* request, 248 net::URLRequest* request,
249 content::ResourceContext* resource_context, 249 content::ResourceContext* resource_context,
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 } 418 }
419 419
420 bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( 420 bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol(
421 const GURL& url, int child_id, int route_id) { 421 const GURL& url, int child_id, int route_id) {
422 #if defined(OS_ANDROID) 422 #if defined(OS_ANDROID)
423 // Android use a resource throttle to handle external as well as internal 423 // Android use a resource throttle to handle external as well as internal
424 // protocols. 424 // protocols.
425 return false; 425 return false;
426 #else 426 #else
427 427
428 if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { 428 if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id) &&
429 prerender_tracker_->TryCancel(
430 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) {
429 ReportPrerenderSchemeCancelReason( 431 ReportPrerenderSchemeCancelReason(
430 PRERENDER_SCHEME_CANCEL_REASON_EXTERNAL_PROTOCOL); 432 PRERENDER_SCHEME_CANCEL_REASON_EXTERNAL_PROTOCOL);
431 prerender_tracker_->TryCancel(
432 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME);
433 return false; 433 return false;
434 } 434 }
435 435
436 ExtensionRendererState::WebViewInfo info; 436 ExtensionRendererState::WebViewInfo info;
437 if (ExtensionRendererState::GetInstance()->GetWebViewInfo(child_id, 437 if (ExtensionRendererState::GetInstance()->GetWebViewInfo(child_id,
438 route_id, 438 route_id,
439 &info)) { 439 &info)) {
440 return false; 440 return false;
441 } 441 }
442 442
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 644
645 if (io_data->resource_prefetch_predictor_observer()) { 645 if (io_data->resource_prefetch_predictor_observer()) {
646 io_data->resource_prefetch_predictor_observer()->OnRequestRedirected( 646 io_data->resource_prefetch_predictor_observer()->OnRequestRedirected(
647 redirect_url, request); 647 redirect_url, request);
648 } 648 }
649 649
650 int child_id, route_id; 650 int child_id, route_id;
651 if (!prerender::PrerenderManager::DoesURLHaveValidScheme(redirect_url) && 651 if (!prerender::PrerenderManager::DoesURLHaveValidScheme(redirect_url) &&
652 ResourceRequestInfo::ForRequest(request)->GetAssociatedRenderView( 652 ResourceRequestInfo::ForRequest(request)->GetAssociatedRenderView(
653 &child_id, &route_id) && 653 &child_id, &route_id) &&
654 prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { 654 prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id) &&
655 prerender_tracker_->TryCancel(
656 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) {
655 ReportUnsupportedPrerenderScheme(redirect_url); 657 ReportUnsupportedPrerenderScheme(redirect_url);
656 prerender_tracker_->TryCancel(
657 child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME);
658 request->Cancel(); 658 request->Cancel();
659 } 659 }
660 } 660 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698