diff options
author | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-07 19:45:52 +0000 |
---|---|---|
committer | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-07 19:45:52 +0000 |
commit | 66ab87e8ebc518ab54238f9899f813311844997b (patch) | |
tree | b26bbd221e2668c33d84ab9ca92cc45a01828080 /content/browser/loader/cross_site_resource_handler.cc | |
parent | c745d405c8ac5a39c4ede5ccafe3445878b3767b (diff) | |
download | chromium_src-66ab87e8ebc518ab54238f9899f813311844997b.zip chromium_src-66ab87e8ebc518ab54238f9899f813311844997b.tar.gz chromium_src-66ab87e8ebc518ab54238f9899f813311844997b.tar.bz2 |
Clean up ResourceHandler API.
1. Move URLRequest member to ResourceHandler base class and add convenience functions for subclasses.
2. Make OnWillRead take a scoped_refptr to avoid leaking the buffer.
BUG=295239
TEST=No behavior change.
Review URL: https://codereview.chromium.org/25536005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227318 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/loader/cross_site_resource_handler.cc')
-rw-r--r-- | content/browser/loader/cross_site_resource_handler.cc | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/content/browser/loader/cross_site_resource_handler.cc b/content/browser/loader/cross_site_resource_handler.cc index 6bac75a..657791f 100644 --- a/content/browser/loader/cross_site_resource_handler.cc +++ b/content/browser/loader/cross_site_resource_handler.cc @@ -49,8 +49,7 @@ void OnCrossSiteResponseHelper(int render_process_id, CrossSiteResourceHandler::CrossSiteResourceHandler( scoped_ptr<ResourceHandler> next_handler, net::URLRequest* request) - : LayeredResourceHandler(next_handler.Pass()), - request_(request), + : LayeredResourceHandler(request, next_handler.Pass()), has_started_response_(false), in_cross_site_transition_(false), completed_during_transition_(false), @@ -61,7 +60,7 @@ CrossSiteResourceHandler::CrossSiteResourceHandler( CrossSiteResourceHandler::~CrossSiteResourceHandler() { // Cleanup back-pointer stored on the request info. - ResourceRequestInfoImpl::ForRequest(request_)->set_cross_site_handler(NULL); + GetRequestInfo()->set_cross_site_handler(NULL); } bool CrossSiteResourceHandler::OnRequestRedirected( @@ -86,7 +85,7 @@ bool CrossSiteResourceHandler::OnResponseStarted( DCHECK(!in_cross_site_transition_); has_started_response_ = true; - ResourceRequestInfoImpl* info = ResourceRequestInfoImpl::ForRequest(request_); + ResourceRequestInfoImpl* info = GetRequestInfo(); // We will need to swap processes if either (1) a redirect that requires a // transfer occurred before we got here, or (2) a pending cross-site request @@ -94,7 +93,7 @@ bool CrossSiteResourceHandler::OnResponseStarted( // transferred back into the original process due to a redirect. bool should_transfer = GetContentClient()->browser()->ShouldSwapProcessesForRedirect( - info->GetContext(), request_->original_url(), request_->url()); + info->GetContext(), request()->original_url(), request()->url()); bool swap_needed = should_transfer || CrossSiteRequestManager::GetInstance()-> HasPendingCrossSiteRequest(info->GetChildID(), info->GetRouteID()); @@ -139,8 +138,7 @@ bool CrossSiteResourceHandler::OnResponseCompleted( const net::URLRequestStatus& status, const std::string& security_info) { if (!in_cross_site_transition_) { - ResourceRequestInfoImpl* info = - ResourceRequestInfoImpl::ForRequest(request_); + ResourceRequestInfoImpl* info = GetRequestInfo(); // If we've already completed the transition, or we're canceling the // request, or an error occurred with no cross-process navigation in // progress, then we should just pass this through. @@ -173,11 +171,10 @@ bool CrossSiteResourceHandler::OnResponseCompleted( // We can now send the response to the new renderer, which will cause // WebContentsImpl to swap in the new renderer and destroy the old one. void CrossSiteResourceHandler::ResumeResponse() { - DCHECK(request_); + DCHECK(request()); DCHECK(in_cross_site_transition_); in_cross_site_transition_ = false; - ResourceRequestInfoImpl* info = - ResourceRequestInfoImpl::ForRequest(request_); + ResourceRequestInfoImpl* info = GetRequestInfo(); if (has_started_response_) { // Send OnResponseStarted to the new renderer. @@ -218,8 +215,7 @@ void CrossSiteResourceHandler::StartCrossSiteTransition( // Store this handler on the ExtraRequestInfo, so that RDH can call our // ResumeResponse method when we are ready to resume. - ResourceRequestInfoImpl* info = - ResourceRequestInfoImpl::ForRequest(request_); + ResourceRequestInfoImpl* info = GetRequestInfo(); info->set_cross_site_handler(this); DCHECK_EQ(request_id, info->GetRequestID()); @@ -233,8 +229,8 @@ void CrossSiteResourceHandler::StartCrossSiteTransition( Referrer referrer; int frame_id = -1; if (should_transfer) { - transfer_url = request_->url(); - referrer = Referrer(GURL(request_->referrer()), info->GetReferrerPolicy()); + transfer_url = request()->url(); + referrer = Referrer(GURL(request()->referrer()), info->GetReferrerPolicy()); frame_id = info->GetFrameID(); ResourceDispatcherHostImpl::Get()->MarkAsTransferredNavigation( |