From 195e77d6f2d2f615c2a5138750db124853c0a093 Mon Sep 17 00:00:00 2001 From: "darin@chromium.org" Date: Thu, 23 Jul 2009 19:10:23 +0000 Subject: Add support to URLRequest for deferring redirects. I chose to add an out parameter to OnReceivedRedirect because it allows for the default behavior to remain the same. I considered adding a ContinueAfterRedirect method that all OnReceivedRedirect implementations would need to call, but this caused one annoying problem: In the case of a ChromePlugin, it is possible for the URLRequest to get deleted inside the handler for the redirect. This would make it hard to subsequently call a method on the URLRequest since I would need to have a way to determine if the URLRequest had been deleted. TEST=covered by unit tests BUG=16413,6442 R=eroman,wtc Review URL: http://codereview.chromium.org/155897 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21417 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/renderer_host/resource_dispatcher_host.cc | 3 ++- chrome/browser/renderer_host/resource_dispatcher_host.h | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'chrome/browser/renderer_host') diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc index 9ac5b7f..5e46a8a 100644 --- a/chrome/browser/renderer_host/resource_dispatcher_host.cc +++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc @@ -889,7 +889,8 @@ void ResourceDispatcherHost::RemovePendingRequest( // URLRequest::Delegate ------------------------------------------------------- void ResourceDispatcherHost::OnReceivedRedirect(URLRequest* request, - const GURL& new_url) { + const GURL& new_url, + bool* defer_redirect) { RESOURCE_LOG("OnReceivedRedirect: " << request->url().spec()); ExtraRequestInfo* info = ExtraInfoForRequest(request); diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.h b/chrome/browser/renderer_host/resource_dispatcher_host.h index 7a0d4220..70ca89f 100644 --- a/chrome/browser/renderer_host/resource_dispatcher_host.h +++ b/chrome/browser/renderer_host/resource_dispatcher_host.h @@ -309,7 +309,8 @@ class ResourceDispatcherHost : public URLRequest::Delegate { // URLRequest::Delegate virtual void OnReceivedRedirect(URLRequest* request, - const GURL& new_url); + const GURL& new_url, + bool* defer_redirect); virtual void OnAuthRequired(URLRequest* request, net::AuthChallengeInfo* auth_info); virtual void OnCertificateRequested( -- cgit v1.1