| Index: third_party/WebKit/Source/web/tests/WebInputEventConversionTest.cpp
|
| diff --git a/third_party/WebKit/Source/web/tests/WebInputEventConversionTest.cpp b/third_party/WebKit/Source/web/tests/WebInputEventConversionTest.cpp
|
| index 54c6c7d18c4086d82308aac69e7372510d1879b0..4de6fd5a38f6f92e2c3e22aea24e4b6ebce72488 100644
|
| --- a/third_party/WebKit/Source/web/tests/WebInputEventConversionTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/WebInputEventConversionTest.cpp
|
| @@ -102,202 +102,6 @@ TEST(WebInputEventConversionTest, WebMouseEventBuilder) {
|
| EXPECT_EQ(WebInputEvent::Undefined, mouse.type());
|
| }
|
|
|
| -TEST(WebInputEventConversionTest, WebTouchEventBuilder) {
|
| - const std::string baseURL("http://www.test0.com/");
|
| - const std::string fileName("fixed_layout.html");
|
| -
|
| - URLTestHelpers::registerMockedURLFromBaseURL(
|
| - WebString::fromUTF8(baseURL.c_str()),
|
| - WebString::fromUTF8("fixed_layout.html"));
|
| - FrameTestHelpers::WebViewHelper webViewHelper;
|
| - WebViewImpl* webViewImpl =
|
| - webViewHelper.initializeAndLoad(baseURL + fileName, true);
|
| - int pageWidth = 640;
|
| - int pageHeight = 480;
|
| - webViewImpl->resize(WebSize(pageWidth, pageHeight));
|
| - webViewImpl->updateAllLifecyclePhases();
|
| -
|
| - Document* document =
|
| - toLocalFrame(webViewImpl->page()->mainFrame())->document();
|
| - LocalDOMWindow* domWindow = document->domWindow();
|
| - LayoutViewItem documentLayoutView = document->layoutViewItem();
|
| -
|
| - WebTouchPoint p0, p1;
|
| - p0.id = 1;
|
| - p1.id = 2;
|
| - p0.screenPosition = WebFloatPoint(100.f, 50.f);
|
| - p1.screenPosition = WebFloatPoint(150.f, 25.f);
|
| - p0.position = WebFloatPoint(10.f, 10.f);
|
| - p1.position = WebFloatPoint(5.f, 5.f);
|
| - p0.radiusX = p1.radiusY = 10.f;
|
| - p0.radiusY = p1.radiusX = 5.f;
|
| - p0.rotationAngle = p1.rotationAngle = 1.f;
|
| - p0.force = p1.force = 25.f;
|
| -
|
| - Touch* touch0 = Touch::create(toLocalFrame(webViewImpl->page()->mainFrame()),
|
| - document, p0.id, p0.screenPosition, p0.position,
|
| - FloatSize(p0.radiusX, p0.radiusY),
|
| - p0.rotationAngle, p0.force, String());
|
| - Touch* touch1 = Touch::create(toLocalFrame(webViewImpl->page()->mainFrame()),
|
| - document, p1.id, p1.screenPosition, p1.position,
|
| - FloatSize(p1.radiusX, p1.radiusY),
|
| - p1.rotationAngle, p1.force, String());
|
| -
|
| - // Test touchstart.
|
| - {
|
| - TouchList* touchList = TouchList::create();
|
| - touchList->append(touch0);
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - touchList, touchList, touchList, EventTypeNames::touchstart, domWindow,
|
| - PlatformEvent::NoModifiers, false, false, true, TimeTicks(),
|
| - TouchActionAuto, WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - ASSERT_EQ(1u, webTouchBuilder.touchesLength);
|
| - EXPECT_EQ(WebInputEvent::TouchStart, webTouchBuilder.type());
|
| - EXPECT_EQ(WebTouchPoint::StatePressed, webTouchBuilder.touches[0].state);
|
| - EXPECT_FLOAT_EQ(p0.screenPosition.x,
|
| - webTouchBuilder.touches[0].screenPosition.x);
|
| - EXPECT_FLOAT_EQ(p0.screenPosition.y,
|
| - webTouchBuilder.touches[0].screenPosition.y);
|
| - EXPECT_FLOAT_EQ(p0.position.x, webTouchBuilder.touches[0].position.x);
|
| - EXPECT_FLOAT_EQ(p0.position.y, webTouchBuilder.touches[0].position.y);
|
| - EXPECT_FLOAT_EQ(p0.radiusX, webTouchBuilder.touches[0].radiusX);
|
| - EXPECT_FLOAT_EQ(p0.radiusY, webTouchBuilder.touches[0].radiusY);
|
| - EXPECT_FLOAT_EQ(p0.rotationAngle, webTouchBuilder.touches[0].rotationAngle);
|
| - EXPECT_FLOAT_EQ(p0.force, webTouchBuilder.touches[0].force);
|
| - EXPECT_EQ(WebPointerProperties::PointerType::Touch,
|
| - webTouchBuilder.touches[0].pointerType);
|
| - EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
|
| - }
|
| -
|
| - // Test cancelable touchstart.
|
| - {
|
| - TouchList* touchList = TouchList::create();
|
| - touchList->append(touch0);
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - touchList, touchList, touchList, EventTypeNames::touchstart, domWindow,
|
| - PlatformEvent::NoModifiers, true, false, true, TimeTicks(),
|
| - TouchActionAuto, WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - EXPECT_EQ(WebInputEvent::Blocking, webTouchBuilder.dispatchType);
|
| - }
|
| -
|
| - // Test touchmove.
|
| - {
|
| - TouchList* activeTouchList = TouchList::create();
|
| - TouchList* movedTouchList = TouchList::create();
|
| - activeTouchList->append(touch0);
|
| - activeTouchList->append(touch1);
|
| - movedTouchList->append(touch0);
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - activeTouchList, activeTouchList, movedTouchList,
|
| - EventTypeNames::touchmove, domWindow, PlatformEvent::NoModifiers, false,
|
| - false, true, TimeTicks(), TouchActionAuto,
|
| - WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - ASSERT_EQ(2u, webTouchBuilder.touchesLength);
|
| - EXPECT_EQ(WebInputEvent::TouchMove, webTouchBuilder.type());
|
| - EXPECT_EQ(WebTouchPoint::StateMoved, webTouchBuilder.touches[0].state);
|
| - EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[1].state);
|
| - EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
|
| - EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
|
| - EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
|
| - }
|
| -
|
| - // Test touchmove, different point yields same ordering.
|
| - {
|
| - TouchList* activeTouchList = TouchList::create();
|
| - TouchList* movedTouchList = TouchList::create();
|
| - activeTouchList->append(touch0);
|
| - activeTouchList->append(touch1);
|
| - movedTouchList->append(touch1);
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - activeTouchList, activeTouchList, movedTouchList,
|
| - EventTypeNames::touchmove, domWindow, PlatformEvent::NoModifiers, false,
|
| - false, true, TimeTicks(), TouchActionAuto,
|
| - WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - ASSERT_EQ(2u, webTouchBuilder.touchesLength);
|
| - EXPECT_EQ(WebInputEvent::TouchMove, webTouchBuilder.type());
|
| - EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[0].state);
|
| - EXPECT_EQ(WebTouchPoint::StateMoved, webTouchBuilder.touches[1].state);
|
| - EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
|
| - EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
|
| - EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
|
| - }
|
| -
|
| - // Test touchend.
|
| - {
|
| - TouchList* activeTouchList = TouchList::create();
|
| - TouchList* releasedTouchList = TouchList::create();
|
| - activeTouchList->append(touch0);
|
| - releasedTouchList->append(touch1);
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - activeTouchList, activeTouchList, releasedTouchList,
|
| - EventTypeNames::touchend, domWindow, PlatformEvent::NoModifiers, false,
|
| - false, false, TimeTicks(), TouchActionAuto,
|
| - WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - ASSERT_EQ(2u, webTouchBuilder.touchesLength);
|
| - EXPECT_EQ(WebInputEvent::TouchEnd, webTouchBuilder.type());
|
| - EXPECT_EQ(WebTouchPoint::StateStationary, webTouchBuilder.touches[0].state);
|
| - EXPECT_EQ(WebTouchPoint::StateReleased, webTouchBuilder.touches[1].state);
|
| - EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
|
| - EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
|
| - EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
|
| - }
|
| -
|
| - // Test touchcancel.
|
| - {
|
| - TouchList* activeTouchList = TouchList::create();
|
| - TouchList* cancelledTouchList = TouchList::create();
|
| - cancelledTouchList->append(touch0);
|
| - cancelledTouchList->append(touch1);
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - activeTouchList, activeTouchList, cancelledTouchList,
|
| - EventTypeNames::touchcancel, domWindow, PlatformEvent::NoModifiers,
|
| - false, false, false, TimeTicks(), TouchActionAuto,
|
| - WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - ASSERT_EQ(2u, webTouchBuilder.touchesLength);
|
| - EXPECT_EQ(WebInputEvent::TouchCancel, webTouchBuilder.type());
|
| - EXPECT_EQ(WebTouchPoint::StateCancelled, webTouchBuilder.touches[0].state);
|
| - EXPECT_EQ(WebTouchPoint::StateCancelled, webTouchBuilder.touches[1].state);
|
| - EXPECT_EQ(p0.id, webTouchBuilder.touches[0].id);
|
| - EXPECT_EQ(p1.id, webTouchBuilder.touches[1].id);
|
| - EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
|
| - }
|
| -
|
| - // Test max point limit.
|
| - {
|
| - TouchList* touchList = TouchList::create();
|
| - TouchList* changedTouchList = TouchList::create();
|
| - for (int i = 0; i <= static_cast<int>(WebTouchEvent::kTouchesLengthCap) * 2;
|
| - ++i) {
|
| - Touch* touch = Touch::create(
|
| - toLocalFrame(webViewImpl->page()->mainFrame()), document, i,
|
| - p0.screenPosition, p0.position, FloatSize(p0.radiusX, p0.radiusY),
|
| - p0.rotationAngle, p0.force, String());
|
| - touchList->append(touch);
|
| - changedTouchList->append(touch);
|
| - }
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - touchList, touchList, touchList, EventTypeNames::touchstart, domWindow,
|
| - PlatformEvent::NoModifiers, false, false, true, TimeTicks(),
|
| - TouchActionAuto, WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - ASSERT_EQ(static_cast<unsigned>(WebTouchEvent::kTouchesLengthCap),
|
| - webTouchBuilder.touchesLength);
|
| - }
|
| -}
|
| -
|
| TEST(WebInputEventConversionTest, InputEventsScaling) {
|
| const std::string baseURL("http://www.test1.com/");
|
| const std::string fileName("fixed_layout.html");
|
| @@ -512,17 +316,15 @@ TEST(WebInputEventConversionTest, InputEventsScaling) {
|
| EXPECT_FLOAT_EQ(10.6f, webTouchEvent.touches[0].radiusX);
|
| EXPECT_FLOAT_EQ(10.4f, webTouchEvent.touches[0].radiusY);
|
|
|
| - PlatformTouchEventBuilder platformTouchBuilder(view, webTouchEvent);
|
| - EXPECT_FLOAT_EQ(10.6f,
|
| - platformTouchBuilder.touchPoints()[0].screenPos().x());
|
| - EXPECT_FLOAT_EQ(10.4f,
|
| - platformTouchBuilder.touchPoints()[0].screenPos().y());
|
| - EXPECT_FLOAT_EQ(5.3f, platformTouchBuilder.touchPoints()[0].pos().x());
|
| - EXPECT_FLOAT_EQ(5.2f, platformTouchBuilder.touchPoints()[0].pos().y());
|
| - EXPECT_FLOAT_EQ(5.3f,
|
| - platformTouchBuilder.touchPoints()[0].radius().width());
|
| - EXPECT_FLOAT_EQ(5.2f,
|
| - platformTouchBuilder.touchPoints()[0].radius().height());
|
| + WebTouchEvent transformedEvent =
|
| + TransformWebTouchEvent(view, webTouchEvent);
|
| + WebTouchPoint transformedPoint = transformedEvent.touchPointInRootFrame(0);
|
| + EXPECT_FLOAT_EQ(10.6f, transformedPoint.screenPosition.x);
|
| + EXPECT_FLOAT_EQ(10.4f, transformedPoint.screenPosition.y);
|
| + EXPECT_FLOAT_EQ(5.3f, transformedPoint.position.x);
|
| + EXPECT_FLOAT_EQ(5.2f, transformedPoint.position.y);
|
| + EXPECT_FLOAT_EQ(5.3f, transformedPoint.radiusX);
|
| + EXPECT_FLOAT_EQ(5.2f, transformedPoint.radiusY);
|
| }
|
|
|
| // Reverse builders should *not* go back to physical pixels, as they are used
|
| @@ -555,29 +357,6 @@ TEST(WebInputEventConversionTest, InputEventsScaling) {
|
| WebMouseEventBuilder webMouseBuilder(view, documentLayoutView, *mouseEvent);
|
| EXPECT_EQ(WebMouseEvent::Button::NoButton, webMouseBuilder.button);
|
| }
|
| -
|
| - {
|
| - Touch* touch =
|
| - Touch::create(toLocalFrame(webViewImpl->page()->mainFrame()), document,
|
| - 0, FloatPoint(10, 9.5), FloatPoint(3.5, 2),
|
| - FloatSize(4, 4.5), 0, 0, String());
|
| - TouchList* touchList = TouchList::create();
|
| - touchList->append(touch);
|
| - TouchEvent* touchEvent = TouchEvent::create(
|
| - touchList, touchList, touchList, EventTypeNames::touchmove, domWindow,
|
| - PlatformEvent::NoModifiers, false, false, true, TimeTicks(),
|
| - TouchActionAuto, WebPointerProperties::PointerType::Touch);
|
| -
|
| - WebTouchEventBuilder webTouchBuilder(documentLayoutView, *touchEvent);
|
| - ASSERT_EQ(1u, webTouchBuilder.touchesLength);
|
| - EXPECT_EQ(10, webTouchBuilder.touches[0].screenPosition.x);
|
| - EXPECT_FLOAT_EQ(9.5, webTouchBuilder.touches[0].screenPosition.y);
|
| - EXPECT_FLOAT_EQ(3.5, webTouchBuilder.touches[0].position.x);
|
| - EXPECT_FLOAT_EQ(2, webTouchBuilder.touches[0].position.y);
|
| - EXPECT_FLOAT_EQ(4, webTouchBuilder.touches[0].radiusX);
|
| - EXPECT_FLOAT_EQ(4.5, webTouchBuilder.touches[0].radiusY);
|
| - EXPECT_EQ(WebInputEvent::EventNonBlocking, webTouchBuilder.dispatchType);
|
| - }
|
| }
|
|
|
| TEST(WebInputEventConversionTest, InputEventsTransform) {
|
| @@ -793,14 +572,16 @@ TEST(WebInputEventConversionTest, InputEventsTransform) {
|
| webTouchEvent.touches[0].radiusX = 30;
|
| webTouchEvent.touches[0].radiusY = 30;
|
|
|
| - PlatformTouchEventBuilder platformTouchBuilder(view, webTouchEvent);
|
| - EXPECT_FLOAT_EQ(100, platformTouchBuilder.touchPoints()[0].screenPos().x());
|
| - EXPECT_FLOAT_EQ(110, platformTouchBuilder.touchPoints()[0].screenPos().y());
|
| - EXPECT_FLOAT_EQ(30, platformTouchBuilder.touchPoints()[0].pos().x());
|
| - EXPECT_FLOAT_EQ(30, platformTouchBuilder.touchPoints()[0].pos().y());
|
| - EXPECT_FLOAT_EQ(10, platformTouchBuilder.touchPoints()[0].radius().width());
|
| - EXPECT_FLOAT_EQ(10,
|
| - platformTouchBuilder.touchPoints()[0].radius().height());
|
| + WebTouchEvent transformedEvent =
|
| + TransformWebTouchEvent(view, webTouchEvent);
|
| +
|
| + WebTouchPoint transformedPoint = transformedEvent.touchPointInRootFrame(0);
|
| + EXPECT_FLOAT_EQ(100, transformedPoint.screenPosition.x);
|
| + EXPECT_FLOAT_EQ(110, transformedPoint.screenPosition.y);
|
| + EXPECT_FLOAT_EQ(30, transformedPoint.position.x);
|
| + EXPECT_FLOAT_EQ(30, transformedPoint.position.y);
|
| + EXPECT_FLOAT_EQ(10, transformedPoint.radiusX);
|
| + EXPECT_FLOAT_EQ(10, transformedPoint.radiusY);
|
| }
|
|
|
| {
|
| @@ -825,23 +606,26 @@ TEST(WebInputEventConversionTest, InputEventsTransform) {
|
| events.push_back(&webTouchEvent1);
|
| events.push_back(&webTouchEvent2);
|
|
|
| - Vector<PlatformTouchEvent> coalescedevents =
|
| - createPlatformTouchEventVector(view, events);
|
| + Vector<WebTouchEvent> coalescedevents =
|
| + TransformWebTouchEventVector(view, events);
|
| EXPECT_EQ(events.size(), coalescedevents.size());
|
|
|
| - EXPECT_FLOAT_EQ(100, coalescedevents[0].touchPoints()[0].screenPos().x());
|
| - EXPECT_FLOAT_EQ(110, coalescedevents[0].touchPoints()[0].screenPos().y());
|
| - EXPECT_FLOAT_EQ(30, coalescedevents[0].touchPoints()[0].pos().x());
|
| - EXPECT_FLOAT_EQ(30, coalescedevents[0].touchPoints()[0].pos().y());
|
| - EXPECT_FLOAT_EQ(10, coalescedevents[0].touchPoints()[0].radius().width());
|
| - EXPECT_FLOAT_EQ(10, coalescedevents[0].touchPoints()[0].radius().height());
|
| -
|
| - EXPECT_FLOAT_EQ(130, coalescedevents[1].touchPoints()[0].screenPos().x());
|
| - EXPECT_FLOAT_EQ(110, coalescedevents[1].touchPoints()[0].screenPos().y());
|
| - EXPECT_FLOAT_EQ(40, coalescedevents[1].touchPoints()[0].pos().x());
|
| - EXPECT_FLOAT_EQ(30, coalescedevents[1].touchPoints()[0].pos().y());
|
| - EXPECT_FLOAT_EQ(20, coalescedevents[1].touchPoints()[0].radius().width());
|
| - EXPECT_FLOAT_EQ(10, coalescedevents[1].touchPoints()[0].radius().height());
|
| + WebTouchPoint transformedPoint =
|
| + coalescedevents[0].touchPointInRootFrame(0);
|
| + EXPECT_FLOAT_EQ(100, transformedPoint.screenPosition.x);
|
| + EXPECT_FLOAT_EQ(110, transformedPoint.screenPosition.y);
|
| + EXPECT_FLOAT_EQ(30, transformedPoint.position.x);
|
| + EXPECT_FLOAT_EQ(30, transformedPoint.position.y);
|
| + EXPECT_FLOAT_EQ(10, transformedPoint.radiusX);
|
| + EXPECT_FLOAT_EQ(10, transformedPoint.radiusY);
|
| +
|
| + transformedPoint = coalescedevents[1].touchPointInRootFrame(0);
|
| + EXPECT_FLOAT_EQ(130, transformedPoint.screenPosition.x);
|
| + EXPECT_FLOAT_EQ(110, transformedPoint.screenPosition.y);
|
| + EXPECT_FLOAT_EQ(40, transformedPoint.position.x);
|
| + EXPECT_FLOAT_EQ(30, transformedPoint.position.y);
|
| + EXPECT_FLOAT_EQ(20, transformedPoint.radiusX);
|
| + EXPECT_FLOAT_EQ(10, transformedPoint.radiusY);
|
| }
|
| }
|
|
|
| @@ -983,15 +767,14 @@ TEST(WebInputEventConversionTest, VisualViewportOffset) {
|
| EXPECT_FLOAT_EQ(10.6f, webTouchEvent.touches[0].position.x);
|
| EXPECT_FLOAT_EQ(10.4f, webTouchEvent.touches[0].position.y);
|
|
|
| - PlatformTouchEventBuilder platformTouchBuilder(view, webTouchEvent);
|
| - EXPECT_FLOAT_EQ(10.6f,
|
| - platformTouchBuilder.touchPoints()[0].screenPos().x());
|
| - EXPECT_FLOAT_EQ(10.4f,
|
| - platformTouchBuilder.touchPoints()[0].screenPos().y());
|
| - EXPECT_FLOAT_EQ(5.3f + visualOffset.x(),
|
| - platformTouchBuilder.touchPoints()[0].pos().x());
|
| - EXPECT_FLOAT_EQ(5.2f + visualOffset.y(),
|
| - platformTouchBuilder.touchPoints()[0].pos().y());
|
| + WebTouchEvent transformedTouchEvent =
|
| + TransformWebTouchEvent(view, webTouchEvent);
|
| + WebTouchPoint transformedPoint =
|
| + transformedTouchEvent.touchPointInRootFrame(0);
|
| + EXPECT_FLOAT_EQ(10.6f, transformedPoint.screenPosition.x);
|
| + EXPECT_FLOAT_EQ(10.4f, transformedPoint.screenPosition.y);
|
| + EXPECT_FLOAT_EQ(5.3f + visualOffset.x(), transformedPoint.position.x);
|
| + EXPECT_FLOAT_EQ(5.2f + visualOffset.y(), transformedPoint.position.y);
|
| }
|
| }
|
|
|
|
|