Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / browser / frame_host / navigator_impl.h
1 // Copyright 2013 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_NAVIGATOR_IMPL_H_
6 #define CONTENT_BROWSER_FRAME_HOST_NAVIGATOR_IMPL_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "content/browser/frame_host/navigation_controller_impl.h"
10 #include "content/browser/frame_host/navigator.h"
11 #include "content/common/content_export.h"
12
13 namespace content {
14
15 class NavigationControllerImpl;
16 class NavigatorDelegate;
17 struct LoadCommittedDetails;
18
19 // This class is an implementation of Navigator, responsible for managing
20 // navigations in regular browser tabs.
21 class CONTENT_EXPORT NavigatorImpl : public Navigator {
22  public:
23   NavigatorImpl(NavigationControllerImpl* navigation_controller,
24                 NavigatorDelegate* delegate);
25
26   // Navigator implementation.
27   virtual NavigationController* GetController() OVERRIDE;
28   virtual void DidStartProvisionalLoad(RenderFrameHostImpl* render_frame_host,
29                                        int parent_routing_id,
30                                        const GURL& url) OVERRIDE;
31   virtual void DidFailProvisionalLoadWithError(
32       RenderFrameHostImpl* render_frame_host,
33       const FrameHostMsg_DidFailProvisionalLoadWithError_Params& params)
34       OVERRIDE;
35   virtual void DidFailLoadWithError(
36       RenderFrameHostImpl* render_frame_host,
37       const GURL& url,
38       int error_code,
39       const base::string16& error_description) OVERRIDE;
40   virtual void DidRedirectProvisionalLoad(
41       RenderFrameHostImpl* render_frame_host,
42       int32 page_id,
43       const GURL& source_url,
44       const GURL& target_url) OVERRIDE;
45   virtual void DidNavigate(
46       RenderFrameHostImpl* render_frame_host,
47       const FrameHostMsg_DidCommitProvisionalLoad_Params&
48           input_params) OVERRIDE;
49   virtual bool NavigateToPendingEntry(
50       RenderFrameHostImpl* render_frame_host,
51       NavigationController::ReloadType reload_type) OVERRIDE;
52   virtual base::TimeTicks GetCurrentLoadStart() OVERRIDE;
53   virtual void RequestOpenURL(RenderFrameHostImpl* render_frame_host,
54                               const GURL& url,
55                               const Referrer& referrer,
56                               WindowOpenDisposition disposition,
57                               bool should_replace_current_entry,
58                               bool user_gesture) OVERRIDE;
59   virtual void RequestTransferURL(
60       RenderFrameHostImpl* render_frame_host,
61       const GURL& url,
62       const std::vector<GURL>& redirect_chain,
63       const Referrer& referrer,
64       PageTransition page_transition,
65       WindowOpenDisposition disposition,
66       const GlobalRequestID& transferred_global_request_id,
67       bool should_replace_current_entry,
68       bool user_gesture) OVERRIDE;
69
70  private:
71   virtual ~NavigatorImpl() {}
72
73   // Navigates to the given entry, which must be the pending entry.  Private
74   // because all callers should use NavigateToPendingEntry.
75   bool NavigateToEntry(
76       RenderFrameHostImpl* render_frame_host,
77       const NavigationEntryImpl& entry,
78       NavigationController::ReloadType reload_type);
79
80   bool ShouldAssignSiteForURL(const GURL& url);
81
82   // The NavigationController that will keep track of session history for all
83   // RenderFrameHost objects using this NavigatorImpl.
84   // TODO(nasko): Move ownership of the NavigationController from
85   // WebContentsImpl to this class.
86   NavigationControllerImpl* controller_;
87
88   // Used to notify the object embedding this Navigator about navigation
89   // events. Can be NULL in tests.
90   NavigatorDelegate* delegate_;
91
92   // System time at which the current load was started.
93   base::TimeTicks current_load_start_;
94
95   DISALLOW_COPY_AND_ASSIGN(NavigatorImpl);
96 };
97
98 }  // namespace content
99
100 #endif  // CONTENT_BROWSER_FRAME_HOST_NAVIGATOR_IMPL_H_