1 // Copyright (c) 2012 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.
5 // PageNavigator defines an interface that can be used to express the user's
6 // intention to navigate to a particular URL. The implementing class should
7 // perform the navigation.
9 #ifndef CONTENT_PUBLIC_BROWSER_PAGE_NAVIGATOR_H_
10 #define CONTENT_PUBLIC_BROWSER_PAGE_NAVIGATOR_H_
14 #include "base/memory/ref_counted.h"
15 #include "base/memory/ref_counted_memory.h"
16 #include "content/common/content_export.h"
17 #include "content/public/browser/global_request_id.h"
18 #include "content/public/common/page_transition_types.h"
19 #include "content/public/common/referrer.h"
20 #include "ui/base/window_open_disposition.h"
27 struct CONTENT_EXPORT OpenURLParams
{
28 OpenURLParams(const GURL
& url
,
29 const Referrer
& referrer
,
30 WindowOpenDisposition disposition
,
31 PageTransition transition
,
32 bool is_renderer_initiated
);
33 OpenURLParams(const GURL
& url
,
34 const Referrer
& referrer
,
35 int64 frame_tree_node_id
,
36 WindowOpenDisposition disposition
,
37 PageTransition transition
,
38 bool is_renderer_initiated
);
41 // The URL/referrer to be opened.
45 // Any redirect URLs that occurred for this navigation before |url|.
46 std::vector
<GURL
> redirect_chain
;
48 // Indicates whether this navigation will be sent using POST.
49 // The POST method is limited support for basic POST data by leveraging
50 // NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST.
51 // It is not for things like file uploads.
54 // The post data when the navigation uses POST.
55 scoped_refptr
<base::RefCountedMemory
> browser_initiated_post_data
;
57 // Extra headers to add to the request for this page. Headers are
58 // represented as "<name>: <value>" and separated by \r\n. The entire string
59 // is terminated by \r\n. May be empty if no extra headers are needed.
60 std::string extra_headers
;
62 // The browser-global FrameTreeNode ID or -1 to indicate the main frame.
63 int64 frame_tree_node_id
;
65 // The disposition requested by the navigation source.
66 WindowOpenDisposition disposition
;
68 // The transition type of navigation.
69 PageTransition transition
;
71 // Whether this navigation is initiated by the renderer process.
72 bool is_renderer_initiated
;
74 // Reference to the old request id in case this is a navigation that is being
75 // transferred to a new renderer.
76 GlobalRequestID transferred_global_request_id
;
78 // Indicates whether this navigation should replace the current
80 bool should_replace_current_entry
;
82 // Indicates whether this navigation was triggered while processing a user
83 // gesture if the navigation was initiated by the renderer.
92 virtual ~PageNavigator() {}
94 // Opens a URL with the given disposition. The transition specifies how this
95 // navigation should be recorded in the history system (for example, typed).
96 // Returns the WebContents the URL is opened in, or NULL if the URL wasn't
97 // opened immediately.
98 virtual WebContents
* OpenURL(const OpenURLParams
& params
) = 0;
101 } // namespace content
103 #endif // CONTENT_PUBLIC_BROWSER_PAGE_NAVIGATOR_H_