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

Side by Side Diff: content/browser/renderer_host/input/touch_event_queue_unittest.cc

Issue 132083006: Delegate touch handler registration logic to the TouchEventQueue (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup Created 6 years, 11 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "content/browser/renderer_host/input/timeout_monitor.h" 9 #include "content/browser/renderer_host/input/timeout_monitor.h"
10 #include "content/browser/renderer_host/input/touch_event_queue.h" 10 #include "content/browser/renderer_host/input/touch_event_queue.h"
(...skipping 17 matching lines...) Expand all
28 TouchEventQueueTest() 28 TouchEventQueueTest()
29 : sent_event_count_(0), 29 : sent_event_count_(0),
30 acked_event_count_(0), 30 acked_event_count_(0),
31 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {} 31 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {}
32 32
33 virtual ~TouchEventQueueTest() {} 33 virtual ~TouchEventQueueTest() {}
34 34
35 // testing::Test 35 // testing::Test
36 virtual void SetUp() OVERRIDE { 36 virtual void SetUp() OVERRIDE {
37 queue_.reset(new TouchEventQueue(this)); 37 queue_.reset(new TouchEventQueue(this));
38 queue_->OnHasTouchEventHandlers(true);
38 } 39 }
39 40
40 virtual void TearDown() OVERRIDE { 41 virtual void TearDown() OVERRIDE {
41 queue_.reset(); 42 queue_.reset();
42 } 43 }
43 44
44 // TouchEventQueueClient 45 // TouchEventQueueClient
45 virtual void SendTouchEventImmediately( 46 virtual void SendTouchEventImmediately(
46 const TouchEventWithLatencyInfo& event) OVERRIDE { 47 const TouchEventWithLatencyInfo& event) OVERRIDE {
47 ++sent_event_count_; 48 ++sent_event_count_;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 size_t GetAndResetSentEventCount() { 139 size_t GetAndResetSentEventCount() {
139 size_t count = sent_event_count_; 140 size_t count = sent_event_count_;
140 sent_event_count_ = 0; 141 sent_event_count_ = 0;
141 return count; 142 return count;
142 } 143 }
143 144
144 bool IsPendingAckTouchStart() const { 145 bool IsPendingAckTouchStart() const {
145 return queue_->IsPendingAckTouchStart(); 146 return queue_->IsPendingAckTouchStart();
146 } 147 }
147 148
148 void Flush() { 149 void OnHasTouchEventHandlers(bool has_handlers) {
149 queue_->FlushQueue(); 150 queue_->OnHasTouchEventHandlers(has_handlers);
150 }
151
152 void SetEnableTouchForwarding(bool enabled) {
153 queue_->no_touch_to_renderer_ = !enabled;
154 } 151 }
155 152
156 bool WillForwardTouchEvents() { 153 bool WillForwardTouchEvents() {
157 return !queue_->no_touch_to_renderer_ && !queue_->HasTimeoutEvent(); 154 return queue_->has_handlers_ &&
155 !queue_->scroll_in_progress_ &&
156 !queue_->HasTimeoutEvent();
158 } 157 }
159 158
160 bool IsTimeoutRunning() { 159 bool IsTimeoutRunning() {
161 return queue_->IsTimeoutRunningForTesting(); 160 return queue_->IsTimeoutRunningForTesting();
162 } 161 }
163 162
164 size_t queued_event_count() const { 163 size_t queued_event_count() const {
165 return queue_->size(); 164 return queue_->size();
166 } 165 }
167 166
168 const WebTouchEvent& latest_event() const { 167 const WebTouchEvent& latest_event() const {
169 return queue_->GetLatestEventForTesting().event; 168 return queue_->GetLatestEventForTesting().event;
170 } 169 }
171 170
172 const WebTouchEvent& acked_event() const { 171 const WebTouchEvent& acked_event() const {
173 return last_acked_event_; 172 return last_acked_event_;
174 } 173 }
175 174
176 const WebTouchEvent& sent_event() const { 175 const WebTouchEvent& sent_event() const {
177 return last_sent_event_; 176 return last_sent_event_;
178 } 177 }
179 178
180 InputEventAckState acked_event_state() const { 179 InputEventAckState acked_event_state() const {
181 return last_acked_event_state_; 180 return last_acked_event_state_;
182 } 181 }
183 182
184 void set_no_touch_to_renderer(bool no_touch) {
185 queue_->no_touch_to_renderer_ = no_touch;
186 }
187
188 bool no_touch_to_renderer() const {
189 return queue_->no_touch_to_renderer_;
190 }
191
192 private: 183 private:
193 void SendTouchEvent() { 184 void SendTouchEvent() {
194 SendTouchEvent(touch_event_); 185 SendTouchEvent(touch_event_);
195 touch_event_.ResetPoints(); 186 touch_event_.ResetPoints();
196 } 187 }
197 188
198 scoped_ptr<TouchEventQueue> queue_; 189 scoped_ptr<TouchEventQueue> queue_;
199 size_t sent_event_count_; 190 size_t sent_event_count_;
200 size_t acked_event_count_; 191 size_t acked_event_count_;
201 WebTouchEvent last_sent_event_; 192 WebTouchEvent last_sent_event_;
(...skipping 28 matching lines...) Expand all
230 // Receive an ACK for the second touch-event. 221 // Receive an ACK for the second touch-event.
231 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); 222 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
232 EXPECT_EQ(0U, queued_event_count()); 223 EXPECT_EQ(0U, queued_event_count());
233 EXPECT_EQ(0U, GetAndResetSentEventCount()); 224 EXPECT_EQ(0U, GetAndResetSentEventCount());
234 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 225 EXPECT_EQ(1U, GetAndResetAckedEventCount());
235 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 226 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
236 } 227 }
237 228
238 // Tests that the touch-queue is emptied if a page stops listening for touch 229 // Tests that the touch-queue is emptied if a page stops listening for touch
239 // events. 230 // events.
240 TEST_F(TouchEventQueueTest, Flush) { 231 TEST_F(TouchEventQueueTest, HasNoTouchHandlers) {
tdresser 2014/01/09 21:14:32 Test name isn't very descriptive. Perhaps QueueFlu
jdduke (slow) 2014/01/09 22:05:04 Done.
241 Flush(); 232 OnHasTouchEventHandlers(true);
242 EXPECT_EQ(0U, queued_event_count()); 233 EXPECT_EQ(0U, queued_event_count());
243 EXPECT_EQ(0U, GetAndResetSentEventCount()); 234 EXPECT_EQ(0U, GetAndResetSentEventCount());
244 235
245 // Send a touch-press event. 236 // Send a touch-press event.
246 PressTouchPoint(1, 1); 237 PressTouchPoint(1, 1);
247 EXPECT_EQ(1U, GetAndResetSentEventCount()); 238 EXPECT_EQ(1U, GetAndResetSentEventCount());
248 239
249 ReleaseTouchPoint(0); 240 ReleaseTouchPoint(0);
250 241
251 // Events will be queued until the first sent event is ack'ed. 242 // Events will be queued until the first sent event is ack'ed.
252 for (int i = 5; i < 15; ++i) { 243 for (int i = 5; i < 15; ++i) {
253 PressTouchPoint(1, 1); 244 PressTouchPoint(1, 1);
254 MoveTouchPoint(0, i, i); 245 MoveTouchPoint(0, i, i);
255 ReleaseTouchPoint(0); 246 ReleaseTouchPoint(0);
256 } 247 }
257 EXPECT_EQ(32U, queued_event_count()); 248 EXPECT_EQ(32U, queued_event_count());
258 EXPECT_EQ(0U, GetAndResetSentEventCount()); 249 EXPECT_EQ(0U, GetAndResetSentEventCount());
259 250
260 // Receive an ACK for the first touch-event. One of the queued touch-event 251 // Receive an ACK for the first touch-event. One of the queued touch-event
261 // should be forwarded. 252 // should be forwarded.
262 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); 253 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
263 EXPECT_EQ(31U, queued_event_count()); 254 EXPECT_EQ(31U, queued_event_count());
264 EXPECT_EQ(1U, GetAndResetSentEventCount()); 255 EXPECT_EQ(1U, GetAndResetSentEventCount());
265 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 256 EXPECT_EQ(1U, GetAndResetAckedEventCount());
266 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); 257 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type);
267 258
268 // Flush the queue. The touch-event queue should now be emptied, but none of 259 // Flush the queue. The touch-event queue should now be emptied, but none of
269 // the queued touch-events should be sent to the renderer. 260 // the queued touch-events should be sent to the renderer.
270 Flush(); 261 OnHasTouchEventHandlers(false);
271 EXPECT_EQ(0U, queued_event_count()); 262 EXPECT_EQ(0U, queued_event_count());
272 EXPECT_EQ(0U, GetAndResetSentEventCount()); 263 EXPECT_EQ(0U, GetAndResetSentEventCount());
273 EXPECT_EQ(31U, GetAndResetAckedEventCount()); 264 EXPECT_EQ(31U, GetAndResetAckedEventCount());
274 } 265 }
275 266
267 // Tests that if a touch sequence is interrupted by a no-touch-handler event,
268 // the rest of the sequence will be ignored until a new touch sequence.
tdresser 2014/01/09 21:14:32 until a new touch sequence. -> until the next touc
jdduke (slow) 2014/01/09 22:05:04 Done.
269 TEST_F(TouchEventQueueTest, HasNoTouchHandlersDuringTouchSequence) {
270 // Send a touch-press event.
271 PressTouchPoint(1, 1);
272 EXPECT_EQ(1U, GetAndResetSentEventCount());
273 EXPECT_EQ(1U, queued_event_count());
274
275 // Queue a touch-move event.
276 MoveTouchPoint(0, 5, 5);
277 EXPECT_EQ(2U, queued_event_count());
278 EXPECT_EQ(0U, GetAndResetAckedEventCount());
279 EXPECT_EQ(0U, GetAndResetSentEventCount());
280
281 // Touch handle deregistration should flush the queue.
282 OnHasTouchEventHandlers(false);
283 EXPECT_EQ(2U, GetAndResetAckedEventCount());
284 EXPECT_EQ(0U, queued_event_count());
285
286 // The ack should be ignored as the touch queue is now empty.
287 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
288 EXPECT_EQ(0U, GetAndResetAckedEventCount());
289 EXPECT_EQ(0U, queued_event_count());
290
291 // Events should be dropped while there is no touch handler.
292 MoveTouchPoint(0, 10, 10);
293 EXPECT_EQ(0U, queued_event_count());
294 EXPECT_EQ(1U, GetAndResetAckedEventCount());
295 EXPECT_EQ(0U, GetAndResetSentEventCount());
296
297 // Simulate touch handler registration in the middle of a touch sequence.
298 OnHasTouchEventHandlers(true);
299
300 // The touch end for the interrupted sequence should be dropped.
301 ReleaseTouchPoint(0);
302 EXPECT_EQ(0U, queued_event_count());
303 EXPECT_EQ(1U, GetAndResetAckedEventCount());
304 EXPECT_EQ(0U, GetAndResetSentEventCount());
305
306 // A new touch sequence should be forwarded properly.
307 PressTouchPoint(1, 1);
308 EXPECT_EQ(1U, queued_event_count());
309 EXPECT_EQ(1U, GetAndResetSentEventCount());
310 }
311
276 // Tests that touch-events are coalesced properly in the queue. 312 // Tests that touch-events are coalesced properly in the queue.
277 TEST_F(TouchEventQueueTest, Coalesce) { 313 TEST_F(TouchEventQueueTest, Coalesce) {
278 // Send a touch-press event. 314 // Send a touch-press event.
279 PressTouchPoint(1, 1); 315 PressTouchPoint(1, 1);
280 EXPECT_EQ(1U, GetAndResetSentEventCount()); 316 EXPECT_EQ(1U, GetAndResetSentEventCount());
281 317
282 // Send a few touch-move events, followed by a touch-release event. All the 318 // Send a few touch-move events, followed by a touch-release event. All the
283 // touch-move events should be coalesced into a single event. 319 // touch-move events should be coalesced into a single event.
284 for (int i = 5; i < 15; ++i) 320 for (int i = 5; i < 15; ++i)
285 MoveTouchPoint(0, i, i); 321 MoveTouchPoint(0, i, i);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 MoveTouchPoint(0, 10, 10); 422 MoveTouchPoint(0, 10, 10);
387 EXPECT_EQ(0U, GetAndResetSentEventCount()); 423 EXPECT_EQ(0U, GetAndResetSentEventCount());
388 EXPECT_EQ(2U, queued_event_count()); 424 EXPECT_EQ(2U, queued_event_count());
389 425
390 // Receive an ACK for the press. This should cause the queued touch-move to 426 // Receive an ACK for the press. This should cause the queued touch-move to
391 // be sent to the renderer. 427 // be sent to the renderer.
392 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); 428 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
393 EXPECT_EQ(1U, GetAndResetSentEventCount()); 429 EXPECT_EQ(1U, GetAndResetSentEventCount());
394 EXPECT_EQ(1U, queued_event_count()); 430 EXPECT_EQ(1U, queued_event_count());
395 431
396 Flush(); 432 OnHasTouchEventHandlers(false);
397 EXPECT_EQ(0U, GetAndResetSentEventCount()); 433 EXPECT_EQ(0U, GetAndResetSentEventCount());
398 EXPECT_EQ(0U, queued_event_count()); 434 EXPECT_EQ(0U, queued_event_count());
399 435
400 // Now receive an ACK for the move. 436 // Now receive an ACK for the move.
401 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); 437 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
402 EXPECT_EQ(0U, GetAndResetSentEventCount()); 438 EXPECT_EQ(0U, GetAndResetSentEventCount());
403 EXPECT_EQ(0U, queued_event_count()); 439 EXPECT_EQ(0U, queued_event_count());
404 } 440 }
405 441
406 // Tests that touch-move events are not sent to the renderer if the preceding 442 // Tests that touch-move events are not sent to the renderer if the preceding
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 EXPECT_EQ(1U, queued_event_count()); 714 EXPECT_EQ(1U, queued_event_count());
679 EXPECT_EQ(1U, GetAndResetSentEventCount()); 715 EXPECT_EQ(1U, GetAndResetSentEventCount());
680 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 716 EXPECT_EQ(1U, GetAndResetAckedEventCount());
681 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); 717 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state());
682 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); 718 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
683 } 719 }
684 720
685 // Tests basic TouchEvent forwarding suppression. 721 // Tests basic TouchEvent forwarding suppression.
686 TEST_F(TouchEventQueueTest, NoTouchBasic) { 722 TEST_F(TouchEventQueueTest, NoTouchBasic) {
687 // Disable TouchEvent forwarding. 723 // Disable TouchEvent forwarding.
688 SetEnableTouchForwarding(false); 724 OnHasTouchEventHandlers(false);
689 MoveTouchPoint(0, 30, 5); 725 MoveTouchPoint(0, 30, 5);
690 EXPECT_EQ(0U, GetAndResetSentEventCount()); 726 EXPECT_EQ(0U, GetAndResetSentEventCount());
691 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 727 EXPECT_EQ(1U, GetAndResetAckedEventCount());
692 728
693 // TouchMove should not be sent to renderer. 729 // TouchMove should not be sent to renderer.
694 MoveTouchPoint(0, 65, 10); 730 MoveTouchPoint(0, 65, 10);
695 EXPECT_EQ(0U, GetAndResetSentEventCount()); 731 EXPECT_EQ(0U, GetAndResetSentEventCount());
696 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 732 EXPECT_EQ(1U, GetAndResetAckedEventCount());
697 733
698 // TouchEnd should not be sent to renderer. 734 // TouchEnd should not be sent to renderer.
699 ReleaseTouchPoint(0); 735 ReleaseTouchPoint(0);
700 EXPECT_EQ(0U, GetAndResetSentEventCount()); 736 EXPECT_EQ(0U, GetAndResetSentEventCount());
701 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 737 EXPECT_EQ(1U, GetAndResetAckedEventCount());
702 738
703 // TouchStart should not be sent to renderer. 739 // TouchStart should not be sent to renderer.
704 PressTouchPoint(5, 5); 740 PressTouchPoint(5, 5);
705 EXPECT_EQ(0U, GetAndResetSentEventCount()); 741 EXPECT_EQ(0U, GetAndResetSentEventCount());
706 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 742 EXPECT_EQ(1U, GetAndResetAckedEventCount());
707 743
708 // Enable TouchEvent forwarding. 744 // Enable TouchEvent forwarding.
709 SetEnableTouchForwarding(true); 745 OnHasTouchEventHandlers(true);
710 746
711 PressTouchPoint(80, 10); 747 PressTouchPoint(80, 10);
712 EXPECT_EQ(1U, GetAndResetSentEventCount()); 748 EXPECT_EQ(1U, GetAndResetSentEventCount());
713 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 749 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
714 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 750 EXPECT_EQ(1U, GetAndResetAckedEventCount());
715 751
716 MoveTouchPoint(0, 80, 20); 752 MoveTouchPoint(0, 80, 20);
717 EXPECT_EQ(1U, GetAndResetSentEventCount()); 753 EXPECT_EQ(1U, GetAndResetSentEventCount());
718 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 754 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
719 EXPECT_EQ(1U, GetAndResetAckedEventCount()); 755 EXPECT_EQ(1U, GetAndResetAckedEventCount());
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) { 1006 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) {
971 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); 1007 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs);
972 1008
973 // Queue a TouchStart. 1009 // Queue a TouchStart.
974 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); 1010 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED);
975 ASSERT_FALSE(IsTimeoutRunning()); 1011 ASSERT_FALSE(IsTimeoutRunning());
976 PressTouchPoint(0, 1); 1012 PressTouchPoint(0, 1);
977 EXPECT_FALSE(IsTimeoutRunning()); 1013 EXPECT_FALSE(IsTimeoutRunning());
978 } 1014 }
979 1015
1016 // Tests that the timeout is disabled if the touch handler disappears.
1017 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfNoTouchHandler) {
1018 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs);
1019
1020 // Queue a TouchStart.
1021 PressTouchPoint(0, 1);
1022 ASSERT_TRUE(IsTimeoutRunning());
1023
1024 // Unload the touch handler.
1025 OnHasTouchEventHandlers(false);
1026 EXPECT_FALSE(IsTimeoutRunning());
1027 }
1028
980 // Tests that a TouchCancel timeout plays nice when the timed out touch stream 1029 // Tests that a TouchCancel timeout plays nice when the timed out touch stream
981 // turns into a scroll gesture sequence. 1030 // turns into a scroll gesture sequence.
982 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) { 1031 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) {
983 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); 1032 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs);
984 1033
985 // Queue a TouchStart. 1034 // Queue a TouchStart.
986 PressTouchPoint(0, 1); 1035 PressTouchPoint(0, 1);
987 EXPECT_TRUE(IsTimeoutRunning()); 1036 EXPECT_TRUE(IsTimeoutRunning());
988 EXPECT_TRUE(WillForwardTouchEvents()); 1037 EXPECT_TRUE(WillForwardTouchEvents());
989 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1038 EXPECT_EQ(1U, GetAndResetSentEventCount());
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 EXPECT_TRUE(WillForwardTouchEvents()); 1188 EXPECT_TRUE(WillForwardTouchEvents());
1140 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1189 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1141 EXPECT_EQ(0U, GetAndResetSentEventCount()); 1190 EXPECT_EQ(0U, GetAndResetSentEventCount());
1142 1191
1143 // Subsequent events should be handled normally. 1192 // Subsequent events should be handled normally.
1144 PressTouchPoint(0, 1); 1193 PressTouchPoint(0, 1);
1145 EXPECT_EQ(1U, GetAndResetSentEventCount()); 1194 EXPECT_EQ(1U, GetAndResetSentEventCount());
1146 EXPECT_EQ(0U, GetAndResetAckedEventCount()); 1195 EXPECT_EQ(0U, GetAndResetAckedEventCount());
1147 } 1196 }
1148 } // namespace content 1197 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698