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

Side by Side Diff: content/renderer/render_widget_unittest.cc

Issue 2233543002: Make first TouchStart and first TouchMove events on a flinging layer non-blocking (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rename Created 4 years, 4 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 "content/renderer/render_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include <tuple> 7 #include <tuple>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 17 matching lines...) Expand all
28 namespace { 28 namespace {
29 29
30 const char* EVENT_LISTENER_RESULT_HISTOGRAM = "Event.PassiveListeners"; 30 const char* EVENT_LISTENER_RESULT_HISTOGRAM = "Event.PassiveListeners";
31 31
32 enum { 32 enum {
33 PASSIVE_LISTENER_UMA_ENUM_PASSIVE, 33 PASSIVE_LISTENER_UMA_ENUM_PASSIVE,
34 PASSIVE_LISTENER_UMA_ENUM_UNCANCELABLE, 34 PASSIVE_LISTENER_UMA_ENUM_UNCANCELABLE,
35 PASSIVE_LISTENER_UMA_ENUM_SUPPRESSED, 35 PASSIVE_LISTENER_UMA_ENUM_SUPPRESSED,
36 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE, 36 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE,
37 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE_AND_CANCELED, 37 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE_AND_CANCELED,
38 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING, 38 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING,
39 PASSIVE_LISTENER_UMA_ENUM_COUNT 39 PASSIVE_LISTENER_UMA_ENUM_COUNT
40 }; 40 };
41 41
42 class MockWebWidget : public blink::WebWidget { 42 class MockWebWidget : public blink::WebWidget {
43 public: 43 public:
44 MOCK_METHOD1(handleInputEvent, 44 MOCK_METHOD1(handleInputEvent,
45 blink::WebInputEventResult(const blink::WebInputEvent&)); 45 blink::WebInputEventResult(const blink::WebInputEvent&));
46 }; 46 };
47 47
48 } // namespace 48 } // namespace
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 EXPECT_EQ(gfx::Vector2dF(10, 5), overscroll.latest_overscroll_delta); 274 EXPECT_EQ(gfx::Vector2dF(10, 5), overscroll.latest_overscroll_delta);
275 EXPECT_EQ(gfx::Vector2dF(5, 5), overscroll.accumulated_overscroll); 275 EXPECT_EQ(gfx::Vector2dF(5, 5), overscroll.accumulated_overscroll);
276 EXPECT_EQ(gfx::PointF(1, 1), overscroll.causal_event_viewport_point); 276 EXPECT_EQ(gfx::PointF(1, 1), overscroll.causal_event_viewport_point);
277 EXPECT_EQ(gfx::Vector2dF(-10, -5), overscroll.current_fling_velocity); 277 EXPECT_EQ(gfx::Vector2dF(-10, -5), overscroll.current_fling_velocity);
278 widget()->sink()->ClearMessages(); 278 widget()->sink()->ClearMessages();
279 } 279 }
280 280
281 TEST_F(RenderWidgetUnittest, RenderWidgetInputEventUmaMetrics) { 281 TEST_F(RenderWidgetUnittest, RenderWidgetInputEventUmaMetrics) {
282 SyntheticWebTouchEvent touch; 282 SyntheticWebTouchEvent touch;
283 touch.PressPoint(10, 10); 283 touch.PressPoint(10, 10);
284 touch.touchStartOrFirstTouchMove = true;
284 285
285 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) 286 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_))
286 .Times(4) 287 .Times(5)
287 .WillRepeatedly( 288 .WillRepeatedly(
288 ::testing::Return(blink::WebInputEventResult::NotHandled)); 289 ::testing::Return(blink::WebInputEventResult::NotHandled));
289 290
290 widget()->SendInputEvent(touch); 291 widget()->SendInputEvent(touch);
291 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, 292 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM,
292 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE, 1); 293 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE, 1);
293 294
294 touch.dispatchType = blink::WebInputEvent::DispatchType::EventNonBlocking; 295 touch.dispatchType = blink::WebInputEvent::DispatchType::EventNonBlocking;
295 widget()->SendInputEvent(touch); 296 widget()->SendInputEvent(touch);
296 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, 297 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM,
297 PASSIVE_LISTENER_UMA_ENUM_UNCANCELABLE, 298 PASSIVE_LISTENER_UMA_ENUM_UNCANCELABLE,
298 1); 299 1);
299 300
300 touch.dispatchType = 301 touch.dispatchType =
301 blink::WebInputEvent::DispatchType::ListenersNonBlockingPassive; 302 blink::WebInputEvent::DispatchType::ListenersNonBlockingPassive;
302 widget()->SendInputEvent(touch); 303 widget()->SendInputEvent(touch);
303 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, 304 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM,
304 PASSIVE_LISTENER_UMA_ENUM_PASSIVE, 1); 305 PASSIVE_LISTENER_UMA_ENUM_PASSIVE, 1);
305 306
306 touch.dispatchType = 307 touch.dispatchType =
307 blink::WebInputEvent::DispatchType::ListenersForcedNonBlockingPassive; 308 blink::WebInputEvent::DispatchType::ListenersForcedNonBlockingDueToFling;
308 widget()->SendInputEvent(touch); 309 widget()->SendInputEvent(touch);
309 histogram_tester().ExpectBucketCount( 310 histogram_tester().ExpectBucketCount(
310 EVENT_LISTENER_RESULT_HISTOGRAM, 311 EVENT_LISTENER_RESULT_HISTOGRAM,
311 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING, 1); 312 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING, 1);
313
314 touch.MovePoint(0, 10, 10);
315 touch.touchStartOrFirstTouchMove = true;
316 touch.dispatchType =
317 blink::WebInputEvent::DispatchType::ListenersForcedNonBlockingDueToFling;
318 widget()->SendInputEvent(touch);
319 histogram_tester().ExpectBucketCount(
320 EVENT_LISTENER_RESULT_HISTOGRAM,
321 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING, 2);
312 322
313 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) 323 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_))
314 .WillOnce( 324 .WillOnce(
315 ::testing::Return(blink::WebInputEventResult::HandledSuppressed)); 325 ::testing::Return(blink::WebInputEventResult::HandledSuppressed));
316 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; 326 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking;
317 widget()->SendInputEvent(touch); 327 widget()->SendInputEvent(touch);
318 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, 328 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM,
319 PASSIVE_LISTENER_UMA_ENUM_SUPPRESSED, 1); 329 PASSIVE_LISTENER_UMA_ENUM_SUPPRESSED, 1);
320 330
321 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) 331 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_))
322 .WillOnce( 332 .WillOnce(
323 ::testing::Return(blink::WebInputEventResult::HandledApplication)); 333 ::testing::Return(blink::WebInputEventResult::HandledApplication));
324 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; 334 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking;
325 widget()->SendInputEvent(touch); 335 widget()->SendInputEvent(touch);
326 histogram_tester().ExpectBucketCount( 336 histogram_tester().ExpectBucketCount(
327 EVENT_LISTENER_RESULT_HISTOGRAM, 337 EVENT_LISTENER_RESULT_HISTOGRAM,
328 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE_AND_CANCELED, 1); 338 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE_AND_CANCELED, 1);
329 } 339 }
330 340
331 TEST_F(RenderWidgetUnittest, TouchStartDuringOrOutsideFlingUmaMetrics) { 341 TEST_F(RenderWidgetUnittest, TouchDuringOrOutsideFlingUmaMetrics) {
332 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) 342 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_))
333 .Times(2) 343 .Times(3)
334 .WillRepeatedly( 344 .WillRepeatedly(
335 ::testing::Return(blink::WebInputEventResult::NotHandled)); 345 ::testing::Return(blink::WebInputEventResult::NotHandled));
336 346
337 SyntheticWebTouchEvent touch; 347 SyntheticWebTouchEvent touch;
338 touch.PressPoint(10, 10); 348 touch.PressPoint(10, 10);
339 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; 349 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking;
340 touch.dispatchedDuringFling = true; 350 touch.dispatchedDuringFling = false;
351 touch.touchStartOrFirstTouchMove = true;
341 widget()->SendInputEvent(touch); 352 widget()->SendInputEvent(touch);
342 histogram_tester().ExpectTotalCount( 353 histogram_tester().ExpectTotalCount("Event.Touch.TouchLatencyOutsideFling",
343 "Event.Touch.TouchStartLatencyDuringFling", 1); 354 1);
344 355
345 touch.dispatchedDuringFling = false; 356 touch.MovePoint(0, 10, 10);
357 touch.touchStartOrFirstTouchMove = true;
346 widget()->SendInputEvent(touch); 358 widget()->SendInputEvent(touch);
347 histogram_tester().ExpectTotalCount( 359 histogram_tester().ExpectTotalCount("Event.Touch.TouchLatencyOutsideFling",
348 "Event.Touch.TouchStartLatencyOutsideFling", 1); 360 2);
361
362 touch.MovePoint(0, 30, 30);
363 touch.touchStartOrFirstTouchMove = false;
364 widget()->SendInputEvent(touch);
365 histogram_tester().ExpectTotalCount("Event.Touch.TouchLatencyOutsideFling",
366 2);
349 } 367 }
350 368
351 } // namespace content 369 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/input/render_widget_input_handler.cc ('k') | third_party/WebKit/Source/core/events/Event.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698