| Index: content/browser/frame_host/render_frame_host_manager.h
|
| ===================================================================
|
| --- content/browser/frame_host/render_frame_host_manager.h (revision 250813)
|
| +++ content/browser/frame_host/render_frame_host_manager.h (working copy)
|
| @@ -21,6 +21,7 @@
|
| namespace content {
|
| class BrowserContext;
|
| class CrossProcessFrameConnector;
|
| +class CrossSiteTransferringRequest;
|
| class InterstitialPageImpl;
|
| class FrameTreeNode;
|
| class NavigationControllerImpl;
|
| @@ -239,7 +240,7 @@
|
| virtual void OnCrossSiteResponse(
|
| RenderViewHost* pending_render_view_host,
|
| const GlobalRequestID& global_request_id,
|
| - bool is_transfer,
|
| + scoped_ptr<CrossSiteTransferringRequest> cross_site_transferring_request,
|
| const std::vector<GURL>& transfer_url_chain,
|
| const Referrer& referrer,
|
| PageTransition page_transition,
|
| @@ -280,44 +281,46 @@
|
|
|
| // Tracks information about a navigation while a cross-process transition is
|
| // in progress, in case we need to transfer it to a new RenderFrameHost.
|
| + // When a request is being transferred, deleting the PendingNavigationParams,
|
| + // and thus |cross_site_transferring_request|, will cancel the request being
|
| + // transferred, unless its ReleaseRequest method has been called.
|
| struct PendingNavigationParams {
|
| - PendingNavigationParams();
|
| - PendingNavigationParams(const GlobalRequestID& global_request_id,
|
| - bool is_transfer,
|
| - const std::vector<GURL>& transfer_url,
|
| - Referrer referrer,
|
| - PageTransition page_transition,
|
| - int64 frame_id,
|
| - bool should_replace_current_entry);
|
| + PendingNavigationParams(
|
| + const GlobalRequestID& global_request_id,
|
| + scoped_ptr<CrossSiteTransferringRequest>
|
| + cross_site_transferring_request,
|
| + const std::vector<GURL>& transfer_url,
|
| + Referrer referrer,
|
| + PageTransition page_transition,
|
| + int64 frame_id,
|
| + bool should_replace_current_entry);
|
| ~PendingNavigationParams();
|
|
|
| // The child ID and request ID for the pending navigation. Present whether
|
| - // |is_transfer| is true or false.
|
| + // |request_transfer| is NULL or not.
|
| GlobalRequestID global_request_id;
|
|
|
| - // Whether this pending navigation needs to be transferred to another
|
| - // process than the one it was going to commit in. If so, the
|
| - // |transfer_url|, |referrer|, and |frame_id| parameters will be set.
|
| - bool is_transfer;
|
| + // If a pending request needs to be transferred to another process, this
|
| + // owns the request until it's transferred to the new process, so it will be
|
| + // cleaned up if the navigation is cancelled. Otherwise, this is NULL.
|
| + scoped_ptr<CrossSiteTransferringRequest> cross_site_transferring_request;
|
|
|
| - // If |is_transfer|, this is the URL chain of the request. The first entry
|
| - // is the original request URL, and the last entry is the destination URL to
|
| - // request in the new process.
|
| + // If |request_transfer| is non-NULL, the values below are all set.
|
| +
|
| + // The first entry is the original request URL, and the last entry is the
|
| + // destination URL to request in the new process.
|
| std::vector<GURL> transfer_url_chain;
|
|
|
| - // If |is_transfer|, this is the referrer to use for the request in the new
|
| - // process.
|
| + // This is the referrer to use for the request in the new process.
|
| Referrer referrer;
|
|
|
| - // If |is_transfer|, this is the transition type for the original
|
| - // navigation.
|
| + // This is the transition type for the original navigation.
|
| PageTransition page_transition;
|
|
|
| - // If |is_transfer|, this is the frame ID to use in RequestTransferURL.
|
| + // This is the frame ID to use in RequestTransferURL.
|
| int64 frame_id;
|
|
|
| - // If |is_transfer|, this is whether the navigation should replace the
|
| - // current history entry.
|
| + // This is whether the navigation should replace the current history entry.
|
| bool should_replace_current_entry;
|
| };
|
|
|
|
|