navigation_request.h revision 116680a4aac90f2aa7413d9095a592090648e557
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// A UI thread object that owns a navigation request until it commits. It
16// ensures the UI thread can start a navigation request in the
17// ResourceDispatcherHost (that lives on the IO thread).
18// TODO(clamy): Describe the interactions between the UI and IO thread during
19// the navigation following its refactoring.
20class NavigationRequest {
21 public:
22  NavigationRequest(const NavigationRequestInfo& info, int64 frame_node_id);
23
24  ~NavigationRequest();
25
26  const NavigationRequestInfo& info_for_testing() const { return info_; }
27  int64 frame_node_id() const { return frame_node_id_; }
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 private:
35  const NavigationRequestInfo info_;
36  const int64 frame_node_id_;
37
38  DISALLOW_COPY_AND_ASSIGN(NavigationRequest);
39};
40
41}  // namespace content
42
43#endif  // CONTENT_BROWSER_FRAME_HOST_NAVIGATION_REQUEST_H_
44