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..0beeed6470ed3e792e4104306104f94cd356a84a 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() {} |
@@ -30,14 +32,7 @@ void SaveCardIconView::OnExecuting( |
BubbleIconView::ExecuteSource execute_source) {} |
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 +44,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 |