blob: 47e954f9281488b5899b20d43d6ddd693c09f3fd [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/autofill/autofill_bubble_controller_base.h"
#include "chrome/browser/ui/autofill/autofill_bubble_base.h"
#include "chrome/browser/ui/browser_finder.h"
#include "components/autofill/core/common/autofill_clock.h"
#include "components/autofill/core/common/autofill_payments_features.h"
#if !BUILDFLAG(IS_ANDROID)
#include "chrome/browser/ui/browser_window.h"
#endif // !BUILDFLAG(IS_ANDROID)
namespace autofill {
AutofillBubbleControllerBase::AutofillBubbleControllerBase(
content::WebContents* web_contents)
: content::WebContentsObserver(web_contents) {}
AutofillBubbleControllerBase::~AutofillBubbleControllerBase() {
HideBubble();
}
void AutofillBubbleControllerBase::Show() {
UpdatePageActionIcon();
DoShowBubble();
UpdatePageActionIcon();
}
void AutofillBubbleControllerBase::OnVisibilityChanged(
content::Visibility visibility) {
if (visibility == content::Visibility::HIDDEN) {
HideBubble();
}
}
void AutofillBubbleControllerBase::WebContentsDestroyed() {
HideBubble();
}
void AutofillBubbleControllerBase::UpdatePageActionIcon() {
// Page action icons do not exist for Android.
#if !BUILDFLAG(IS_ANDROID)
Browser* browser = chrome::FindBrowserWithTab(web_contents());
if (browser) {
browser->window()->UpdatePageActionIcon(GetPageActionIconType());
}
#endif // !BUILDFLAG(IS_ANDROID)
}
void AutofillBubbleControllerBase::HideBubble() {
if (bubble_view_) {
bubble_view_->Hide();
bubble_view_ = nullptr;
}
}
} // namespace autofill