location_bar_decoration_view.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/ui/views/location_bar/location_bar_decoration_view.h"
6
7#include "ui/events/event.h"
8
9LocationBarDecorationView::LocationBarDecorationView()
10    : could_handle_click_(true) {
11  SetAccessibilityFocusable(true);
12}
13
14LocationBarDecorationView::~LocationBarDecorationView() {}
15
16bool LocationBarDecorationView::OnMousePressed(const ui::MouseEvent& event) {
17  if (event.IsOnlyLeftMouseButton() && HitTestPoint(event.location())) {
18    // Do nothing until mouse is released.
19    could_handle_click_ = CanHandleClick();
20    return true;
21  }
22
23  return false;
24}
25
26void LocationBarDecorationView::OnMouseReleased(const ui::MouseEvent& event) {
27  if (event.IsOnlyLeftMouseButton() && HitTestPoint(event.location()) &&
28      could_handle_click_ && CanHandleClick()) {
29    OnClick();
30  }
31}
32
33bool LocationBarDecorationView::OnKeyPressed(const ui::KeyEvent& event) {
34  if (event.key_code() == ui::VKEY_SPACE ||
35      event.key_code() == ui::VKEY_RETURN) {
36    OnClick();
37    return true;
38  }
39
40  return false;
41}
42
43void LocationBarDecorationView::OnGestureEvent(ui::GestureEvent* event) {
44  if (event->type() == ui::ET_GESTURE_TAP) {
45    OnClick();
46    event->SetHandled();
47  }
48}
49
50bool LocationBarDecorationView::CanHandleClick() const {
51  return true;
52}
53