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

Unified Diff: content/common/input/web_input_event_traits_unittest.cc

Issue 2110363003: Consolidate WebInputEvent Coalescing unit tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit diff Created 4 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 side-by-side diff with in-line comments
Download patch
Index: content/common/input/web_input_event_traits_unittest.cc
diff --git a/content/common/input/web_input_event_traits_unittest.cc b/content/common/input/web_input_event_traits_unittest.cc
index d89d6b7035de38ab171b0f81ae04b22b4a0d3fdd..89baf881b07728677994bba3d283474b80db3f92 100644
--- a/content/common/input/web_input_event_traits_unittest.cc
+++ b/content/common/input/web_input_event_traits_unittest.cc
@@ -4,9 +4,6 @@
#include "content/common/input/web_input_event_traits.h"
-#include <limits>
-
-#include "content/common/input/event_with_latency_info.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/WebKit/public/web/WebInputEvent.h"
@@ -16,230 +13,11 @@ using blink::WebKeyboardEvent;
using blink::WebMouseEvent;
using blink::WebMouseWheelEvent;
using blink::WebTouchEvent;
-using blink::WebTouchPoint;
-using std::numeric_limits;
namespace content {
namespace {
-// TODO(tapted): Move the Coalesce tests to event_with_latency_info_unittest.cc.
-// Merge this test harness into EventWithLatencyInfoTest.
-// http://crbug.com/625000.
-class WebInputEventTraitsTest : public testing::Test {
- protected:
- static WebTouchPoint CreateTouchPoint(WebTouchPoint::State state, int id) {
- WebTouchPoint touch;
- touch.state = state;
- touch.id = id;
- return touch;
- }
-
- static TouchEventWithLatencyInfo CreateTouch(WebInputEvent::Type type) {
- return CreateTouch(type, 1);
- }
-
- static TouchEventWithLatencyInfo CreateTouch(WebInputEvent::Type type,
- unsigned touch_count) {
- WebTouchEvent event;
- event.touchesLength = touch_count;
- event.type = type;
- return TouchEventWithLatencyInfo(event);
- }
-
- static GestureEventWithLatencyInfo CreateGesture(WebInputEvent::Type type,
- float x,
- float y) {
- WebGestureEvent event;
- event.type = type;
- event.x = x;
- event.y = y;
- return GestureEventWithLatencyInfo(event);
- }
-
- static MouseWheelEventWithLatencyInfo CreateMouseWheel(float deltaX,
- float deltaY) {
- WebMouseWheelEvent event;
- event.type = WebInputEvent::MouseWheel;
- event.deltaX = deltaX;
- event.deltaY = deltaY;
- return MouseWheelEventWithLatencyInfo(event);
- }
-};
-
-template <class T>
-bool CanCoalesce(const T& event_to_coalesce, const T& event) {
- return event.CanCoalesceWith(event_to_coalesce);
-}
-
-template <class T>
-void Coalesce(const T& event_to_coalesce, T* event) {
- return event->CoalesceWith(event_to_coalesce);
-}
-
-TEST_F(WebInputEventTraitsTest, TouchEventCoalescing) {
- TouchEventWithLatencyInfo touch0 = CreateTouch(WebInputEvent::TouchStart);
- TouchEventWithLatencyInfo touch1 = CreateTouch(WebInputEvent::TouchMove);
-
- // Non touch-moves won't coalesce.
- EXPECT_FALSE(CanCoalesce(touch0, touch0));
-
- // Touches of different types won't coalesce.
- EXPECT_FALSE(CanCoalesce(touch0, touch1));
-
- // Touch moves with idential touch lengths and touch ids should coalesce.
- EXPECT_TRUE(CanCoalesce(touch1, touch1));
-
- // Touch moves with different touch ids should not coalesce.
- touch0 = CreateTouch(WebInputEvent::TouchMove);
- touch1 = CreateTouch(WebInputEvent::TouchMove);
- touch0.event.touches[0].id = 7;
- EXPECT_FALSE(CanCoalesce(touch0, touch1));
- touch0 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch1 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch0.event.touches[0].id = 1;
- touch1.event.touches[0].id = 0;
- EXPECT_FALSE(CanCoalesce(touch0, touch1));
-
- // Touch moves with different touch lengths should not coalesce.
- touch0 = CreateTouch(WebInputEvent::TouchMove, 1);
- touch1 = CreateTouch(WebInputEvent::TouchMove, 2);
- EXPECT_FALSE(CanCoalesce(touch0, touch1));
-
- // Touch moves with identical touch ids in different orders should coalesce.
- touch0 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch1 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch0.event.touches[0] = touch1.event.touches[1] =
- CreateTouchPoint(WebTouchPoint::StateMoved, 1);
- touch0.event.touches[1] = touch1.event.touches[0] =
- CreateTouchPoint(WebTouchPoint::StateMoved, 0);
- EXPECT_TRUE(CanCoalesce(touch0, touch1));
-
- // Pointers with the same ID's should coalesce.
- touch0 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch1 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch0.event.touches[0] = touch1.event.touches[1] =
- CreateTouchPoint(WebTouchPoint::StateMoved, 1);
- Coalesce(touch0, &touch1);
- ASSERT_EQ(1, touch1.event.touches[0].id);
- ASSERT_EQ(0, touch1.event.touches[1].id);
- EXPECT_EQ(WebTouchPoint::StateUndefined, touch1.event.touches[1].state);
- EXPECT_EQ(WebTouchPoint::StateMoved, touch1.event.touches[0].state);
-
- // Movement from now-stationary pointers should be preserved.
- touch0 = touch1 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch0.event.touches[0] = CreateTouchPoint(WebTouchPoint::StateMoved, 1);
- touch1.event.touches[1] = CreateTouchPoint(WebTouchPoint::StateStationary, 1);
- touch0.event.touches[1] = CreateTouchPoint(WebTouchPoint::StateStationary, 0);
- touch1.event.touches[0] = CreateTouchPoint(WebTouchPoint::StateMoved, 0);
- Coalesce(touch0, &touch1);
- ASSERT_EQ(1, touch1.event.touches[0].id);
- ASSERT_EQ(0, touch1.event.touches[1].id);
- EXPECT_EQ(WebTouchPoint::StateMoved, touch1.event.touches[0].state);
- EXPECT_EQ(WebTouchPoint::StateMoved, touch1.event.touches[1].state);
-
- // Touch moves with different dispatchTypes coalesce.
- touch0 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch0.event.dispatchType = WebInputEvent::DispatchType::Blocking;
- touch1 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch1.event.dispatchType = WebInputEvent::DispatchType::EventNonBlocking;
- touch0.event.touches[0] = touch1.event.touches[1] =
- CreateTouchPoint(WebTouchPoint::StateMoved, 1);
- touch0.event.touches[1] = touch1.event.touches[0] =
- CreateTouchPoint(WebTouchPoint::StateMoved, 0);
- EXPECT_TRUE(CanCoalesce(touch0, touch1));
- Coalesce(touch0, &touch1);
- ASSERT_EQ(WebInputEvent::DispatchType::Blocking, touch1.event.dispatchType);
-
- touch0 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch0.event.dispatchType =
- WebInputEvent::DispatchType::ListenersForcedNonBlockingPassive;
- touch1 = CreateTouch(WebInputEvent::TouchMove, 2);
- touch1.event.dispatchType =
- WebInputEvent::DispatchType::ListenersNonBlockingPassive;
- touch0.event.touches[0] = touch1.event.touches[1] =
- CreateTouchPoint(WebTouchPoint::StateMoved, 1);
- touch0.event.touches[1] = touch1.event.touches[0] =
- CreateTouchPoint(WebTouchPoint::StateMoved, 0);
- EXPECT_TRUE(CanCoalesce(touch0, touch1));
- Coalesce(touch0, &touch1);
- ASSERT_EQ(WebInputEvent::DispatchType::ListenersNonBlockingPassive,
- touch1.event.dispatchType);
-}
-
-TEST_F(WebInputEventTraitsTest, PinchEventCoalescing) {
- GestureEventWithLatencyInfo pinch0 =
- CreateGesture(WebInputEvent::GesturePinchBegin, 1, 1);
- GestureEventWithLatencyInfo pinch1 =
- CreateGesture(WebInputEvent::GesturePinchUpdate, 2, 2);
-
- // Only GesturePinchUpdate's coalesce.
- EXPECT_FALSE(CanCoalesce(pinch0, pinch0));
-
- // Pinch gestures of different types should not coalesce.
- EXPECT_FALSE(CanCoalesce(pinch0, pinch1));
-
- // Pinches with different focal points should not coalesce.
- pinch0 = CreateGesture(WebInputEvent::GesturePinchUpdate, 1, 1);
- pinch1 = CreateGesture(WebInputEvent::GesturePinchUpdate, 2, 2);
- EXPECT_FALSE(CanCoalesce(pinch0, pinch1));
- EXPECT_TRUE(CanCoalesce(pinch0, pinch0));
-
- // Coalesced scales are multiplicative.
- pinch0 = CreateGesture(WebInputEvent::GesturePinchUpdate, 1, 1);
- pinch0.event.data.pinchUpdate.scale = 2.f;
- pinch1 = CreateGesture(WebInputEvent::GesturePinchUpdate, 1, 1);
- pinch1.event.data.pinchUpdate.scale = 3.f;
- EXPECT_TRUE(CanCoalesce(pinch0, pinch0));
- Coalesce(pinch0, &pinch1);
- EXPECT_EQ(2.f * 3.f, pinch1.event.data.pinchUpdate.scale);
-
- // Scales have a minimum value and can never reach 0.
- ASSERT_GT(numeric_limits<float>::min(), 0);
- pinch0 = CreateGesture(WebInputEvent::GesturePinchUpdate, 1, 1);
- pinch0.event.data.pinchUpdate.scale = numeric_limits<float>::min() * 2.0f;
- pinch1 = CreateGesture(WebInputEvent::GesturePinchUpdate, 1, 1);
- pinch1.event.data.pinchUpdate.scale = numeric_limits<float>::min() * 5.0f;
- EXPECT_TRUE(CanCoalesce(pinch0, pinch1));
- Coalesce(pinch0, &pinch1);
- EXPECT_EQ(numeric_limits<float>::min(), pinch1.event.data.pinchUpdate.scale);
-
- // Scales have a maximum value and can never reach Infinity.
- pinch0 = CreateGesture(WebInputEvent::GesturePinchUpdate, 1, 1);
- pinch0.event.data.pinchUpdate.scale = numeric_limits<float>::max() / 2.0f;
- pinch1 = CreateGesture(WebInputEvent::GesturePinchUpdate, 1, 1);
- pinch1.event.data.pinchUpdate.scale = 10.0f;
- EXPECT_TRUE(CanCoalesce(pinch0, pinch1));
- Coalesce(pinch0, &pinch1);
- EXPECT_EQ(numeric_limits<float>::max(), pinch1.event.data.pinchUpdate.scale);
-}
-
-TEST_F(WebInputEventTraitsTest, WebMouseWheelEventCoalescing) {
- MouseWheelEventWithLatencyInfo mouse_wheel_0 = CreateMouseWheel(1, 1);
- MouseWheelEventWithLatencyInfo mouse_wheel_1 = CreateMouseWheel(2, 2);
-
- // WebMouseWheelEvent objects with same values except different deltaX and
- // deltaY should coalesce.
- EXPECT_TRUE(CanCoalesce(mouse_wheel_0, mouse_wheel_1));
-
- // WebMouseWheelEvent objects with different modifiers should not coalesce.
- mouse_wheel_0 = CreateMouseWheel(1, 1);
- mouse_wheel_1 = CreateMouseWheel(1, 1);
- mouse_wheel_0.event.modifiers = blink::WebInputEvent::ControlKey;
- mouse_wheel_1.event.modifiers = blink::WebInputEvent::ShiftKey;
- EXPECT_FALSE(CanCoalesce(mouse_wheel_0, mouse_wheel_1));
-}
-
-// Coalescing preserves the newer timestamp.
-TEST_F(WebInputEventTraitsTest, TimestampCoalescing) {
- MouseWheelEventWithLatencyInfo mouse_wheel_0 = CreateMouseWheel(1, 1);
- mouse_wheel_0.event.timeStampSeconds = 5.0;
- MouseWheelEventWithLatencyInfo mouse_wheel_1 = CreateMouseWheel(2, 2);
- mouse_wheel_1.event.timeStampSeconds = 10.0;
-
- EXPECT_TRUE(CanCoalesce(mouse_wheel_0, mouse_wheel_1));
- Coalesce(mouse_wheel_1, &mouse_wheel_0);
- EXPECT_EQ(10.0, mouse_wheel_0.event.timeStampSeconds);
-}
+using WebInputEventTraitsTest = testing::Test;
// Very basic smoke test to ensure stringification doesn't explode.
TEST_F(WebInputEventTraitsTest, ToString) {

Powered by Google App Engine
This is Rietveld 408576698