Home | History | Annotate | Download | only in tests
      1 /*
      2  * Copyright (C) 2012 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions are
      6  * met:
      7  *
      8  *     * Redistributions of source code must retain the above copyright
      9  * notice, this list of conditions and the following disclaimer.
     10  *     * Redistributions in binary form must reproduce the above
     11  * copyright notice, this list of conditions and the following disclaimer
     12  * in the documentation and/or other materials provided with the
     13  * distribution.
     14  *     * Neither the name of Google Inc. nor the names of its
     15  * contributors may be used to endorse or promote products derived from
     16  * this software without specific prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  */
     30 
     31 #include "config.h"
     32 
     33 #include "WebInputEventConversion.h"
     34 
     35 #include <gtest/gtest.h>
     36 #include "FrameTestHelpers.h"
     37 #include "URLTestHelpers.h"
     38 #include "WebFrame.h"
     39 #include "WebSettings.h"
     40 #include "WebViewImpl.h"
     41 #include "core/events/GestureEvent.h"
     42 #include "core/events/KeyboardEvent.h"
     43 #include "core/events/MouseEvent.h"
     44 #include "core/dom/Touch.h"
     45 #include "core/events/TouchEvent.h"
     46 #include "core/dom/TouchList.h"
     47 #include "core/frame/Frame.h"
     48 #include "core/frame/FrameView.h"
     49 
     50 using namespace blink;
     51 using namespace WebCore;
     52 
     53 namespace {
     54 
     55 PassRefPtr<WebCore::KeyboardEvent> createKeyboardEventWithLocation(WebCore::KeyboardEvent::KeyLocationCode location)
     56 {
     57     return WebCore::KeyboardEvent::create("keydown", true, true, 0, "", location, false, false, false, false, false);
     58 }
     59 
     60 int getModifiersForKeyLocationCode(WebCore::KeyboardEvent::KeyLocationCode location)
     61 {
     62     RefPtr<WebCore::KeyboardEvent> event = createKeyboardEventWithLocation(location);
     63     blink::WebKeyboardEventBuilder convertedEvent(*event);
     64     return convertedEvent.modifiers;
     65 }
     66 
     67 TEST(WebInputEventConversionTest, WebKeyboardEventBuilder)
     68 {
     69     // Test key location conversion.
     70     int modifiers = getModifiersForKeyLocationCode(WebCore::KeyboardEvent::DOM_KEY_LOCATION_STANDARD);
     71     EXPECT_FALSE(modifiers & WebInputEvent::IsKeyPad || modifiers & WebInputEvent::IsLeft || modifiers & WebInputEvent::IsRight);
     72 
     73     modifiers = getModifiersForKeyLocationCode(WebCore::KeyboardEvent::DOM_KEY_LOCATION_LEFT);
     74     EXPECT_TRUE(modifiers & WebInputEvent::IsLeft);
     75     EXPECT_FALSE(modifiers & WebInputEvent::IsKeyPad || modifiers & WebInputEvent::IsRight);
     76 
     77     modifiers = getModifiersForKeyLocationCode(WebCore::KeyboardEvent::DOM_KEY_LOCATION_RIGHT);
     78     EXPECT_TRUE(modifiers & WebInputEvent::IsRight);
     79     EXPECT_FALSE(modifiers & WebInputEvent::IsKeyPad || modifiers & WebInputEvent::IsLeft);
     80 
     81     modifiers = getModifiersForKeyLocationCode(WebCore::KeyboardEvent::DOM_KEY_LOCATION_NUMPAD);
     82     EXPECT_TRUE(modifiers & WebInputEvent::IsKeyPad);
     83     EXPECT_FALSE(modifiers & WebInputEvent::IsLeft || modifiers & WebInputEvent::IsRight);
     84 }
     85 
     86 TEST(WebInputEventConversionTest, WebTouchEventBuilder)
     87 {
     88     RefPtr<WebCore::TouchEvent> event = WebCore::TouchEvent::create();
     89     WebMouseEventBuilder mouse(0, 0, *event);
     90     EXPECT_EQ(WebInputEvent::Undefined, mouse.type);
     91 }
     92 
     93 TEST(WebInputEventConversionTest, InputEventsScaling)
     94 {
     95     const std::string baseURL("http://www.test.com/");
     96     const std::string fileName("fixed_layout.html");
     97 
     98     URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL.c_str()), WebString::fromUTF8("fixed_layout.html"));
     99     FrameTestHelpers::WebViewHelper webViewHelper;
    100     WebViewImpl* webViewImpl = toWebViewImpl(webViewHelper.initializeAndLoad(baseURL + fileName, true));
    101     webViewImpl->settings()->setViewportEnabled(true);
    102     int pageWidth = 640;
    103     int pageHeight = 480;
    104     webViewImpl->resize(WebSize(pageWidth, pageHeight));
    105     webViewImpl->layout();
    106 
    107     webViewImpl->setPageScaleFactor(2, WebPoint());
    108 
    109     FrameView* view = webViewImpl->page()->mainFrame()->view();
    110     RefPtr<Document> document = webViewImpl->page()->mainFrame()->document();
    111     DOMWindow* domWindow = webViewImpl->page()->mainFrame()->document()->domWindow();
    112     RenderObject* docRenderer = webViewImpl->page()->mainFrame()->document()->renderer();
    113 
    114     {
    115         WebMouseEvent webMouseEvent;
    116         webMouseEvent.type = WebInputEvent::MouseMove;
    117         webMouseEvent.x = 10;
    118         webMouseEvent.y = 10;
    119         webMouseEvent.windowX = 10;
    120         webMouseEvent.windowY = 10;
    121         webMouseEvent.globalX = 10;
    122         webMouseEvent.globalY = 10;
    123         webMouseEvent.movementX = 10;
    124         webMouseEvent.movementY = 10;
    125 
    126         PlatformMouseEventBuilder platformMouseBuilder(view, webMouseEvent);
    127         EXPECT_EQ(5, platformMouseBuilder.position().x());
    128         EXPECT_EQ(5, platformMouseBuilder.position().y());
    129         EXPECT_EQ(10, platformMouseBuilder.globalPosition().x());
    130         EXPECT_EQ(10, platformMouseBuilder.globalPosition().y());
    131         EXPECT_EQ(5, platformMouseBuilder.movementDelta().x());
    132         EXPECT_EQ(5, platformMouseBuilder.movementDelta().y());
    133     }
    134 
    135     {
    136         WebGestureEvent webGestureEvent;
    137         webGestureEvent.type = WebInputEvent::GestureScrollUpdate;
    138         webGestureEvent.x = 10;
    139         webGestureEvent.y = 10;
    140         webGestureEvent.globalX = 10;
    141         webGestureEvent.globalY = 10;
    142         webGestureEvent.data.scrollUpdate.deltaX = 10;
    143         webGestureEvent.data.scrollUpdate.deltaY = 10;
    144 
    145         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    146         EXPECT_EQ(5, platformGestureBuilder.position().x());
    147         EXPECT_EQ(5, platformGestureBuilder.position().y());
    148         EXPECT_EQ(10, platformGestureBuilder.globalPosition().x());
    149         EXPECT_EQ(10, platformGestureBuilder.globalPosition().y());
    150         EXPECT_EQ(5, platformGestureBuilder.deltaX());
    151         EXPECT_EQ(5, platformGestureBuilder.deltaY());
    152     }
    153 
    154     {
    155         WebGestureEvent webGestureEvent;
    156         webGestureEvent.type = WebInputEvent::GestureTap;
    157         webGestureEvent.data.tap.width = 10;
    158         webGestureEvent.data.tap.height = 10;
    159 
    160         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    161         EXPECT_EQ(5, platformGestureBuilder.area().width());
    162         EXPECT_EQ(5, platformGestureBuilder.area().height());
    163     }
    164 
    165     {
    166         WebGestureEvent webGestureEvent;
    167         webGestureEvent.type = WebInputEvent::GestureTapUnconfirmed;
    168         webGestureEvent.data.tap.width = 10;
    169         webGestureEvent.data.tap.height = 10;
    170 
    171         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    172         EXPECT_EQ(5, platformGestureBuilder.area().width());
    173         EXPECT_EQ(5, platformGestureBuilder.area().height());
    174     }
    175 
    176     {
    177         WebGestureEvent webGestureEvent;
    178         webGestureEvent.type = WebInputEvent::GestureTapDown;
    179         webGestureEvent.data.tapDown.width = 10;
    180         webGestureEvent.data.tapDown.height = 10;
    181 
    182         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    183         EXPECT_EQ(5, platformGestureBuilder.area().width());
    184         EXPECT_EQ(5, platformGestureBuilder.area().height());
    185     }
    186 
    187     {
    188         WebGestureEvent webGestureEvent;
    189         webGestureEvent.type = WebInputEvent::GestureShowPress;
    190         webGestureEvent.data.showPress.width = 10;
    191         webGestureEvent.data.showPress.height = 10;
    192 
    193         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    194         EXPECT_EQ(5, platformGestureBuilder.area().width());
    195         EXPECT_EQ(5, platformGestureBuilder.area().height());
    196     }
    197 
    198     {
    199         WebGestureEvent webGestureEvent;
    200         webGestureEvent.type = WebInputEvent::GestureLongPress;
    201         webGestureEvent.data.longPress.width = 10;
    202         webGestureEvent.data.longPress.height = 10;
    203 
    204         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    205         EXPECT_EQ(5, platformGestureBuilder.area().width());
    206         EXPECT_EQ(5, platformGestureBuilder.area().height());
    207     }
    208 
    209     {
    210         WebGestureEvent webGestureEvent;
    211         webGestureEvent.type = WebInputEvent::GestureTwoFingerTap;
    212         webGestureEvent.data.twoFingerTap.firstFingerWidth = 10;
    213         webGestureEvent.data.twoFingerTap.firstFingerHeight = 10;
    214 
    215         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    216         EXPECT_EQ(5, platformGestureBuilder.area().width());
    217         EXPECT_EQ(5, platformGestureBuilder.area().height());
    218     }
    219 
    220     {
    221         WebTouchEvent webTouchEvent;
    222         webTouchEvent.type = WebInputEvent::TouchMove;
    223         webTouchEvent.touchesLength = 1;
    224         webTouchEvent.touches[0].state = WebTouchPoint::StateMoved;
    225         webTouchEvent.touches[0].screenPosition.x = 10;
    226         webTouchEvent.touches[0].screenPosition.y = 10;
    227         webTouchEvent.touches[0].position.x = 10;
    228         webTouchEvent.touches[0].position.y = 10;
    229         webTouchEvent.touches[0].radiusX = 10;
    230         webTouchEvent.touches[0].radiusY = 10;
    231 
    232         PlatformTouchEventBuilder platformTouchBuilder(view, webTouchEvent);
    233         EXPECT_EQ(10, platformTouchBuilder.touchPoints()[0].screenPos().x());
    234         EXPECT_EQ(10, platformTouchBuilder.touchPoints()[0].screenPos().y());
    235         EXPECT_EQ(5, platformTouchBuilder.touchPoints()[0].pos().x());
    236         EXPECT_EQ(5, platformTouchBuilder.touchPoints()[0].pos().y());
    237         EXPECT_EQ(5, platformTouchBuilder.touchPoints()[0].radiusX());
    238         EXPECT_EQ(5, platformTouchBuilder.touchPoints()[0].radiusY());
    239     }
    240 
    241     // Reverse builders should *not* go back to physical pixels, as they are used for plugins
    242     // which expect CSS pixel coordinates.
    243     {
    244         PlatformMouseEvent platformMouseEvent(IntPoint(10, 10), IntPoint(10, 10), LeftButton, PlatformEvent::MouseMoved, 1, false, false, false, false, 0);
    245         RefPtr<MouseEvent> mouseEvent = MouseEvent::create(WebCore::EventTypeNames::mousemove, domWindow, platformMouseEvent, 0, document);
    246         WebMouseEventBuilder webMouseBuilder(view, docRenderer, *mouseEvent);
    247 
    248         EXPECT_EQ(10, webMouseBuilder.x);
    249         EXPECT_EQ(10, webMouseBuilder.y);
    250         EXPECT_EQ(10, webMouseBuilder.globalX);
    251         EXPECT_EQ(10, webMouseBuilder.globalY);
    252         EXPECT_EQ(10, webMouseBuilder.windowX);
    253         EXPECT_EQ(10, webMouseBuilder.windowY);
    254     }
    255 
    256     {
    257         PlatformMouseEvent platformMouseEvent(IntPoint(10, 10), IntPoint(10, 10), NoButton, PlatformEvent::MouseMoved, 1, false, false, false, false, 0);
    258         RefPtr<MouseEvent> mouseEvent = MouseEvent::create(WebCore::EventTypeNames::mousemove, domWindow, platformMouseEvent, 0, document);
    259         WebMouseEventBuilder webMouseBuilder(view, docRenderer, *mouseEvent);
    260         EXPECT_EQ(WebMouseEvent::ButtonNone, webMouseBuilder.button);
    261     }
    262 
    263     {
    264         PlatformGestureEvent platformGestureEvent(PlatformEvent::GestureScrollUpdate, IntPoint(10, 10), IntPoint(10, 10), IntSize(10, 10), 0, false, false, false, false, 10, 10, 10, 10);
    265         RefPtr<GestureEvent> gestureEvent = GestureEvent::create(domWindow, platformGestureEvent);
    266         WebGestureEventBuilder webGestureBuilder(view, docRenderer, *gestureEvent);
    267 
    268         EXPECT_EQ(10, webGestureBuilder.x);
    269         EXPECT_EQ(10, webGestureBuilder.y);
    270         EXPECT_EQ(10, webGestureBuilder.globalX);
    271         EXPECT_EQ(10, webGestureBuilder.globalY);
    272         EXPECT_EQ(10, webGestureBuilder.data.scrollUpdate.deltaX);
    273         EXPECT_EQ(10, webGestureBuilder.data.scrollUpdate.deltaY);
    274     }
    275 
    276     {
    277         RefPtr<Touch> touch = Touch::create(webViewImpl->page()->mainFrame(), document.get(), 0, 10, 10, 10, 10, 10, 10, 0, 0);
    278         RefPtr<TouchList> touchList = TouchList::create();
    279         touchList->append(touch);
    280         RefPtr<TouchEvent> touchEvent = TouchEvent::create(touchList.get(), touchList.get(), touchList.get(), WebCore::EventTypeNames::touchmove, domWindow, 10, 10, 10, 10, false, false, false, false);
    281 
    282         WebTouchEventBuilder webTouchBuilder(view, docRenderer, *touchEvent);
    283         ASSERT_EQ(1u, webTouchBuilder.touchesLength);
    284         EXPECT_EQ(10, webTouchBuilder.touches[0].screenPosition.x);
    285         EXPECT_EQ(10, webTouchBuilder.touches[0].screenPosition.y);
    286         EXPECT_EQ(10, webTouchBuilder.touches[0].position.x);
    287         EXPECT_EQ(10, webTouchBuilder.touches[0].position.y);
    288         EXPECT_EQ(10, webTouchBuilder.touches[0].radiusX);
    289         EXPECT_EQ(10, webTouchBuilder.touches[0].radiusY);
    290     }
    291 }
    292 
    293 TEST(WebInputEventConversionTest, InputEventsTransform)
    294 {
    295     const std::string baseURL("http://www.test2.com/");
    296     const std::string fileName("fixed_layout.html");
    297 
    298     URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL.c_str()), WebString::fromUTF8("fixed_layout.html"));
    299     FrameTestHelpers::WebViewHelper webViewHelper;
    300     WebViewImpl* webViewImpl = toWebViewImpl(webViewHelper.initializeAndLoad(baseURL + fileName, true));
    301     webViewImpl->settings()->setViewportEnabled(true);
    302     int pageWidth = 640;
    303     int pageHeight = 480;
    304     webViewImpl->resize(WebSize(pageWidth, pageHeight));
    305     webViewImpl->layout();
    306 
    307     webViewImpl->setPageScaleFactor(2, WebPoint());
    308     webViewImpl->setRootLayerTransform(WebSize(10, 20), 1.5);
    309 
    310     FrameView* view = webViewImpl->page()->mainFrame()->view();
    311     RefPtr<Document> document = webViewImpl->page()->mainFrame()->document();
    312 
    313     {
    314         WebMouseEvent webMouseEvent;
    315         webMouseEvent.type = WebInputEvent::MouseMove;
    316         webMouseEvent.x = 100;
    317         webMouseEvent.y = 110;
    318         webMouseEvent.windowX = 100;
    319         webMouseEvent.windowY = 110;
    320         webMouseEvent.globalX = 100;
    321         webMouseEvent.globalY = 110;
    322         webMouseEvent.movementX = 60;
    323         webMouseEvent.movementY = 60;
    324 
    325         PlatformMouseEventBuilder platformMouseBuilder(view, webMouseEvent);
    326         EXPECT_EQ(30, platformMouseBuilder.position().x());
    327         EXPECT_EQ(30, platformMouseBuilder.position().y());
    328         EXPECT_EQ(100, platformMouseBuilder.globalPosition().x());
    329         EXPECT_EQ(110, platformMouseBuilder.globalPosition().y());
    330         EXPECT_EQ(20, platformMouseBuilder.movementDelta().x());
    331         EXPECT_EQ(20, platformMouseBuilder.movementDelta().y());
    332     }
    333 
    334     {
    335         WebGestureEvent webGestureEvent;
    336         webGestureEvent.type = WebInputEvent::GestureScrollUpdate;
    337         webGestureEvent.x = 100;
    338         webGestureEvent.y = 110;
    339         webGestureEvent.globalX = 100;
    340         webGestureEvent.globalY = 110;
    341         webGestureEvent.data.scrollUpdate.deltaX = 60;
    342         webGestureEvent.data.scrollUpdate.deltaY = 60;
    343 
    344         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    345         EXPECT_EQ(30, platformGestureBuilder.position().x());
    346         EXPECT_EQ(30, platformGestureBuilder.position().y());
    347         EXPECT_EQ(100, platformGestureBuilder.globalPosition().x());
    348         EXPECT_EQ(110, platformGestureBuilder.globalPosition().y());
    349         EXPECT_EQ(20, platformGestureBuilder.deltaX());
    350         EXPECT_EQ(20, platformGestureBuilder.deltaY());
    351     }
    352 
    353     {
    354         WebGestureEvent webGestureEvent;
    355         webGestureEvent.type = WebInputEvent::GestureTap;
    356         webGestureEvent.data.tap.width = 30;
    357         webGestureEvent.data.tap.height = 30;
    358 
    359         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    360         EXPECT_EQ(10, platformGestureBuilder.area().width());
    361         EXPECT_EQ(10, platformGestureBuilder.area().height());
    362     }
    363 
    364     {
    365         WebGestureEvent webGestureEvent;
    366         webGestureEvent.type = WebInputEvent::GestureTapUnconfirmed;
    367         webGestureEvent.data.tap.width = 30;
    368         webGestureEvent.data.tap.height = 30;
    369 
    370         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    371         EXPECT_EQ(10, platformGestureBuilder.area().width());
    372         EXPECT_EQ(10, platformGestureBuilder.area().height());
    373     }
    374 
    375     {
    376         WebGestureEvent webGestureEvent;
    377         webGestureEvent.type = WebInputEvent::GestureTapDown;
    378         webGestureEvent.data.tapDown.width = 30;
    379         webGestureEvent.data.tapDown.height = 30;
    380 
    381         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    382         EXPECT_EQ(10, platformGestureBuilder.area().width());
    383         EXPECT_EQ(10, platformGestureBuilder.area().height());
    384     }
    385 
    386     {
    387         WebGestureEvent webGestureEvent;
    388         webGestureEvent.type = WebInputEvent::GestureShowPress;
    389         webGestureEvent.data.showPress.width = 30;
    390         webGestureEvent.data.showPress.height = 30;
    391 
    392         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    393         EXPECT_EQ(10, platformGestureBuilder.area().width());
    394         EXPECT_EQ(10, platformGestureBuilder.area().height());
    395     }
    396 
    397     {
    398         WebGestureEvent webGestureEvent;
    399         webGestureEvent.type = WebInputEvent::GestureLongPress;
    400         webGestureEvent.data.longPress.width = 30;
    401         webGestureEvent.data.longPress.height = 30;
    402 
    403         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    404         EXPECT_EQ(10, platformGestureBuilder.area().width());
    405         EXPECT_EQ(10, platformGestureBuilder.area().height());
    406     }
    407 
    408     {
    409         WebGestureEvent webGestureEvent;
    410         webGestureEvent.type = WebInputEvent::GestureTwoFingerTap;
    411         webGestureEvent.data.twoFingerTap.firstFingerWidth = 30;
    412         webGestureEvent.data.twoFingerTap.firstFingerHeight = 30;
    413 
    414         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    415         EXPECT_EQ(10, platformGestureBuilder.area().width());
    416         EXPECT_EQ(10, platformGestureBuilder.area().height());
    417     }
    418 
    419     {
    420         WebTouchEvent webTouchEvent;
    421         webTouchEvent.type = WebInputEvent::TouchMove;
    422         webTouchEvent.touchesLength = 1;
    423         webTouchEvent.touches[0].state = WebTouchPoint::StateMoved;
    424         webTouchEvent.touches[0].screenPosition.x = 100;
    425         webTouchEvent.touches[0].screenPosition.y = 110;
    426         webTouchEvent.touches[0].position.x = 100;
    427         webTouchEvent.touches[0].position.y = 110;
    428         webTouchEvent.touches[0].radiusX = 30;
    429         webTouchEvent.touches[0].radiusY = 30;
    430 
    431         PlatformTouchEventBuilder platformTouchBuilder(view, webTouchEvent);
    432         EXPECT_EQ(100, platformTouchBuilder.touchPoints()[0].screenPos().x());
    433         EXPECT_EQ(110, platformTouchBuilder.touchPoints()[0].screenPos().y());
    434         EXPECT_EQ(30, platformTouchBuilder.touchPoints()[0].pos().x());
    435         EXPECT_EQ(30, platformTouchBuilder.touchPoints()[0].pos().y());
    436         EXPECT_EQ(10, platformTouchBuilder.touchPoints()[0].radiusX());
    437         EXPECT_EQ(10, platformTouchBuilder.touchPoints()[0].radiusY());
    438     }
    439 }
    440 
    441 TEST(WebInputEventConversionTest, InputEventsConversions)
    442 {
    443     const std::string baseURL("http://www.test3.com/");
    444     const std::string fileName("fixed_layout.html");
    445 
    446     URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(baseURL.c_str()), WebString::fromUTF8("fixed_layout.html"));
    447     FrameTestHelpers::WebViewHelper webViewHelper;
    448     WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(baseURL + fileName, true);
    449     int pageWidth = 640;
    450     int pageHeight = 480;
    451     webViewImpl->resize(WebSize(pageWidth, pageHeight));
    452     webViewImpl->layout();
    453 
    454     FrameView* view = webViewImpl->page()->mainFrame()->view();
    455     RefPtr<Document> document = webViewImpl->page()->mainFrame()->document();
    456     DOMWindow* domWindow = webViewImpl->page()->mainFrame()->document()->domWindow();
    457     RenderObject* docRenderer = webViewImpl->page()->mainFrame()->document()->renderer();
    458 
    459     {
    460         WebGestureEvent webGestureEvent;
    461         webGestureEvent.type = WebInputEvent::GestureTap;
    462         webGestureEvent.x = 10;
    463         webGestureEvent.y = 10;
    464         webGestureEvent.globalX = 10;
    465         webGestureEvent.globalY = 10;
    466         webGestureEvent.data.tap.tapCount = 1;
    467         webGestureEvent.data.tap.width = 10;
    468         webGestureEvent.data.tap.height = 10;
    469 
    470         PlatformGestureEventBuilder platformGestureBuilder(view, webGestureEvent);
    471         EXPECT_EQ(10, platformGestureBuilder.position().x());
    472         EXPECT_EQ(10, platformGestureBuilder.position().y());
    473         EXPECT_EQ(10, platformGestureBuilder.globalPosition().x());
    474         EXPECT_EQ(10, platformGestureBuilder.globalPosition().y());
    475         EXPECT_EQ(1, platformGestureBuilder.tapCount());
    476 
    477         RefPtr<WebCore::GestureEvent> coreGestureEvent = WebCore::GestureEvent::create(domWindow, platformGestureBuilder);
    478         WebGestureEventBuilder recreatedWebGestureEvent(view, docRenderer, *coreGestureEvent);
    479         EXPECT_EQ(webGestureEvent.type, recreatedWebGestureEvent.type);
    480         EXPECT_EQ(webGestureEvent.x, recreatedWebGestureEvent.x);
    481         EXPECT_EQ(webGestureEvent.y, recreatedWebGestureEvent.y);
    482         EXPECT_EQ(webGestureEvent.globalX, recreatedWebGestureEvent.globalX);
    483         EXPECT_EQ(webGestureEvent.globalY, recreatedWebGestureEvent.globalY);
    484         EXPECT_EQ(webGestureEvent.data.tap.tapCount, recreatedWebGestureEvent.data.tap.tapCount);
    485     }
    486 }
    487 
    488 } // anonymous namespace
    489