cross_site_transferring_request.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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 private: 30 // No need for a weak pointer here - nothing should have ownership of the 31 // cross site request until after |this| is deleted, or ReleaseRequest is 32 // called. 33 GlobalRequestID global_request_id_; 34 35 DISALLOW_COPY_AND_ASSIGN(CrossSiteTransferringRequest); 36}; 37 38} // namespace content 39 40#endif // CONTENT_BROWSER_FRAME_HOST_CROSS_SITE_TRANSFERRING_REQUEST_H_ 41