Changeset 66666 in webkit


Ignore:
Timestamp:
Sep 2, 2010 6:14:24 AM (14 years ago)
Author:
commit-queue@webkit.org
Message:

2010-09-02 Peter Kasting <pkasting@google.com>

Reviewed by Dimitri Glazkov.

Implement [continuous]MouseScrollBy() on Chromium, and partly on GTK.
https://bugs.webkit.org/show_bug.cgi?id=45073

  • platform/chromium/test_expectations.txt: Unskip tests that should now pass.
  • platform/gtk/scrollbars/overflow-scrollbar-horizontal-wheel-scroll.html: Convert mouseWheelTo() to mouseScrollBy().

2010-09-02 Peter Kasting <pkasting@google.com>

Reviewed by Dimitri Glazkov.

Implement [continuous]MouseScrollBy() on Chromium, and partly on GTK.
https://bugs.webkit.org/show_bug.cgi?id=45073

  • DumpRenderTree/chromium/EventSender.cpp: (EventSender::EventSender): (EventSender::mouseScrollBy): (EventSender::continuousMouseScrollBy): (EventSender::sendCurrentTouchEvent): (EventSender::handleMouseWheel):
  • DumpRenderTree/chromium/EventSender.h:
  • DumpRenderTree/gtk/EventSender.cpp: (mouseScrollByCallback): (continuousMouseScrollByCallback):
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r66663 r66666  
     12010-09-02  Peter Kasting  <pkasting@google.com>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Implement [continuous]MouseScrollBy() on Chromium, and partly on GTK.
     6        https://bugs.webkit.org/show_bug.cgi?id=45073
     7
     8        * platform/chromium/test_expectations.txt: Unskip tests that should now pass.
     9        * platform/gtk/scrollbars/overflow-scrollbar-horizontal-wheel-scroll.html: Convert mouseWheelTo() to mouseScrollBy().
     10
    1112010-09-01  Ilya Tikhonovsky  <loislo@chromium.org>
    212
  • trunk/LayoutTests/platform/chromium/test_expectations.txt

    r66663 r66666  
    24772477BUG38376 WIN : editing/deleting/5390681-2.html = IMAGE+TEXT
    24782478
    2479 // WebKit roll 56004 -> 56026
    2480 BUG38278 : fast/events/continuous-platform-wheelevent-in-scrolling-div.html = TIMEOUT
    2481 BUG38278 : fast/events/platform-wheelevent-in-scrolling-div.html = TIMEOUT
    2482 
    24832479// The touch targeting logic was recently changed.
    24842480BUG36415 : fast/events/touch/touch-target.html = TEXT
  • trunk/LayoutTests/platform/gtk/scrollbars/overflow-scrollbar-horizontal-wheel-scroll.html

    r48735 r66666  
    8989    var y = overflow.offsetTop + overflow.offsetHeight - 50;
    9090    eventSender.mouseMoveTo(x, y);
    91     eventSender.mouseWheelTo(0, 1);
     91    eventSender.mouseScrollBy(0, -1);
    9292
    9393    if (overflow.scrollTop != 40 || overflow.scrollLeft != 0)
     
    9898    var y = overflow.offsetTop + overflow.offsetHeight - 6;
    9999    eventSender.mouseMoveTo(x, y);
    100     eventSender.mouseWheelTo(0, 1);
     100    eventSender.mouseScrollBy(0, -1);
    101101
    102102    if (overflow.scrollTop != 40 || overflow.scrollLeft != 40)
     
    107107    var y = overflow.offsetTop + overflow.offsetHeight - 50;
    108108    eventSender.mouseMoveTo(x, y);
    109     eventSender.mouseWheelTo(0, 1);
     109    eventSender.mouseScrollBy(0, -1);
    110110
    111111    if (overflow.scrollTop != 80 || overflow.scrollLeft != 40)
     
    118118    var y = styled.offsetTop + styled.offsetHeight - 50;
    119119    eventSender.mouseMoveTo(x, y);
    120     eventSender.mouseWheelTo(0, 1);
     120    eventSender.mouseScrollBy(0, -1);
    121121
    122122    if (styled.scrollTop != 40 || styled.scrollLeft != 0)
     
    127127    var y = styled.offsetTop + styled.offsetHeight - 6;
    128128    eventSender.mouseMoveTo(x, y);
    129     eventSender.mouseWheelTo(0, 1);
     129    eventSender.mouseScrollBy(0, -1);
    130130
    131131    if (styled.scrollTop != 40 || styled.scrollLeft != 40)
     
    136136    var y = styled.offsetTop + styled.offsetHeight - 50;
    137137    eventSender.mouseMoveTo(x, y);
    138     eventSender.mouseWheelTo(0, 1);
     138    eventSender.mouseScrollBy(0, -1);
    139139
    140140    if (styled.scrollTop != 80 || styled.scrollLeft != 40)
  • trunk/WebKitTools/ChangeLog

    r66640 r66666  
     12010-09-02  Peter Kasting  <pkasting@google.com>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Implement [continuous]MouseScrollBy() on Chromium, and partly on GTK.
     6        https://bugs.webkit.org/show_bug.cgi?id=45073
     7
     8        * DumpRenderTree/chromium/EventSender.cpp:
     9        (EventSender::EventSender):
     10        (EventSender::mouseScrollBy):
     11        (EventSender::continuousMouseScrollBy):
     12        (EventSender::sendCurrentTouchEvent):
     13        (EventSender::handleMouseWheel):
     14        * DumpRenderTree/chromium/EventSender.h:
     15        * DumpRenderTree/gtk/EventSender.cpp:
     16        (mouseScrollByCallback):
     17        (continuousMouseScrollByCallback):
     18
    1192010-09-01  Dirk Pranke  <dpranke@chromium.org>
    220
  • trunk/WebKitTools/DumpRenderTree/chromium/EventSender.cpp

    r66351 r66666  
    256256    bindMethod("contextClick", &EventSender::contextClick);
    257257    bindMethod("mouseMoveTo", &EventSender::mouseMoveTo);
    258     bindMethod("mouseWheelTo", &EventSender::mouseWheelTo);
    259258    bindMethod("leapForward", &EventSender::leapForward);
    260259    bindMethod("keyDown", &EventSender::keyDown);
     
    267266    bindMethod("zoomPageIn", &EventSender::zoomPageIn);
    268267    bindMethod("zoomPageOut", &EventSender::zoomPageOut);
     268    bindMethod("mouseScrollBy", &EventSender::mouseScrollBy);
     269    bindMethod("continuousMouseScrollBy", &EventSender::continuousMouseScrollBy);
    269270    bindMethod("scheduleAsynchronousClick", &EventSender::scheduleAsynchronousClick);
    270271    bindMethod("beginDragWithFiles", &EventSender::beginDragWithFiles);
     
    471472        doMouseMove(event);
    472473    }
    473 }
    474 
    475 void EventSender::mouseWheelTo(const CppArgumentList& arguments, CppVariant* result)
    476 {
    477     result->setNull();
    478 
    479     if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumber())
    480         return;
    481 
    482     // Force a layout here just to make sure every position has been
    483     // determined before we send events (as well as all the other methods
    484     // that send an event do). The layout test calling this
    485     // (scrollbars/overflow-scrollbar-horizontal-wheel-scroll.html, only one
    486     // for now) does not rely on this though.
    487     webview()->layout();
    488 
    489     int horizontal = arguments[0].toInt32();
    490     int vertical = arguments[1].toInt32();
    491 
    492     WebMouseWheelEvent event;
    493     initMouseEvent(WebInputEvent::MouseWheel, pressedButton, lastMousePos, &event);
    494     event.wheelTicksX = static_cast<float>(horizontal);
    495     event.wheelTicksY = static_cast<float>(vertical);
    496     event.deltaX = -horizontal * scrollbarPixelsPerTick;
    497     event.deltaY = -vertical * scrollbarPixelsPerTick;
    498     webview()->handleInputEvent(event);
    499474}
    500475
     
    715690}
    716691
     692void EventSender::mouseScrollBy(const CppArgumentList& arguments, CppVariant* result)
     693{
     694    handleMouseWheel(arguments, result, false);
     695}
     696
     697void EventSender::continuousMouseScrollBy(const CppArgumentList& arguments, CppVariant* result)
     698{
     699    handleMouseWheel(arguments, result, true);
     700}
     701
    717702void EventSender::replaySavedEvents()
    718703{
     
    890875}
    891876
     877void EventSender::handleMouseWheel(const CppArgumentList& arguments, CppVariant* result, bool continuous)
     878{
     879    result->setNull();
     880
     881    if (arguments.size() < 2 || !arguments[0].isNumber() || !arguments[1].isNumber())
     882        return;
     883
     884    // Force a layout here just to make sure every position has been
     885    // determined before we send events (as well as all the other methods
     886    // that send an event do).
     887    webview()->layout();
     888
     889    int horizontal = arguments[0].toInt32();
     890    int vertical = arguments[1].toInt32();
     891
     892    WebMouseWheelEvent event;
     893    initMouseEvent(WebInputEvent::MouseWheel, pressedButton, lastMousePos, &event);
     894    event.wheelTicksX = static_cast<float>(horizontal);
     895    event.wheelTicksY = static_cast<float>(vertical);
     896    event.deltaX = event.wheelTicksX;
     897    event.deltaY = event.wheelTicksY;
     898    if (!continuous) {
     899        event.deltaX *= scrollbarPixelsPerTick;
     900        event.deltaY *= scrollbarPixelsPerTick;
     901    }
     902    webview()->handleInputEvent(event);
     903}
     904
    892905void EventSender::touchEnd(const CppArgumentList&, CppVariant* result)
    893906{
  • trunk/WebKitTools/DumpRenderTree/chromium/EventSender.h

    r59193 r66666  
    6767    void mouseUp(const CppArgumentList&, CppVariant*);
    6868    void mouseMoveTo(const CppArgumentList&, CppVariant*);
    69     void mouseWheelTo(const CppArgumentList&, CppVariant*);
    7069    void leapForward(const CppArgumentList&, CppVariant*);
    7170    void keyDown(const CppArgumentList&, CppVariant*);
     
    7574    void zoomPageIn(const CppArgumentList&, CppVariant*);
    7675    void zoomPageOut(const CppArgumentList&, CppVariant*);
     76    void mouseScrollBy(const CppArgumentList&, CppVariant*);
     77    void continuousMouseScrollBy(const CppArgumentList&, CppVariant*);
    7778    void scheduleAsynchronousClick(const CppArgumentList&, CppVariant*);
    7879    void beginDragWithFiles(const CppArgumentList&, CppVariant*);
     
    138139    void sendCurrentTouchEvent(const WebKit::WebInputEvent::Type);
    139140
     141    // Handle a request to send a wheel event.
     142    void handleMouseWheel(const CppArgumentList&, CppVariant*, bool continuous);
     143
    140144    ScopedRunnableMethodFactory<EventSender> m_methodFactory;
    141145
  • trunk/WebKitTools/DumpRenderTree/gtk/EventSender.cpp

    r66404 r66666  
    270270}
    271271
    272 static JSValueRef mouseWheelToCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     272static JSValueRef mouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
    273273{
    274274    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
     
    295295
    296296    if (horizontal < 0)
     297        event->scroll.direction = GDK_SCROLL_RIGHT;
     298    else if (horizontal > 0)
    297299        event->scroll.direction = GDK_SCROLL_LEFT;
    298     else if (horizontal > 0)
    299         event->scroll.direction = GDK_SCROLL_RIGHT;
    300300    else if (vertical < 0)
     301        event->scroll.direction = GDK_SCROLL_DOWN;
     302    else if (vertical > 0)
    301303        event->scroll.direction = GDK_SCROLL_UP;
    302     else if (vertical > 0)
    303         event->scroll.direction = GDK_SCROLL_DOWN;
    304304    else
    305305        g_assert_not_reached();
    306306
    307307    sendOrQueueEvent(event);
     308    return JSValueMakeUndefined(context);
     309}
     310
     311static JSValueRef continuousMouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
     312{
     313    // GTK doesn't support continuous scroll events.
    308314    return JSValueMakeUndefined(context);
    309315}
     
    597603
    598604static JSStaticFunction staticFunctions[] = {
    599     { "mouseWheelTo", mouseWheelToCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     605    { "mouseScrollBy", mouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
     606    { "continuousMouseScrollBy", continuousMouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    600607    { "contextClick", contextClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
    601608    { "mouseDown", mouseDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
Note: See TracChangeset for help on using the changeset viewer.