Chromium Code Reviews| Index: chrome/browser/ui/views/autofill/save_card_icon_view.cc |
| diff --git a/chrome/browser/ui/views/autofill/save_card_icon_view.cc b/chrome/browser/ui/views/autofill/save_card_icon_view.cc |
| index 39d7820ee40570caea247846395e1ebb1d99c743..e24f082f0f6b58bc7997f253f5fcf059457c717d 100644 |
| --- a/chrome/browser/ui/views/autofill/save_card_icon_view.cc |
| +++ b/chrome/browser/ui/views/autofill/save_card_icon_view.cc |
| @@ -22,6 +22,8 @@ SaveCardIconView::SaveCardIconView(CommandUpdater* command_updater, |
| browser_(browser) { |
| set_id(VIEW_ID_SAVE_CREDIT_CARD_BUTTON); |
| SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_SAVE_CREDIT_CARD)); |
| + if (browser) |
| + browser->tab_strip_model()->AddObserver(this); |
| } |
| SaveCardIconView::~SaveCardIconView() {} |
| @@ -29,15 +31,18 @@ SaveCardIconView::~SaveCardIconView() {} |
| void SaveCardIconView::OnExecuting( |
| BubbleIconView::ExecuteSource execute_source) {} |
| +bool SaveCardIconView::OnMousePressed(const ui::MouseEvent& event) { |
|
Evan Stade
2016/01/11 18:05:24
BubbleIconView handles more than just mouses, it a
Justin Donnelly
2016/01/11 19:32:37
Understood.
|
| + bool result = BubbleIconView::OnMousePressed(event); |
| + |
| + SaveCardBubbleControllerImpl* controller = GetController(); |
| + if (controller) |
| + controller->HideBubble(); |
| + |
| + return result; |
| +} |
| + |
| views::BubbleDelegateView* SaveCardIconView::GetBubble() const { |
| - if (!browser_) |
| - return nullptr; |
| - content::WebContents* web_contents = |
| - browser_->tab_strip_model()->GetActiveWebContents(); |
| - if (!web_contents) |
| - return nullptr; |
| - autofill::SaveCardBubbleControllerImpl* controller = |
| - autofill::SaveCardBubbleControllerImpl::FromWebContents(web_contents); |
| + SaveCardBubbleControllerImpl* controller = GetController(); |
| if (!controller) |
| return nullptr; |
| @@ -49,4 +54,20 @@ gfx::VectorIconId SaveCardIconView::GetVectorIcon() const { |
| return gfx::VectorIconId::CREDIT_CARD; |
| } |
| +void SaveCardIconView::TabDeactivated(content::WebContents* contents) { |
| + SaveCardBubbleControllerImpl* controller = GetController(); |
| + if (controller) |
| + controller->HideBubble(); |
| +} |
| + |
| +SaveCardBubbleControllerImpl* SaveCardIconView::GetController() const { |
| + if (!browser_) |
| + return nullptr; |
| + content::WebContents* web_contents = |
| + browser_->tab_strip_model()->GetActiveWebContents(); |
| + if (!web_contents) |
| + return nullptr; |
| + return autofill::SaveCardBubbleControllerImpl::FromWebContents(web_contents); |
| +} |
| + |
| } // namespace autofill |