| OLD | NEW |
| 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 Loading... |
| 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 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 | 284 |
| 285 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) | 285 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) |
| 286 .Times(4) | 286 .Times(5) |
| 287 .WillRepeatedly( | 287 .WillRepeatedly( |
| 288 ::testing::Return(blink::WebInputEventResult::NotHandled)); | 288 ::testing::Return(blink::WebInputEventResult::NotHandled)); |
| 289 | 289 |
| 290 widget()->SendInputEvent(touch); | 290 widget()->SendInputEvent(touch); |
| 291 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, | 291 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, |
| 292 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE, 1); | 292 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE, 1); |
| 293 | 293 |
| 294 touch.dispatchType = blink::WebInputEvent::DispatchType::EventNonBlocking; | 294 touch.dispatchType = blink::WebInputEvent::DispatchType::EventNonBlocking; |
| 295 widget()->SendInputEvent(touch); | 295 widget()->SendInputEvent(touch); |
| 296 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, | 296 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, |
| 297 PASSIVE_LISTENER_UMA_ENUM_UNCANCELABLE, | 297 PASSIVE_LISTENER_UMA_ENUM_UNCANCELABLE, |
| 298 1); | 298 1); |
| 299 | 299 |
| 300 touch.dispatchType = | 300 touch.dispatchType = |
| 301 blink::WebInputEvent::DispatchType::ListenersNonBlockingPassive; | 301 blink::WebInputEvent::DispatchType::ListenersNonBlockingPassive; |
| 302 widget()->SendInputEvent(touch); | 302 widget()->SendInputEvent(touch); |
| 303 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, | 303 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, |
| 304 PASSIVE_LISTENER_UMA_ENUM_PASSIVE, 1); | 304 PASSIVE_LISTENER_UMA_ENUM_PASSIVE, 1); |
| 305 | 305 |
| 306 touch.dispatchType = | 306 touch.dispatchType = blink::WebInputEvent::DispatchType:: |
| 307 blink::WebInputEvent::DispatchType::ListenersForcedNonBlockingPassive; | 307 ListenersForcedNonBlockingPassiveDueToFling; |
| 308 widget()->SendInputEvent(touch); | 308 widget()->SendInputEvent(touch); |
| 309 histogram_tester().ExpectBucketCount( | 309 histogram_tester().ExpectBucketCount( |
| 310 EVENT_LISTENER_RESULT_HISTOGRAM, | 310 EVENT_LISTENER_RESULT_HISTOGRAM, |
| 311 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING, 1); | 311 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING, 1); |
| 312 |
| 313 touch.MovePoint(0, 10, 10); |
| 314 touch.dispatchType = blink::WebInputEvent::DispatchType:: |
| 315 ListenersForcedNonBlockingPassiveDueToFling; |
| 316 widget()->SendInputEvent(touch); |
| 317 histogram_tester().ExpectBucketCount( |
| 318 EVENT_LISTENER_RESULT_HISTOGRAM, |
| 319 PASSIVE_LISTENER_UMA_ENUM_FORCED_NON_BLOCKING_DUE_TO_FLING, 2); |
| 312 | 320 |
| 313 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) | 321 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) |
| 314 .WillOnce( | 322 .WillOnce( |
| 315 ::testing::Return(blink::WebInputEventResult::HandledSuppressed)); | 323 ::testing::Return(blink::WebInputEventResult::HandledSuppressed)); |
| 316 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; | 324 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; |
| 317 widget()->SendInputEvent(touch); | 325 widget()->SendInputEvent(touch); |
| 318 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, | 326 histogram_tester().ExpectBucketCount(EVENT_LISTENER_RESULT_HISTOGRAM, |
| 319 PASSIVE_LISTENER_UMA_ENUM_SUPPRESSED, 1); | 327 PASSIVE_LISTENER_UMA_ENUM_SUPPRESSED, 1); |
| 320 | 328 |
| 321 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) | 329 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) |
| 322 .WillOnce( | 330 .WillOnce( |
| 323 ::testing::Return(blink::WebInputEventResult::HandledApplication)); | 331 ::testing::Return(blink::WebInputEventResult::HandledApplication)); |
| 324 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; | 332 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; |
| 325 widget()->SendInputEvent(touch); | 333 widget()->SendInputEvent(touch); |
| 326 histogram_tester().ExpectBucketCount( | 334 histogram_tester().ExpectBucketCount( |
| 327 EVENT_LISTENER_RESULT_HISTOGRAM, | 335 EVENT_LISTENER_RESULT_HISTOGRAM, |
| 328 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE_AND_CANCELED, 1); | 336 PASSIVE_LISTENER_UMA_ENUM_CANCELABLE_AND_CANCELED, 1); |
| 329 } | 337 } |
| 330 | 338 |
| 331 TEST_F(RenderWidgetUnittest, TouchStartDuringOrOutsideFlingUmaMetrics) { | 339 TEST_F(RenderWidgetUnittest, TouchDuringOrOutsideFlingUmaMetrics) { |
| 332 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) | 340 EXPECT_CALL(*widget()->mock_webwidget(), handleInputEvent(_)) |
| 333 .Times(2) | 341 .Times(2) |
| 334 .WillRepeatedly( | 342 .WillRepeatedly( |
| 335 ::testing::Return(blink::WebInputEventResult::NotHandled)); | 343 ::testing::Return(blink::WebInputEventResult::NotHandled)); |
| 336 | 344 |
| 337 SyntheticWebTouchEvent touch; | 345 SyntheticWebTouchEvent touch; |
| 338 touch.PressPoint(10, 10); | 346 touch.PressPoint(10, 10); |
| 339 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; | 347 touch.dispatchType = blink::WebInputEvent::DispatchType::Blocking; |
| 340 touch.dispatchedDuringFling = true; | |
| 341 widget()->SendInputEvent(touch); | |
| 342 histogram_tester().ExpectTotalCount( | |
| 343 "Event.Touch.TouchStartLatencyDuringFling", 1); | |
| 344 | |
| 345 touch.dispatchedDuringFling = false; | 348 touch.dispatchedDuringFling = false; |
| 346 widget()->SendInputEvent(touch); | 349 widget()->SendInputEvent(touch); |
| 347 histogram_tester().ExpectTotalCount( | 350 histogram_tester().ExpectTotalCount("Event.Touch.TouchLatencyOutsideFling", |
| 348 "Event.Touch.TouchStartLatencyOutsideFling", 1); | 351 1); |
| 352 |
| 353 touch.MovePoint(0, 10, 10); |
| 354 widget()->SendInputEvent(touch); |
| 355 histogram_tester().ExpectTotalCount("Event.Touch.TouchLatencyOutsideFling", |
| 356 2); |
| 349 } | 357 } |
| 350 | 358 |
| 351 } // namespace content | 359 } // namespace content |
| OLD | NEW |