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 #include "content/common/content_export.h" 12 13 namespace content { 14 class ResourceRequestBody; 15 16 // PlzNavigate 17 // A UI thread object that owns a navigation request until it commits. It 18 // ensures the UI thread can start a navigation request in the 19 // ResourceDispatcherHost (that lives on the IO thread). 20 // TODO(clamy): Describe the interactions between the UI and IO thread during 21 // the navigation following its refactoring. 22 class NavigationRequest { 23 public: 24 NavigationRequest(const NavigationRequestInfo& info, 25 int64 frame_tree_node_id); 26 27 ~NavigationRequest(); 28 29 // Called on the UI thread by the RenderFrameHostManager which owns the 30 // NavigationRequest. After calling this function, |body| can no longer be 31 // manipulated on the UI thread. 32 void BeginNavigation(scoped_refptr<ResourceRequestBody> body); 33 34 // Called on the UI thread by the RenderFrameHostManager which owns the 35 // NavigationRequest whenever this navigation request should be canceled. 36 void CancelNavigation(); 37 38 const NavigationRequestInfo& info() const { return info_; } 39 40 int64 frame_tree_node_id() const { return frame_tree_node_id_; } 41 42 int64 navigation_request_id() const { return navigation_request_id_; } 43 44 private: 45 const int64 navigation_request_id_; 46 const NavigationRequestInfo info_; 47 const int64 frame_tree_node_id_; 48 49 DISALLOW_COPY_AND_ASSIGN(NavigationRequest); 50 }; 51 52 } // namespace content 53 54 #endif // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_REQUEST_H_ 55