| Index: chrome/browser/ui/views/autofill/tooltip_icon.cc
|
| diff --git a/chrome/browser/ui/views/autofill/tooltip_icon.cc b/chrome/browser/ui/views/autofill/tooltip_icon.cc
|
| deleted file mode 100644
|
| index b2a2678f3c87c36595729ac2a62d71e66daaddaa..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/views/autofill/tooltip_icon.cc
|
| +++ /dev/null
|
| @@ -1,148 +0,0 @@
|
| -// Copyright 2013 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/autofill/tooltip_icon.h"
|
| -
|
| -#include "base/macros.h"
|
| -#include "base/timer/timer.h"
|
| -#include "chrome/browser/ui/views/autofill/info_bubble.h"
|
| -#include "ui/accessibility/ax_node_data.h"
|
| -#include "ui/gfx/paint_vector_icon.h"
|
| -#include "ui/gfx/vector_icons_public.h"
|
| -#include "ui/views/bubble/bubble_frame_view.h"
|
| -#include "ui/views/mouse_watcher_view_host.h"
|
| -#include "ui/views/painter.h"
|
| -
|
| -namespace autofill {
|
| -
|
| -namespace {
|
| -
|
| -gfx::Insets GetPreferredInsets(const views::View* view) {
|
| - gfx::Size pref_size = view->GetPreferredSize();
|
| - gfx::Rect local_bounds = view->GetLocalBounds();
|
| - gfx::Point origin = local_bounds.CenterPoint();
|
| - origin.Offset(-pref_size.width() / 2, -pref_size.height() / 2);
|
| - return gfx::Insets(origin.y(),
|
| - origin.x(),
|
| - local_bounds.bottom() - (origin.y() + pref_size.height()),
|
| - local_bounds.right() - (origin.x() + pref_size.width()));
|
| -}
|
| -
|
| -// An info bubble with some extra positioning magic for tooltip icons.
|
| -class TooltipBubble : public InfoBubble {
|
| - public:
|
| - TooltipBubble(views::View* anchor, const base::string16& message)
|
| - : InfoBubble(anchor, message) {}
|
| - ~TooltipBubble() override {}
|
| -
|
| - protected:
|
| - // InfoBubble:
|
| - gfx::Rect GetAnchorRect() const override {
|
| - gfx::Rect bounds = views::BubbleDialogDelegateView::GetAnchorRect();
|
| - bounds.Inset(GetPreferredInsets(anchor()));
|
| - return bounds;
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(TooltipBubble);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -TooltipIcon::TooltipIcon(const base::string16& tooltip)
|
| - : tooltip_(tooltip),
|
| - mouse_inside_(false),
|
| - bubble_(NULL),
|
| - bubble_arrow_(views::BubbleBorder::TOP_RIGHT),
|
| - observer_(this) {
|
| - SetDrawAsHovered(false);
|
| -}
|
| -
|
| -TooltipIcon::~TooltipIcon() {
|
| - HideBubble();
|
| -}
|
| -
|
| -// static
|
| -const char TooltipIcon::kViewClassName[] = "autofill/TooltipIcon";
|
| -
|
| -const char* TooltipIcon::GetClassName() const {
|
| - return TooltipIcon::kViewClassName;
|
| -}
|
| -
|
| -void TooltipIcon::OnMouseEntered(const ui::MouseEvent& event) {
|
| - mouse_inside_ = true;
|
| - show_timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(150), this,
|
| - &TooltipIcon::ShowBubble);
|
| -}
|
| -
|
| -void TooltipIcon::OnMouseExited(const ui::MouseEvent& event) {
|
| - show_timer_.Stop();
|
| -}
|
| -
|
| -void TooltipIcon::OnGestureEvent(ui::GestureEvent* event) {
|
| - if (event->type() == ui::ET_GESTURE_TAP) {
|
| - ShowBubble();
|
| - event->SetHandled();
|
| - }
|
| -}
|
| -
|
| -void TooltipIcon::GetAccessibleNodeData(ui::AXNodeData* node_data) {
|
| - node_data->SetName(tooltip_);
|
| -}
|
| -
|
| -void TooltipIcon::MouseMovedOutOfHost() {
|
| - if (IsMouseHovered()) {
|
| - mouse_watcher_->Start();
|
| - return;
|
| - }
|
| -
|
| - mouse_inside_ = false;
|
| - HideBubble();
|
| -}
|
| -
|
| -void TooltipIcon::SetDrawAsHovered(bool hovered) {
|
| - SetImage(gfx::CreateVectorIcon(gfx::VectorIconId::HELP_OUTLINE, 18,
|
| - hovered
|
| - ? SkColorSetARGB(0xBD, 0, 0, 0)
|
| - : SkColorSetARGB(0xBD, 0x44, 0x44, 0x44)));
|
| -}
|
| -
|
| -void TooltipIcon::ShowBubble() {
|
| - if (bubble_)
|
| - return;
|
| -
|
| - SetDrawAsHovered(true);
|
| -
|
| - bubble_ = new TooltipBubble(this, tooltip_);
|
| - bubble_->set_arrow(bubble_arrow_);
|
| - // When shown due to a gesture event, close on deactivate (i.e. don't use
|
| - // "focusless").
|
| - bubble_->set_can_activate(!mouse_inside_);
|
| -
|
| - bubble_->Show();
|
| - observer_.Add(bubble_->GetWidget());
|
| -
|
| - if (mouse_inside_) {
|
| - views::View* frame = bubble_->GetWidget()->non_client_view()->frame_view();
|
| - std::unique_ptr<views::MouseWatcherHost> host(
|
| - new views::MouseWatcherViewHost(frame, gfx::Insets()));
|
| - mouse_watcher_.reset(new views::MouseWatcher(host.release(), this));
|
| - mouse_watcher_->Start();
|
| - }
|
| -}
|
| -
|
| -void TooltipIcon::HideBubble() {
|
| - if (bubble_)
|
| - bubble_->Hide();
|
| -}
|
| -
|
| -void TooltipIcon::OnWidgetDestroyed(views::Widget* widget) {
|
| - observer_.Remove(widget);
|
| -
|
| - SetDrawAsHovered(false);
|
| - mouse_watcher_.reset();
|
| - bubble_ = NULL;
|
| -}
|
| -
|
| -} // namespace autofill
|
|
|