1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_MODEL_H_
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_MODEL_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Browser;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass NavigationController;
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This class is the model used by the toolbar, location bar and autocomplete
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// edit.  It populates its states from the current navigation entry retrieved
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// from the navigation controller returned by GetNavigationController().
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ToolbarModel {
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // TODO(wtc): unify ToolbarModel::SecurityLevel with SecurityStyle.  We
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // don't need two sets of security UI levels.  SECURITY_STYLE_AUTHENTICATED
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // needs to be refined into three levels: warning, standard, and EV.
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  enum SecurityLevel {
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    NONE = 0,          // HTTP/no URL/user is editing
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EV_SECURE,         // HTTPS with valid EV cert
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SECURE,            // HTTPS (non-EV)
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SECURITY_WARNING,  // HTTPS, but unable to check certificate revocation
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       // status or with insecure content on the page
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SECURITY_ERROR,    // Attempted HTTPS and failed, page not authenticated
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    NUM_SECURITY_LEVELS,
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  };
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit ToolbarModel(Browser* browser);
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ~ToolbarModel();
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the text that should be displayed in the location bar.
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::wstring GetText() const;
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the security level that the toolbar should display.
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SecurityLevel GetSecurityLevel() const;
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the resource_id of the icon to show to the left of the address,
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // based on the current URL.  This doesn't cover specialized icons while the
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // user is editing; see AutocompleteEditView::GetIcon().
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int GetIcon() const;
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the name of the EV cert holder.  Only call this when the security
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // level is EV_SECURE.
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::wstring GetEVCertName() const;
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Getter/setter of whether the text in location bar is currently being
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // edited.
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void set_input_in_progress(bool value) { input_in_progress_ = value; }
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool input_in_progress() const { return input_in_progress_; }
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the navigation controller used to retrieve the navigation entry
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // from which the states are retrieved.
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // If this returns NULL, default values are used.
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  NavigationController* GetNavigationController() const;
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  Browser* browser_;
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Whether the text in the location bar is currently being edited.
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool input_in_progress_;
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_IMPLICIT_CONSTRUCTORS(ToolbarModel);
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif  // CHROME_BROWSER_UI_TOOLBAR_TOOLBAR_MODEL_H_
72