1// Copyright 2014 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_PASSWORDS_MANAGE_PASSWORDS_ICON_H_
6#define CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_ICON_H_
7
8#include "base/basictypes.h"
9#include "components/password_manager/core/common/password_manager_ui.h"
10
11// Abstract base class for platform-specific password management icon views.
12class ManagePasswordsIcon {
13 public:
14  // Get/set the icon's state. Implementations of this class must implement
15  // SetStateInternal to do reasonable platform-specific things to represent
16  // the icon's state to the user.
17  void SetState(password_manager::ui::State state);
18  password_manager::ui::State state() const { return state_; }
19
20  void SetActive(bool active);
21  bool active() const { return active_; }
22
23 protected:
24  // The ID of the icon and text resources that are currently displayed.
25  int icon_id_;
26  int tooltip_text_id_;
27
28  ManagePasswordsIcon();
29  ~ManagePasswordsIcon();
30
31  // Called from SetState() iff the icon's state has changed in order to do
32  // whatever platform-specific UI work is necessary given the new state.
33  virtual void UpdateVisibleUI() = 0;
34
35 private:
36  // Updates the resource IDs in response to state changes.
37  void UpdateIDs();
38
39  password_manager::ui::State state_;
40  bool active_;
41
42  DISALLOW_COPY_AND_ASSIGN(ManagePasswordsIcon);
43};
44
45#endif  // CHROME_BROWSER_UI_PASSWORDS_MANAGE_PASSWORDS_ICON_H_
46