location_bar_decoration_view.cc revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/ui/views/location_bar/location_bar_decoration_view.h"
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/event.h"
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochLocationBarDecorationView::LocationBarDecorationView()
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    : could_handle_click_(true) {
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  set_accessibility_focusable(true);
13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  LocationBarView::InitTouchableLocationBarChildView(this);
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochLocationBarDecorationView::~LocationBarDecorationView() {}
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool LocationBarDecorationView::OnMousePressed(const ui::MouseEvent& event) {
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  if (event.IsOnlyLeftMouseButton() && HitTestPoint(event.location())) {
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    // Do nothing until mouse is released.
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    could_handle_click_ = CanHandleClick();
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    return true;
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return false;
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid LocationBarDecorationView::OnMouseReleased(const ui::MouseEvent& event) {
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  if (event.IsOnlyLeftMouseButton() && HitTestPoint(event.location()) &&
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      could_handle_click_ && CanHandleClick()) {
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    OnClick();
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool LocationBarDecorationView::OnKeyPressed(const ui::KeyEvent& event) {
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  if (event.key_code() == ui::VKEY_SPACE ||
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      event.key_code() == ui::VKEY_RETURN) {
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    OnClick();
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    return true;
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return false;
437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid LocationBarDecorationView::OnGestureEvent(ui::GestureEvent* event) {
467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  if (event->type() == ui::ET_GESTURE_TAP) {
477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    OnClick();
487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    event->SetHandled();
497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool LocationBarDecorationView::CanHandleClick() const {
537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return true;
547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
55