⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 119465 in webkit


Ignore:
Timestamp:
Jun 5, 2012, 12:38:56 AM (14 years ago)
Author:
abarth@webkit.org
Message:

EventHandler shouldn't dispatch fake mousemove events when scrolling on devices that don't have a mouse
https://bugs.webkit.org/show_bug.cgi?id=88270

Reviewed by James Robinson.

Source/WebCore:

This patch adds a setting analogous to deviceSupportsTouch to determine
whether the device supports mouse. We then don't dispatch fake mouse
events on devices that don't have a mouse in the first place.

Test: fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html

  • page/EventHandler.cpp:

(WebCore::EventHandler::fakeMouseMoveEventTimerFired):

  • page/Settings.cpp:

(WebCore::Settings::Settings):

  • page/Settings.h:

(WebCore::Settings::setDeviceSupportsMouse):
(WebCore::Settings::deviceSupportsMouse):
(Settings):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::InternalSettings):
(WebCore::InternalSettings::restoreTo):
(WebCore::InternalSettings::setDeviceSupportsMouse):
(WebCore):

  • testing/InternalSettings.h:

(InternalSettings):

  • testing/InternalSettings.idl:

Source/WebKit/chromium:

  • public/WebSettings.h:
  • src/WebSettingsImpl.cpp:

(WebKit::WebSettingsImpl::setDeviceSupportsMouse):
(WebKit):

  • src/WebSettingsImpl.h:

(WebSettingsImpl):

LayoutTests:

  • fast/events/touch/scroll-without-mouse-lacks-mousemove-events-expected.txt: Added.
  • fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html: Added.
