Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / history / history_tab_helper.h
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.
4
5 #ifndef CHROME_BROWSER_HISTORY_HISTORY_TAB_HELPER_H_
6 #define CHROME_BROWSER_HISTORY_HISTORY_TAB_HELPER_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "base/time/time.h"
10 #include "content/public/browser/web_contents_observer.h"
11 #include "content/public/browser/web_contents_user_data.h"
12
13 class HistoryService;
14
15 namespace history {
16 struct HistoryAddPageArgs;
17 }
18
19 class HistoryTabHelper : public content::WebContentsObserver,
20                          public content::WebContentsUserData<HistoryTabHelper> {
21  public:
22   ~HistoryTabHelper() override;
23
24   // Updates history with the specified navigation. This is called by
25   // OnMsgNavigate to update history state.
26   void UpdateHistoryForNavigation(
27       const history::HistoryAddPageArgs& add_page_args);
28
29   // Sends the page title to the history service. This is called when we receive
30   // the page title and we know we want to update history.
31   void UpdateHistoryPageTitle(const content::NavigationEntry& entry);
32
33   // Returns the history::HistoryAddPageArgs to use for adding a page to
34   // history.
35   history::HistoryAddPageArgs CreateHistoryAddPageArgs(
36       const GURL& virtual_url,
37       base::Time timestamp,
38       bool did_replace_entry,
39       const content::FrameNavigateParams& params);
40
41  private:
42   explicit HistoryTabHelper(content::WebContents* web_contents);
43   friend class content::WebContentsUserData<HistoryTabHelper>;
44
45   // content::WebContentsObserver implementation.
46   void DidNavigateMainFrame(
47       const content::LoadCommittedDetails& details,
48       const content::FrameNavigateParams& params) override;
49   void DidNavigateAnyFrame(content::RenderFrameHost* render_frame_host,
50                            const content::LoadCommittedDetails& details,
51                            const content::FrameNavigateParams& params) override;
52   void TitleWasSet(content::NavigationEntry* entry, bool explicit_set) override;
53   void WebContentsDestroyed() override;
54
55   // Helper function to return the history service.  May return NULL.
56   HistoryService* GetHistoryService();
57
58   // Whether we have a (non-empty) title for the current page.
59   // Used to prevent subsequent title updates from affecting history. This
60   // prevents some weirdness because some AJAXy apps use titles for status
61   // messages.
62   bool received_page_title_;
63
64   DISALLOW_COPY_AND_ASSIGN(HistoryTabHelper);
65 };
66
67 #endif  // CHROME_BROWSER_HISTORY_HISTORY_TAB_HELPER_H_