OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/passwords/manage_passwords_icon_views.h" | 5 #include "chrome/browser/ui/views/passwords/manage_passwords_icon_views.h" |
6 | 6 |
7 #include "chrome/app/chrome_command_ids.h" | 7 #include "chrome/app/chrome_command_ids.h" |
8 #include "chrome/browser/command_updater.h" | 8 #include "chrome/browser/command_updater.h" |
9 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" | 9 #include "chrome/browser/ui/passwords/manage_passwords_ui_controller.h" |
10 #include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h" | 10 #include "chrome/browser/ui/views/passwords/manage_passwords_bubble_view.h" |
11 #include "chrome/grit/generated_resources.h" | 11 #include "chrome/grit/generated_resources.h" |
12 #include "components/password_manager/core/common/password_manager_ui.h" | 12 #include "components/password_manager/core/common/password_manager_ui.h" |
13 #include "ui/base/l10n/l10n_util.h" | 13 #include "ui/base/l10n/l10n_util.h" |
14 #include "ui/base/resource/resource_bundle.h" | 14 #include "ui/base/resource/resource_bundle.h" |
15 #include "ui/gfx/vector_icons_public.h" | 15 #include "ui/gfx/vector_icons_public.h" |
16 | 16 |
17 ManagePasswordsIconViews::ManagePasswordsIconViews(CommandUpdater* updater) | 17 ManagePasswordsIconViews::ManagePasswordsIconViews(CommandUpdater* updater) |
18 : BubbleIconView(updater, IDC_MANAGE_PASSWORDS_FOR_PAGE), | 18 : BubbleIconView(updater, IDC_MANAGE_PASSWORDS_FOR_PAGE), |
19 state_(password_manager::ui::INACTIVE_STATE) { | 19 state_(password_manager::ui::INACTIVE_STATE) { |
20 SetFocusable(true); | 20 SetFocusable(true); |
21 UpdateUiForState(); | 21 UpdateUiForState(); |
22 } | 22 } |
23 | 23 |
24 ManagePasswordsIconViews::~ManagePasswordsIconViews() {} | 24 ManagePasswordsIconViews::~ManagePasswordsIconViews() {} |
25 | 25 |
26 void ManagePasswordsIconViews::SetActive(bool active) { | |
27 SetActiveInternal(active); | |
28 } | |
29 | |
30 void ManagePasswordsIconViews::SetState(password_manager::ui::State state) { | 26 void ManagePasswordsIconViews::SetState(password_manager::ui::State state) { |
31 if (state_ == state) | 27 if (state_ == state) |
32 return; | 28 return; |
33 // If there is an opened bubble for the current icon it should go away. | 29 // If there is an opened bubble for the current icon it should go away. |
34 if (active()) | 30 ManagePasswordsBubbleView::CloseBubble(); |
35 ManagePasswordsBubbleView::CloseBubble(); | |
36 state_ = state; | 31 state_ = state; |
37 UpdateUiForState(); | 32 UpdateUiForState(); |
38 } | 33 } |
39 | 34 |
40 void ManagePasswordsIconViews::UpdateUiForState() { | 35 void ManagePasswordsIconViews::UpdateUiForState() { |
41 if (state_ == password_manager::ui::INACTIVE_STATE) { | 36 if (state_ == password_manager::ui::INACTIVE_STATE) { |
42 SetVisible(false); | 37 SetVisible(false); |
43 return; | 38 return; |
44 } | 39 } |
45 | 40 |
46 SetTooltipText(l10n_util::GetStringUTF16( | 41 SetTooltipText(l10n_util::GetStringUTF16( |
47 state_ == password_manager::ui::PENDING_PASSWORD_STATE | 42 state_ == password_manager::ui::PENDING_PASSWORD_STATE |
48 ? IDS_PASSWORD_MANAGER_TOOLTIP_SAVE | 43 ? IDS_PASSWORD_MANAGER_TOOLTIP_SAVE |
49 : IDS_PASSWORD_MANAGER_TOOLTIP_MANAGE)); | 44 : IDS_PASSWORD_MANAGER_TOOLTIP_MANAGE)); |
50 | 45 |
51 SetVisible(true); | 46 SetVisible(true); |
52 | 47 |
53 // We may be about to automatically pop up a ManagePasswordsBubbleView. | 48 // We may be about to automatically pop up a ManagePasswordsBubbleView. |
54 // Force layout of the icon's parent now; the bubble will be incorrectly | 49 // Force layout of the icon's parent now; the bubble will be incorrectly |
55 // positioned otherwise, as the icon won't have been drawn into position. | 50 // positioned otherwise, as the icon won't have been drawn into position. |
56 parent()->Layout(); | 51 parent()->Layout(); |
57 } | 52 } |
58 | 53 |
59 void ManagePasswordsIconViews::OnExecuting( | 54 void ManagePasswordsIconViews::OnExecuting( |
60 BubbleIconView::ExecuteSource source) {} | 55 BubbleIconView::ExecuteSource source) {} |
61 | 56 |
62 bool ManagePasswordsIconViews::OnMousePressed(const ui::MouseEvent& event) { | 57 bool ManagePasswordsIconViews::OnMousePressed(const ui::MouseEvent& event) { |
63 bool result = BubbleIconView::OnMousePressed(event); | 58 bool result = BubbleIconView::OnMousePressed(event); |
64 if (IsBubbleShowing()) | 59 ManagePasswordsBubbleView::CloseBubble(); |
65 ManagePasswordsBubbleView::CloseBubble(); | |
66 return result; | 60 return result; |
67 } | 61 } |
68 | 62 |
69 bool ManagePasswordsIconViews::OnKeyPressed(const ui::KeyEvent& event) { | 63 bool ManagePasswordsIconViews::OnKeyPressed(const ui::KeyEvent& event) { |
70 // Space is always ignored because otherwise the bubble appears with the | 64 // Space is always ignored because otherwise the bubble appears with the |
71 // default button down. Releasing the space is equivalent to clicking this | 65 // default button down. Releasing the space is equivalent to clicking this |
72 // button. | 66 // button. |
73 if (event.key_code() == ui::VKEY_SPACE) | 67 if (event.key_code() == ui::VKEY_SPACE) |
74 return true; | 68 return true; |
75 if (event.key_code() == ui::VKEY_RETURN && active()) { | 69 if (event.key_code() == ui::VKEY_RETURN && IsBubbleShowing()) { |
76 // If the icon is active, it should transfer its focus to the bubble. | 70 // If the bubble's open, the icon should transfer its focus to the bubble. |
77 // If it still somehow got this key event, the bubble shouldn't be reopened. | 71 // If it still somehow got this key event, the bubble shouldn't be reopened. |
78 return true; | 72 return true; |
79 } | 73 } |
80 return BubbleIconView::OnKeyPressed(event); | 74 return BubbleIconView::OnKeyPressed(event); |
81 } | 75 } |
82 | 76 |
83 views::BubbleDelegateView* ManagePasswordsIconViews::GetBubble() const { | 77 views::BubbleDelegateView* ManagePasswordsIconViews::GetBubble() const { |
84 return ManagePasswordsBubbleView::manage_password_bubble(); | 78 return ManagePasswordsBubbleView::manage_password_bubble(); |
85 } | 79 } |
86 | 80 |
87 gfx::VectorIconId ManagePasswordsIconViews::GetVectorIcon() const { | 81 gfx::VectorIconId ManagePasswordsIconViews::GetVectorIcon() const { |
88 return gfx::VectorIconId::AUTOLOGIN; | 82 return gfx::VectorIconId::AUTOLOGIN; |
89 } | 83 } |
90 | 84 |
91 void ManagePasswordsIconViews::AboutToRequestFocusFromTabTraversal( | 85 void ManagePasswordsIconViews::AboutToRequestFocusFromTabTraversal( |
92 bool reverse) { | 86 bool reverse) { |
93 if (active()) | 87 if (IsBubbleShowing()) |
94 ManagePasswordsBubbleView::ActivateBubble(); | 88 ManagePasswordsBubbleView::ActivateBubble(); |
95 } | 89 } |
OLD | NEW |