Location:
trunk
Files:
2 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r119464 r119465  
     12012-06-05  Adam Barth  <abarth@webkit.org>
     2
     3        EventHandler shouldn't dispatch fake mousemove events when scrolling on devices that don't have a mouse
     4        https://bugs.webkit.org/show_bug.cgi?id=88270
     5
     6        Reviewed by James Robinson.
     7
     8        * fast/events/touch/scroll-without-mouse-lacks-mousemove-events-expected.txt: Added.
     9        * fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html: Added.
     10
    1112012-06-04  Filip Pizlo  <fpizlo@apple.com>
    212
  • trunk/Source/WebCore/ChangeLog

    r119458 r119465  
     12012-06-05  Adam Barth  <abarth@webkit.org>
     2
     3        EventHandler shouldn't dispatch fake mousemove events when scrolling on devices that don't have a mouse
     4        https://bugs.webkit.org/show_bug.cgi?id=88270
     5
     6        Reviewed by James Robinson.
     7
     8        This patch adds a setting analogous to deviceSupportsTouch to determine
     9        whether the device supports mouse. We then don't dispatch fake mouse
     10        events on devices that don't have a mouse in the first place.
     11
     12        Test: fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html
     13
     14        * page/EventHandler.cpp:
     15        (WebCore::EventHandler::fakeMouseMoveEventTimerFired):
     16        * page/Settings.cpp:
     17        (WebCore::Settings::Settings):
     18        * page/Settings.h:
     19        (WebCore::Settings::setDeviceSupportsMouse):
     20        (WebCore::Settings::deviceSupportsMouse):
     21        (Settings):
     22        * testing/InternalSettings.cpp:
     23        (WebCore::InternalSettings::InternalSettings):
     24        (WebCore::InternalSettings::restoreTo):
     25        (WebCore::InternalSettings::setDeviceSupportsMouse):
     26        (WebCore):
     27        * testing/InternalSettings.h:
     28        (InternalSettings):
     29        * testing/InternalSettings.idl:
     30
    1312012-06-04  Simon Fraser  <simon.fraser@apple.com>
    232
  • trunk/Source/WebCore/page/EventHandler.cpp

    r118890 r119465  
    26652665    ASSERT(!m_mousePressed);
    26662666
     2667    Settings* settings = m_frame->settings();
     2668    if (settings && !settings->deviceSupportsMouse())
     2669        return;
     2670
    26672671    FrameView* view = m_frame->view();
    26682672    if (!view)
  • trunk/Source/WebCore/page/Settings.cpp

    r118916 r119465  
    272272    , m_requestAnimationFrameEnabled(true)
    273273    , m_deviceSupportsTouch(false)
     274    , m_deviceSupportsMouse(true)
    274275    , m_needsDidFinishLoadOrderQuirk(false)
    275276    , m_fixedPositionCreatesStackingContext(false)
  • trunk/Source/WebCore/page/Settings.h

    r118916 r119465  
    578578        void setDeviceSupportsTouch(bool enabled) { m_deviceSupportsTouch = enabled; }
    579579        bool deviceSupportsTouch() const { return m_deviceSupportsTouch; }
     580
     581        void setDeviceSupportsMouse(bool enabled) { m_deviceSupportsMouse = enabled; }
     582        bool deviceSupportsMouse() const { return m_deviceSupportsMouse; }
    580583
    581584        void setNeedsDidFinishLoadOrderQuirk(bool needsQuirk) { m_needsDidFinishLoadOrderQuirk = needsQuirk; }
     
    764767        bool m_requestAnimationFrameEnabled : 1;
    765768        bool m_deviceSupportsTouch : 1;
     769        bool m_deviceSupportsMouse : 1;
    766770        bool m_needsDidFinishLoadOrderQuirk : 1;
    767771
  • trunk/Source/WebCore/testing/InternalSettings.cpp

    r119423 r119465  
    107107    , m_originalWindowFocusRestricted(settings()->windowFocusRestricted())
    108108    , m_originalDeviceSupportsTouch(settings()->deviceSupportsTouch())
     109    , m_originalDeviceSupportsMouse(settings()->deviceSupportsMouse())
    109110{
    110111}
     
    127128    settings->setWindowFocusRestricted(m_originalWindowFocusRestricted);
    128129    settings->setDeviceSupportsTouch(m_originalDeviceSupportsTouch);
     130    settings->setDeviceSupportsMouse(m_originalDeviceSupportsMouse);
    129131}
    130132
     
    267269    InternalSettingsGuardForSettings();
    268270    settings()->setDeviceSupportsTouch(enabled);
     271}
     272
     273void InternalSettings::setDeviceSupportsMouse(bool enabled, ExceptionCode& ec)
     274{
     275    InternalSettingsGuardForSettings();
     276    settings()->setDeviceSupportsMouse(enabled);
    269277}
    270278
  • trunk/Source/WebCore/testing/InternalSettings.h

    r119423 r119465  
    6565    void setTouchEventEmulationEnabled(bool enabled, ExceptionCode&);
    6666    void setDeviceSupportsTouch(bool enabled, ExceptionCode&);
     67    void setDeviceSupportsMouse(bool enabled, ExceptionCode&);
    6768    void setDeviceScaleFactor(float scaleFactor, ExceptionCode&);
    6869    void setShadowDOMEnabled(bool enabled, ExceptionCode&);
     
    108109    bool m_originalWindowFocusRestricted;
    109110    bool m_originalDeviceSupportsTouch;
     111    bool m_originalDeviceSupportsMouse;
    110112};
    111113
  • trunk/Source/WebCore/testing/InternalSettings.idl

    r119423 r119465  
    4343        void setTouchEventEmulationEnabled(in boolean enabled) raises(DOMException);
    4444        void setDeviceSupportsTouch(in boolean enabled) raises(DOMException);
     45        void setDeviceSupportsMouse(in boolean enabled) raises(DOMException);
    4546        void setDeviceScaleFactor(in float scaleFactor) raises(DOMException);
    4647        void setShadowDOMEnabled(in boolean enabled) raises(DOMException);
  • trunk/Source/WebKit/chromium/ChangeLog

    r119447 r119465  
     12012-06-05  Adam Barth  <abarth@webkit.org>
     2
     3        EventHandler shouldn't dispatch fake mousemove events when scrolling on devices that don't have a mouse
     4        https://bugs.webkit.org/show_bug.cgi?id=88270
     5
     6        Reviewed by James Robinson.
     7
     8        * public/WebSettings.h:
     9        * src/WebSettingsImpl.cpp:
     10        (WebKit::WebSettingsImpl::setDeviceSupportsMouse):
     11        (WebKit):
     12        * src/WebSettingsImpl.h:
     13        (WebSettingsImpl):
     14
    1152012-06-04  Dana Jansens  <danakj@chromium.org>
    216
  • trunk/Source/WebKit/chromium/public/WebSettings.h

    r119313 r119465  
    6969    virtual void setDefaultTextEncodingName(const WebString&) = 0;
    7070    virtual void setDeviceSupportsTouch(bool) = 0;
     71    virtual void setDeviceSupportsMouse(bool) = 0;
    7172    virtual void setJavaScriptEnabled(bool) = 0;
    7273    virtual void setWebSecurityEnabled(bool) = 0;
  • trunk/Source/WebKit/chromium/src/WebSettingsImpl.cpp

    r119313 r119465  
    130130}
    131131
     132void WebSettingsImpl::setDeviceSupportsMouse(bool deviceSupportsMouse)
     133{
     134    m_settings->setDeviceSupportsMouse(deviceSupportsMouse);
     135}
     136
    132137bool WebSettingsImpl::deviceSupportsTouch()
    133138{
  • trunk/Source/WebKit/chromium/src/WebSettingsImpl.h

    r119313 r119465  
    6161    virtual void setDefaultTextEncodingName(const WebString&);
    6262    virtual void setDeviceSupportsTouch(bool);
     63    virtual void setDeviceSupportsMouse(bool);
    6364    virtual bool deviceSupportsTouch();
    6465    virtual void setJavaScriptEnabled(bool);
Note: See TracChangeset for help on using the changeset viewer.