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 16class Profile; 17class ToolbarModelDelegate; 18 19namespace content { 20class NavigationController; 21class WebContents; 22} 23 24namespace net { 25class 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(). 31class 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 private: 40 // ToolbarModel: 41 virtual base::string16 GetText() const OVERRIDE; 42 virtual base::string16 GetFormattedURL(size_t* prefix_end) const OVERRIDE; 43 virtual base::string16 GetCorpusNameForMobile() const OVERRIDE; 44 virtual GURL GetURL() const OVERRIDE; 45 virtual bool WouldPerformSearchTermReplacement( 46 bool ignore_editing) const OVERRIDE; 47 virtual SecurityLevel GetSecurityLevel(bool ignore_editing) const OVERRIDE; 48 virtual int GetIcon() const OVERRIDE; 49 virtual int GetIconForSecurityLevel(SecurityLevel level) const OVERRIDE; 50 virtual base::string16 GetEVCertName() const OVERRIDE; 51 virtual bool ShouldDisplayURL() const OVERRIDE; 52 virtual bool WouldOmitURLDueToOriginChip() const OVERRIDE; 53 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 base::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_ 74