cross_site_transferring_request.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_BROWSER_FRAME_HOST_CROSS_SITE_TRANSFERRING_REQUEST_H_ 6#define CONTENT_BROWSER_FRAME_HOST_CROSS_SITE_TRANSFERRING_REQUEST_H_ 7 8#include "base/basictypes.h" 9#include "content/common/content_export.h" 10#include "content/public/browser/global_request_id.h" 11 12namespace content { 13 14class CrossSiteResourceHandler; 15 16// A UI thread object that owns a request being transferred. Deleting the 17// object without releasing the request will delete the underlying URLRequest. 18// This is needed to clean up the URLRequest when a cross site navigation is 19// cancelled. 20class CONTENT_EXPORT CrossSiteTransferringRequest { 21 public: 22 explicit CrossSiteTransferringRequest(GlobalRequestID global_request_id); 23 ~CrossSiteTransferringRequest(); 24 25 // Relinquishes ownership of the request, so another process can take 26 // control of it. 27 void ReleaseRequest(); 28 29 GlobalRequestID request_id() const { return global_request_id_; } 30 31 private: 32 // No need for a weak pointer here - nothing should have ownership of the 33 // cross site request until after |this| is deleted, or ReleaseRequest is 34 // called. 35 GlobalRequestID global_request_id_; 36 37 DISALLOW_COPY_AND_ASSIGN(CrossSiteTransferringRequest); 38}; 39 40} // namespace content 41 42#endif // CONTENT_BROWSER_FRAME_HOST_CROSS_SITE_TRANSFERRING_REQUEST_H_ 43