GoogleURLTrackerInfoBarDelegate: Initialize uninitialized member in constructor.
[chromium-blink-merge.git] / ui / views / view_targeter.cc
blob31babfb88c0a4e51b140d6359b1331d0f4f93983
1 // Copyright 2014 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.
5 #include "ui/views/view_targeter.h"
7 #include "ui/events/event_target.h"
8 #include "ui/views/focus/focus_manager.h"
9 #include "ui/views/view.h"
11 namespace views {
13 ViewTargeter::ViewTargeter() {}
14 ViewTargeter::~ViewTargeter() {}
16 gfx::RectF ViewTargeter::BoundsForEvent(const ui::LocatedEvent& event) const {
17 gfx::RectF event_bounds(event.location_f(), gfx::SizeF(1, 1));
18 if (event.IsGestureEvent()) {
19 const ui::GestureEvent& gesture =
20 static_cast<const ui::GestureEvent&>(event);
21 event_bounds = gesture.details().bounding_box_f();
24 return event_bounds;
27 ui::EventTarget* ViewTargeter::FindTargetForEvent(ui::EventTarget* root,
28 ui::Event* event) {
29 View* view = static_cast<View*>(root);
30 if (event->IsKeyEvent())
31 return FindTargetForKeyEvent(view, *static_cast<ui::KeyEvent*>(event));
32 else if (event->IsScrollEvent())
33 return EventTargeter::FindTargetForEvent(root, event);
35 NOTREACHED() << "ViewTargeter does not yet support this event type.";
36 return NULL;
39 ui::EventTarget* ViewTargeter::FindNextBestTarget(
40 ui::EventTarget* previous_target,
41 ui::Event* event) {
42 return previous_target->GetParentTarget();
45 bool ViewTargeter::SubtreeCanAcceptEvent(
46 ui::EventTarget* target,
47 const ui::LocatedEvent& event) const {
48 views::View* view = static_cast<views::View*>(target);
49 if (!view->visible())
50 return false;
52 if (!view->CanProcessEventsWithinSubtree())
53 return false;
55 return true;
58 bool ViewTargeter::EventLocationInsideBounds(
59 ui::EventTarget* target,
60 const ui::LocatedEvent& event) const {
61 views::View* view = static_cast<views::View*>(target);
62 gfx::Rect rect(event.location(), gfx::Size(1, 1));
63 gfx::RectF rect_in_view_coords_f(rect);
64 if (view->parent())
65 View::ConvertRectToTarget(view->parent(), view, &rect_in_view_coords_f);
66 gfx::Rect rect_in_view_coords = gfx::ToEnclosingRect(rect_in_view_coords_f);
68 // TODO(tdanderson): Don't call into HitTestRect() directly here.
69 // See crbug.com/370579.
70 return view->HitTestRect(rect_in_view_coords);
73 View* ViewTargeter::FindTargetForKeyEvent(View* view, const ui::KeyEvent& key) {
74 if (view->GetFocusManager())
75 return view->GetFocusManager()->GetFocusedView();
76 return NULL;
79 } // namespace aura