navigation_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_NAVIGATION_REQUEST_H_ 6#define CONTENT_BROWSER_FRAME_HOST_NAVIGATION_REQUEST_H_ 7 8#include "base/basictypes.h" 9#include "base/memory/ref_counted.h" 10#include "content/browser/frame_host/navigation_request_info.h" 11 12namespace content { 13class ResourceRequestBody; 14 15// PlzNavigate 16// A UI thread object that owns a navigation request until it commits. It 17// ensures the UI thread can start a navigation request in the 18// ResourceDispatcherHost (that lives on the IO thread). 19// TODO(clamy): Describe the interactions between the UI and IO thread during 20// the navigation following its refactoring. 21class NavigationRequest { 22 public: 23 NavigationRequest(const NavigationRequestInfo& info, int64 frame_node_id); 24 25 ~NavigationRequest(); 26 27 const NavigationRequestInfo& info() const { return info_; } 28 int64 frame_node_id() const { return frame_node_id_; } 29 30 // Called on the UI thread by the RenderFrameHostManager which owns the 31 // NavigationRequest. After calling this function, |body| can no longer be 32 // manipulated on the UI thread. 33 void BeginNavigation(scoped_refptr<ResourceRequestBody> body); 34 35 private: 36 const NavigationRequestInfo info_; 37 const int64 frame_node_id_; 38 39 DISALLOW_COPY_AND_ASSIGN(NavigationRequest); 40}; 41 42} // namespace content 43 44#endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_REQUEST_H_ 45