- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / toolbar / toolbar_model_impl.h
1 // Copyright 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_UI_TOOLBAR_TOOLBAR_MODEL_IMPL_H_
6 #define CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_MODEL_IMPL_H_
7
8 #include <string>
9
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/strings/string16.h"
13 #include "chrome/browser/ui/toolbar/toolbar_model.h"
14 #include "url/gurl.h"
15
16 class Profile;
17 class ToolbarModelDelegate;
18
19 namespace content {
20 class NavigationController;
21 class WebContents;
22 }
23
24 namespace net {
25 class X509Certificate;
26 }
27
28 // This class is the model used by the toolbar, location bar and autocomplete
29 // edit.  It populates its states from the current navigation entry retrieved
30 // from the navigation controller returned by GetNavigationController().
31 class ToolbarModelImpl : public ToolbarModel {
32  public:
33   explicit ToolbarModelImpl(ToolbarModelDelegate* delegate);
34   virtual ~ToolbarModelImpl();
35
36   static SecurityLevel GetSecurityLevelForWebContents(
37       content::WebContents* web_contents);
38
39   // Overriden from ToolbarModel.
40   virtual string16 GetText(bool allow_search_term_replacement) const OVERRIDE;
41   virtual string16 GetCorpusNameForMobile() const OVERRIDE;
42   virtual GURL GetURL() const OVERRIDE;
43   virtual bool WouldPerformSearchTermReplacement(
44       bool ignore_editing) const OVERRIDE;
45   virtual SecurityLevel GetSecurityLevel(bool ignore_editing) const OVERRIDE;
46   virtual int GetIcon() const OVERRIDE;
47   virtual string16 GetEVCertName() const OVERRIDE;
48   virtual bool ShouldDisplayURL() const OVERRIDE;
49
50   // Returns "<organization_name> [<country>]".
51   static string16 GetEVCertName(const net::X509Certificate& cert);
52
53  private:
54   // Returns the navigation controller used to retrieve the navigation entry
55   // from which the states are retrieved.
56   // If this returns NULL, default values are used.
57   content::NavigationController* GetNavigationController() const;
58
59   // Helper method to extract the profile from the navigation controller.
60   Profile* GetProfile() const;
61
62   // Returns search terms as in chrome::GetSearchTerms() if such terms should
63   // appear in the omnibox (i.e. the page is sufficiently secure, search term
64   // replacement is enabled, editing is not in progress, etc.).  If
65   // |ignore_editing| is true, the "editing not in progress" check is skipped.
66   string16 GetSearchTerms(bool ignore_editing) const;
67
68   ToolbarModelDelegate* delegate_;
69
70   DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarModelImpl);
71 };
72
73 #endif  // CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_MODEL_IMPL_H_