blob: cadcfa90b7f454e717dd0534668520fe2a67bd11 [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// 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#ifndef UI_EVENTS_TEST_TEST_EVENT_TARGET_H_
6#define UI_EVENTS_TEST_TEST_EVENT_TARGET_H_
7
8#include <set>
9#include <string>
10#include <vector>
11
12#include "base/memory/scoped_vector.h"
13#include "ui/events/event_target.h"
14
15typedef std::vector<std::string> HandlerSequenceRecorder;
16
17namespace gfx {
18class Point;
19}
20
21namespace ui {
22namespace test {
23
24class TestEventTarget : public EventTarget {
25 public:
26 TestEventTarget();
27 virtual ~TestEventTarget();
28
29 void AddChild(scoped_ptr<TestEventTarget> child);
30 scoped_ptr<TestEventTarget> RemoveChild(TestEventTarget* child);
31
32 TestEventTarget* parent() { return parent_; }
33
34 void set_mark_events_as_handled(bool handle) {
35 mark_events_as_handled_ = handle;
36 }
37
38 TestEventTarget* child_at(int index) { return children_[index]; }
39 size_t child_count() const { return children_.size(); }
40
41 void SetEventTargeter(scoped_ptr<EventTargeter> targeter);
42
43 bool DidReceiveEvent(ui::EventType type) const;
44 void ResetReceivedEvents();
45
46 void set_recorder(HandlerSequenceRecorder* recorder) {
47 recorder_ = recorder;
48 }
49 void set_target_name(const std::string& target_name) {
50 target_name_ = target_name;
51 }
52
53 protected:
54 bool Contains(TestEventTarget* target) const;
55
56 // EventTarget:
James Robinsone2ac7e82014-10-15 13:21:59 -070057 virtual bool CanAcceptEvent(const ui::Event& event) override;
58 virtual EventTarget* GetParentTarget() override;
59 virtual scoped_ptr<EventTargetIterator> GetChildIterator() const override;
60 virtual EventTargeter* GetEventTargeter() override;
James Robinson646469d2014-10-03 15:33:28 -070061
62 // EventHandler:
James Robinsone2ac7e82014-10-15 13:21:59 -070063 virtual void OnEvent(Event* event) override;
James Robinson646469d2014-10-03 15:33:28 -070064
65 private:
66 void set_parent(TestEventTarget* parent) { parent_ = parent; }
67
68 TestEventTarget* parent_;
69 ScopedVector<TestEventTarget> children_;
70 scoped_ptr<EventTargeter> targeter_;
71 bool mark_events_as_handled_;
72
73 std::set<ui::EventType> received_;
74
75 HandlerSequenceRecorder* recorder_;
76 std::string target_name_;
77
78 DISALLOW_COPY_AND_ASSIGN(TestEventTarget);
79};
80
81} // namespace test
82} // namespace ui
83
84#endif // UI_EVENTS_TEST_TEST_EVENT_TARGET_H_