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#include "chrome/browser/ui/passwords/manage_passwords_icon.h"
6
7#include "chrome/grit/generated_resources.h"
8#include "grit/theme_resources.h"
9
10ManagePasswordsIcon::ManagePasswordsIcon()
11    : icon_id_(0),
12      tooltip_text_id_(0),
13      state_(password_manager::ui::INACTIVE_STATE),
14      active_(false) {
15}
16
17ManagePasswordsIcon::~ManagePasswordsIcon() {
18}
19
20void ManagePasswordsIcon::SetActive(bool active) {
21  if (active_ == active)
22    return;
23  active_ = active;
24  UpdateIDs();
25  UpdateVisibleUI();
26}
27
28void ManagePasswordsIcon::SetState(password_manager::ui::State state) {
29  if (state_ == state)
30    return;
31  state_ = state;
32  UpdateIDs();
33  UpdateVisibleUI();
34}
35
36void ManagePasswordsIcon::UpdateIDs() {
37  // If the icon is inactive: clear out its image and tooltip and exit early.
38  if (state() == password_manager::ui::INACTIVE_STATE) {
39    icon_id_ = 0;
40    tooltip_text_id_ = 0;
41    return;
42  }
43
44  // Otherwise, start with the correct values for MANAGE_STATE, and adjust
45  // things accordingly if we're either in BLACKLIST_STATE or PENDING_STATE.
46  // TODO(dconnelly): Figure out how to share the resources with Android.
47#if !defined(OS_ANDROID)
48  icon_id_ = active() ? IDR_SAVE_PASSWORD_ACTIVE : IDR_SAVE_PASSWORD_INACTIVE;
49  tooltip_text_id_ = IDS_PASSWORD_MANAGER_TOOLTIP_MANAGE;
50  if (state() == password_manager::ui::BLACKLIST_STATE)
51    icon_id_ = active() ? IDR_SAVE_PASSWORD_DISABLED_ACTIVE
52                        : IDR_SAVE_PASSWORD_DISABLED_INACTIVE;
53  else if (password_manager::ui::IsPendingState(state()))
54    tooltip_text_id_ = IDS_PASSWORD_MANAGER_TOOLTIP_SAVE;
55#endif
56}
57