Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(284)

Side by Side Diff: ui/events/event_rewriter_unittest.cc

Issue 237363005: Convert chromeos::EventRewriter to a ui::EventRewriter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/events/event_rewriter.h" 5 #include "ui/events/event_rewriter.h"
6 6
7 #include <list> 7 #include <list>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 // same event type; it is used to test simple rewriting, and rewriter addition, 76 // same event type; it is used to test simple rewriting, and rewriter addition,
77 // removal, and sequencing. Consequently EVENT_REWRITE_DISPATCH_ANOTHER is not 77 // removal, and sequencing. Consequently EVENT_REWRITE_DISPATCH_ANOTHER is not
78 // supported here (calls to NextDispatchEvent() would continue indefinitely). 78 // supported here (calls to NextDispatchEvent() would continue indefinitely).
79 class TestConstantEventRewriter : public EventRewriter { 79 class TestConstantEventRewriter : public EventRewriter {
80 public: 80 public:
81 TestConstantEventRewriter(EventRewriteStatus status, EventType type) 81 TestConstantEventRewriter(EventRewriteStatus status, EventType type)
82 : status_(status), type_(type) { 82 : status_(status), type_(type) {
83 CHECK_NE(EVENT_REWRITE_DISPATCH_ANOTHER, status); 83 CHECK_NE(EVENT_REWRITE_DISPATCH_ANOTHER, status);
84 } 84 }
85 85
86 virtual EventRewriteStatus RewriteEvent(const Event& event, 86 virtual EventRewriteStatus RewriteEvent(Event* event,
87 scoped_ptr<Event>* rewritten_event) 87 scoped_ptr<Event>* rewritten_event)
88 OVERRIDE { 88 OVERRIDE {
89 if (status_ == EVENT_REWRITE_REWRITTEN) 89 if (status_ == EVENT_REWRITE_REWRITTEN)
90 rewritten_event->reset(new TestEvent(type_)); 90 rewritten_event->reset(new TestEvent(type_));
91 return status_; 91 return status_;
92 } 92 }
93 virtual EventRewriteStatus NextDispatchEvent(const Event& last_event, 93 virtual EventRewriteStatus NextDispatchEvent(const Event& last_event,
94 scoped_ptr<Event>* new_event) 94 scoped_ptr<Event>* new_event)
95 OVERRIDE { 95 OVERRIDE {
96 NOTREACHED(); 96 NOTREACHED();
97 return status_; 97 return status_;
98 } 98 }
99 99
100 private: 100 private:
101 EventRewriteStatus status_; 101 EventRewriteStatus status_;
102 EventType type_; 102 EventType type_;
103 }; 103 };
104 104
105 // This EventRewriter runs a simple state machine; it is used to test 105 // This EventRewriter runs a simple state machine; it is used to test
106 // EVENT_REWRITE_DISPATCH_ANOTHER. 106 // EVENT_REWRITE_DISPATCH_ANOTHER.
107 class TestStateMachineEventRewriter : public EventRewriter { 107 class TestStateMachineEventRewriter : public EventRewriter {
108 public: 108 public:
109 TestStateMachineEventRewriter() : last_rewritten_event_(0), state_(0) {} 109 TestStateMachineEventRewriter() : last_rewritten_event_(0), state_(0) {}
110 void AddRule(int from_state, EventType from_type, 110 void AddRule(int from_state, EventType from_type,
111 int to_state, EventType to_type, EventRewriteStatus to_status) { 111 int to_state, EventType to_type, EventRewriteStatus to_status) {
112 RewriteResult r = {to_state, to_type, to_status}; 112 RewriteResult r = {to_state, to_type, to_status};
113 rules_.insert(std::pair<RewriteCase, RewriteResult>( 113 rules_.insert(std::pair<RewriteCase, RewriteResult>(
114 RewriteCase(from_state, from_type), r)); 114 RewriteCase(from_state, from_type), r));
115 } 115 }
116 virtual EventRewriteStatus RewriteEvent(const Event& event, 116 virtual EventRewriteStatus RewriteEvent(Event* event,
117 scoped_ptr<Event>* rewritten_event) 117 scoped_ptr<Event>* rewritten_event)
118 OVERRIDE {
119 return Rewrite(*event, rewritten_event);
120 }
121 virtual EventRewriteStatus NextDispatchEvent(const Event& last_event,
122 scoped_ptr<Event>* new_event)
118 OVERRIDE { 123 OVERRIDE {
124 EXPECT_TRUE(last_rewritten_event_);
125 const TestEvent* arg_last = static_cast<const TestEvent*>(&last_event);
126 EXPECT_EQ(last_rewritten_event_->unique_id(), arg_last->unique_id());
127 const TestEvent* arg_new = static_cast<const TestEvent*>(new_event->get());
128 EXPECT_FALSE(arg_new && arg_last->unique_id() == arg_new->unique_id());
129 return Rewrite(last_event, new_event);
130 }
131
132 private:
133 EventRewriteStatus Rewrite(const Event& event,
134 scoped_ptr<Event>* rewritten_event) {
119 RewriteRules::iterator find = 135 RewriteRules::iterator find =
120 rules_.find(RewriteCase(state_, event.type())); 136 rules_.find(RewriteCase(state_, event.type()));
121 if (find == rules_.end()) 137 if (find == rules_.end())
122 return EVENT_REWRITE_CONTINUE; 138 return EVENT_REWRITE_CONTINUE;
123 if ((find->second.status == EVENT_REWRITE_REWRITTEN) || 139 if ((find->second.status == EVENT_REWRITE_REWRITTEN) ||
124 (find->second.status == EVENT_REWRITE_DISPATCH_ANOTHER)) { 140 (find->second.status == EVENT_REWRITE_DISPATCH_ANOTHER)) {
125 last_rewritten_event_ = new TestEvent(find->second.type); 141 last_rewritten_event_ = new TestEvent(find->second.type);
126 rewritten_event->reset(last_rewritten_event_); 142 rewritten_event->reset(last_rewritten_event_);
127 } else { 143 } else {
128 last_rewritten_event_ = 0; 144 last_rewritten_event_ = 0;
129 } 145 }
130 state_ = find->second.state; 146 state_ = find->second.state;
131 return find->second.status; 147 return find->second.status;
132 } 148 }
133 virtual EventRewriteStatus NextDispatchEvent(const Event& last_event,
134 scoped_ptr<Event>* new_event)
135 OVERRIDE {
136 EXPECT_TRUE(last_rewritten_event_);
137 const TestEvent* arg_last = static_cast<const TestEvent*>(&last_event);
138 EXPECT_EQ(last_rewritten_event_->unique_id(), arg_last->unique_id());
139 const TestEvent* arg_new = static_cast<const TestEvent*>(new_event->get());
140 EXPECT_FALSE(arg_new && arg_last->unique_id() == arg_new->unique_id());
141 return RewriteEvent(last_event, new_event);
142 }
143
144 private:
145 typedef std::pair<int, EventType> RewriteCase; 149 typedef std::pair<int, EventType> RewriteCase;
146 struct RewriteResult { 150 struct RewriteResult {
147 int state; 151 int state;
148 EventType type; 152 EventType type;
149 EventRewriteStatus status; 153 EventRewriteStatus status;
150 }; 154 };
151 typedef std::map<RewriteCase, RewriteResult> RewriteRules; 155 typedef std::map<RewriteCase, RewriteResult> RewriteRules;
152 RewriteRules rules_; 156 RewriteRules rules_;
153 TestEvent* last_rewritten_event_; 157 TestEvent* last_rewritten_event_;
154 int state_; 158 int state_;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 s.RemoveEventRewriter(&r3); 226 s.RemoveEventRewriter(&r3);
223 227
224 // Continue with the state-based rewriting. 228 // Continue with the state-based rewriting.
225 p.AddExpectedEvent(ET_MOUSE_RELEASED); 229 p.AddExpectedEvent(ET_MOUSE_RELEASED);
226 p.AddExpectedEvent(ET_KEY_RELEASED); 230 p.AddExpectedEvent(ET_KEY_RELEASED);
227 s.Send(ET_MOUSE_RELEASED); 231 s.Send(ET_MOUSE_RELEASED);
228 p.CheckAllReceived(); 232 p.CheckAllReceived();
229 } 233 }
230 234
231 } // namespace ui 235 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698