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

Side by Side Diff: content/renderer/gpu/input_event_filter_unittest.cc

Issue 16294003: Update content/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <new> 5 #include <new>
6 #include <utility> 6 #include <utility>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 } // namespace 129 } // namespace
130 130
131 class InputEventFilterTest : public testing::Test { 131 class InputEventFilterTest : public testing::Test {
132 public: 132 public:
133 virtual void SetUp() OVERRIDE { 133 virtual void SetUp() OVERRIDE {
134 filter_ = new InputEventFilter( 134 filter_ = new InputEventFilter(
135 &message_recorder_, 135 &message_recorder_,
136 message_loop_.message_loop_proxy(), 136 message_loop_.message_loop_proxy(),
137 base::Bind(&InputEventRecorder::HandleInputEvent, 137 base::Bind(&InputEventRecorder::HandleInputEvent,
138 base::Unretained(&event_recorder_))); 138 base::Unretained(&event_recorder_)));
139 event_recorder_.set_filter(filter_); 139 event_recorder_.set_filter(filter_.get());
140 140
141 filter_->OnFilterAdded(&ipc_sink_); 141 filter_->OnFilterAdded(&ipc_sink_);
142 } 142 }
143 143
144 144
145 protected: 145 protected:
146 base::MessageLoop message_loop_; 146 base::MessageLoop message_loop_;
147 147
148 // Used to record IPCs sent by the filter to the RenderWidgetHost. 148 // Used to record IPCs sent by the filter to the RenderWidgetHost.
149 IPC::TestSink ipc_sink_; 149 IPC::TestSink ipc_sink_;
150 150
151 // Used to record IPCs forwarded by the filter to the main thread. 151 // Used to record IPCs forwarded by the filter to the main thread.
152 IPCMessageRecorder message_recorder_; 152 IPCMessageRecorder message_recorder_;
153 153
154 // Used to record WebInputEvents delivered to the handler. 154 // Used to record WebInputEvents delivered to the handler.
155 InputEventRecorder event_recorder_; 155 InputEventRecorder event_recorder_;
156 156
157 scoped_refptr<InputEventFilter> filter_; 157 scoped_refptr<InputEventFilter> filter_;
158 }; 158 };
159 159
160 TEST_F(InputEventFilterTest, Basic) { 160 TEST_F(InputEventFilterTest, Basic) {
161 WebMouseEvent kEvents[3]; 161 WebMouseEvent kEvents[3];
162 InitMouseEvent(&kEvents[0], WebInputEvent::MouseDown, 10, 10); 162 InitMouseEvent(&kEvents[0], WebInputEvent::MouseDown, 10, 10);
163 InitMouseEvent(&kEvents[1], WebInputEvent::MouseMove, 20, 20); 163 InitMouseEvent(&kEvents[1], WebInputEvent::MouseMove, 20, 20);
164 InitMouseEvent(&kEvents[2], WebInputEvent::MouseUp, 30, 30); 164 InitMouseEvent(&kEvents[2], WebInputEvent::MouseUp, 30, 30);
165 165
166 AddEventsToFilter(filter_, kEvents, arraysize(kEvents)); 166 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
167 EXPECT_EQ(0U, ipc_sink_.message_count()); 167 EXPECT_EQ(0U, ipc_sink_.message_count());
168 EXPECT_EQ(0U, event_recorder_.record_count()); 168 EXPECT_EQ(0U, event_recorder_.record_count());
169 EXPECT_EQ(0U, message_recorder_.message_count()); 169 EXPECT_EQ(0U, message_recorder_.message_count());
170 170
171 filter_->AddRoute(kTestRoutingID); 171 filter_->AddRoute(kTestRoutingID);
172 172
173 AddEventsToFilter(filter_, kEvents, arraysize(kEvents)); 173 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
174 ASSERT_EQ(arraysize(kEvents), ipc_sink_.message_count()); 174 ASSERT_EQ(arraysize(kEvents), ipc_sink_.message_count());
175 ASSERT_EQ(arraysize(kEvents), event_recorder_.record_count()); 175 ASSERT_EQ(arraysize(kEvents), event_recorder_.record_count());
176 EXPECT_EQ(0U, message_recorder_.message_count()); 176 EXPECT_EQ(0U, message_recorder_.message_count());
177 177
178 for (size_t i = 0; i < arraysize(kEvents); ++i) { 178 for (size_t i = 0; i < arraysize(kEvents); ++i) {
179 const IPC::Message* message = ipc_sink_.GetMessageAt(i); 179 const IPC::Message* message = ipc_sink_.GetMessageAt(i);
180 EXPECT_EQ(kTestRoutingID, message->routing_id()); 180 EXPECT_EQ(kTestRoutingID, message->routing_id());
181 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); 181 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type());
182 182
183 WebInputEvent::Type event_type = WebInputEvent::Undefined; 183 WebInputEvent::Type event_type = WebInputEvent::Undefined;
184 InputEventAckState ack_result = INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 184 InputEventAckState ack_result = INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
185 EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message, 185 EXPECT_TRUE(InputHostMsg_HandleInputEvent_ACK::Read(message,
186 &event_type, 186 &event_type,
187 &ack_result)); 187 &ack_result));
188 EXPECT_EQ(kEvents[i].type, event_type); 188 EXPECT_EQ(kEvents[i].type, event_type);
189 EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); 189 EXPECT_EQ(ack_result, INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
190 190
191 const WebInputEvent* event = event_recorder_.record_at(i); 191 const WebInputEvent* event = event_recorder_.record_at(i);
192 ASSERT_TRUE(event); 192 ASSERT_TRUE(event);
193 193
194 EXPECT_EQ(kEvents[i].size, event->size); 194 EXPECT_EQ(kEvents[i].size, event->size);
195 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 195 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0);
196 } 196 }
197 197
198 event_recorder_.set_send_to_widget(true); 198 event_recorder_.set_send_to_widget(true);
199 199
200 AddEventsToFilter(filter_, kEvents, arraysize(kEvents)); 200 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
201 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); 201 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count());
202 EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count()); 202 EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count());
203 EXPECT_EQ(arraysize(kEvents), message_recorder_.message_count()); 203 EXPECT_EQ(arraysize(kEvents), message_recorder_.message_count());
204 204
205 for (size_t i = 0; i < arraysize(kEvents); ++i) { 205 for (size_t i = 0; i < arraysize(kEvents); ++i) {
206 const IPC::Message& message = message_recorder_.message_at(i); 206 const IPC::Message& message = message_recorder_.message_at(i);
207 207
208 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); 208 ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type());
209 const WebInputEvent* event = InputEventFilter::CrackMessage(message); 209 const WebInputEvent* event = InputEventFilter::CrackMessage(message);
210 210
211 EXPECT_EQ(kEvents[i].size, event->size); 211 EXPECT_EQ(kEvents[i].size, event->size);
212 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); 212 EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0);
213 } 213 }
214 214
215 // Now reset everything, and test that DidHandleInputEvent is called. 215 // Now reset everything, and test that DidHandleInputEvent is called.
216 216
217 ipc_sink_.ClearMessages(); 217 ipc_sink_.ClearMessages();
218 event_recorder_.Clear(); 218 event_recorder_.Clear();
219 message_recorder_.Clear(); 219 message_recorder_.Clear();
220 220
221 event_recorder_.set_handle_events(true); 221 event_recorder_.set_handle_events(true);
222 222
223 AddEventsToFilter(filter_, kEvents, arraysize(kEvents)); 223 AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents));
224 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); 224 EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count());
225 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); 225 EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count());
226 EXPECT_EQ(0U, message_recorder_.message_count()); 226 EXPECT_EQ(0U, message_recorder_.message_count());
227 227
228 for (size_t i = 0; i < arraysize(kEvents); ++i) { 228 for (size_t i = 0; i < arraysize(kEvents); ++i) {
229 const IPC::Message* message = ipc_sink_.GetMessageAt(i); 229 const IPC::Message* message = ipc_sink_.GetMessageAt(i);
230 EXPECT_EQ(kTestRoutingID, message->routing_id()); 230 EXPECT_EQ(kTestRoutingID, message->routing_id());
231 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type()); 231 EXPECT_EQ(InputHostMsg_HandleInputEvent_ACK::ID, message->type());
232 232
233 WebInputEvent::Type event_type = WebInputEvent::Undefined; 233 WebInputEvent::Type event_type = WebInputEvent::Undefined;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 messages.push_back(InputMsg_SelectAll(kTestRoutingID)); 279 messages.push_back(InputMsg_SelectAll(kTestRoutingID));
280 messages.push_back(InputMsg_Unselect(kTestRoutingID)); 280 messages.push_back(InputMsg_Unselect(kTestRoutingID));
281 messages.push_back(InputMsg_SelectRange(kTestRoutingID, 281 messages.push_back(InputMsg_SelectRange(kTestRoutingID,
282 gfx::Point(), gfx::Point())); 282 gfx::Point(), gfx::Point()));
283 messages.push_back(InputMsg_MoveCaret(kTestRoutingID, gfx::Point())); 283 messages.push_back(InputMsg_MoveCaret(kTestRoutingID, gfx::Point()));
284 284
285 messages.push_back(InputMsg_HandleInputEvent(kTestRoutingID, 285 messages.push_back(InputMsg_HandleInputEvent(kTestRoutingID,
286 &mouse_up, 286 &mouse_up,
287 ui::LatencyInfo(), 287 ui::LatencyInfo(),
288 false)); 288 false));
289 AddMessagesToFilter(filter_, messages); 289 AddMessagesToFilter(filter_.get(), messages);
290 290
291 // We should have sent all messages back to the main thread and preserved 291 // We should have sent all messages back to the main thread and preserved
292 // their relative order. 292 // their relative order.
293 ASSERT_EQ(message_recorder_.message_count(), messages.size()); 293 ASSERT_EQ(message_recorder_.message_count(), messages.size());
294 for (size_t i = 0; i < messages.size(); ++i) { 294 for (size_t i = 0; i < messages.size(); ++i) {
295 EXPECT_EQ(message_recorder_.message_at(i).type(), messages[i].type()) << i; 295 EXPECT_EQ(message_recorder_.message_at(i).type(), messages[i].type()) << i;
296 } 296 }
297 } 297 }
298 298
299 } // namespace content 299 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/gpu/input_event_filter.cc ('k') | content/renderer/gpu/input_handler_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698