blob: 931779591f030d4a9beab0bda2604c4a4a878c8e [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/location_bar/find_bar_icon.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/find_bar/find_bar.h"
#include "chrome/browser/ui/find_bar/find_bar_controller.h"
#include "chrome/grit/generated_resources.h"
#include "components/omnibox/browser/vector_icons.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/views/animation/ink_drop.h"
FindBarIcon::FindBarIcon(Browser* browser,
PageActionIconView::Delegate* delegate)
: PageActionIconView(nullptr, 0, delegate), browser_(browser) {
DCHECK(browser_);
}
FindBarIcon::~FindBarIcon() {}
void FindBarIcon::SetActive(bool activate, bool should_animate) {
if (activate ==
(GetInkDrop()->GetTargetInkDropState() == views::InkDropState::ACTIVATED))
return;
if (activate) {
if (should_animate) {
AnimateInkDrop(views::InkDropState::ACTIVATED, nullptr);
} else {
GetInkDrop()->SnapToActivated();
}
} else {
AnimateInkDrop(views::InkDropState::HIDDEN, nullptr);
}
}
base::string16 FindBarIcon::GetTextForTooltipAndAccessibleName() const {
return l10n_util::GetStringUTF16(IDS_TOOLTIP_FIND);
}
void FindBarIcon::OnExecuting(ExecuteSource execute_source) {}
views::BubbleDialogDelegateView* FindBarIcon::GetBubble() const {
return nullptr;
}
const gfx::VectorIcon& FindBarIcon::GetVectorIcon() const {
return omnibox::kFindInPageIcon;
}
bool FindBarIcon::Update() {
// |browser_->window()| may return nullptr because Update() is called while
// BrowserWindow is being constructed.
if (!browser_->window() || !browser_->HasFindBarController())
return false;
const bool was_visible = visible();
SetVisible(browser_->GetFindBarController()->find_bar()->IsFindBarVisible());
const bool visibility_changed = was_visible != visible();
SetActive(visible(), visibility_changed);
return visibility_changed;
}