1// Copyright (c) 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#ifndef UI_AURA_WINDOW_TARGETER_H_
6#define UI_AURA_WINDOW_TARGETER_H_
7
8#include "ui/aura/aura_export.h"
9#include "ui/events/event_targeter.h"
10
11namespace aura {
12
13class Window;
14
15class AURA_EXPORT WindowTargeter : public ui::EventTargeter {
16 public:
17  WindowTargeter();
18  virtual ~WindowTargeter();
19
20 protected:
21  // ui::EventTargeter:
22  virtual ui::EventTarget* FindTargetForEvent(ui::EventTarget* root,
23                                              ui::Event* event) OVERRIDE;
24  virtual ui::EventTarget* FindTargetForLocatedEvent(
25      ui::EventTarget* root,
26      ui::LocatedEvent* event) OVERRIDE;
27  virtual bool SubtreeCanAcceptEvent(
28      ui::EventTarget* target,
29      const ui::LocatedEvent& event) const OVERRIDE;
30  virtual bool EventLocationInsideBounds(
31      ui::EventTarget* target,
32      const ui::LocatedEvent& event) const OVERRIDE;
33
34 private:
35  Window* FindTargetForKeyEvent(Window* root_window,
36                                const ui::KeyEvent& event);
37  Window* FindTargetInRootWindow(Window* root_window,
38                                 const ui::LocatedEvent& event);
39
40  DISALLOW_COPY_AND_ASSIGN(WindowTargeter);
41};
42
43}  // namespace aura
44
45#endif  // UI_AURA_WINDOW_TARGETER_H_
46