Changeset 181907 in webkit


Ignore:
Timestamp:
Mar 24, 2015, 2:31:28 PM (10 years ago)
Author:
Beth Dakin
Message:

Add events related to force click gesture
https://bugs.webkit.org/show_bug.cgi?id=142836
-and corresponding-
rdar://problem/20210239

Reviewed by Dean Jackson.

Source/WebCore:

This patch adds six new events for the force click gesture:

webkitmouseforcewillbegin -> Event is sent just before mousedown to indicate that
force can be perceived if the user presses any harder. The author should prevent
default on this event to both prevent the user agent’s default force click
features and to receive the other 5 events.

webkitmouseforcechanged -> This event fires whenever force changes between the
mousedown and mouseup. It is a new type of mouse event that includes a force
variable which is a normalized number between 0 (corresponds to click) and 1
(corresponds to force click). In this patch, I have only added code to send this
event between mousedown and mouseforcedown, but as a followup patch, we plan to
send it through mouseup.

webkitmouseforcecancelled -> If the user releases their finger from the trackpad
after pressing hard enough to send webkitmouseforcewillbegin events but not hard
enough to force click, this event will be sent to indicate that the user bailed
out on the gesture.

webkitmouseforcedown -> The down part of the force click.

webkitmouseforceup -> The up part of the force click. This event is added in this
patch, but does not yet fire. That is work for a follow-up patch.

webkitmouseforceclick -> The equivalent of the click event for the force click.
Should fire just after webkitmouseforceup. This event is added in this patch, but
does not yet fire. That is work for a follow-up patch.

Add new files for WebKitMouseForceEvent to build systems.

  • DerivedSources.cpp:
  • DerivedSources.make:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCore.xcodeproj/project.pbxproj:

Plumbing for new events.

  • dom/Document.idl:

Code to dispatch the new events. Currently the code that calls these functions is
in WebKit2.

  • dom/Element.cpp:

(WebCore::Element::dispatchMouseForceWillBegin):
(WebCore::Element::dispatchMouseForceChanged):
(WebCore::Element::dispatchMouseForceDown):
(WebCore::Element::dispatchMouseForceUp):
(WebCore::Element::dispatchMouseForceClick):
(WebCore::Element::dispatchMouseForceCancelled):

  • dom/Element.h:

More plumbing.

  • dom/Element.idl:
  • dom/EventNames.h:
  • dom/EventNames.in:

Our new type of mouse event that includes force.

  • dom/WebKitMouseForceEvent.cpp: Added.

(WebCore::WebKitMouseForceEventInit::WebKitMouseForceEventInit):
(WebCore::WebKitMouseForceEvent::WebKitMouseForceEvent):
(WebCore::WebKitMouseForceEvent::~WebKitMouseForceEvent):
(WebCore::WebKitMouseForceEvent::eventInterface):

  • dom/WebKitMouseForceEvent.h: Added.
  • dom/WebKitMouseForceEvent.idl: Added.

More plumbing.

  • html/HTMLAttributeNames.in:
  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):

  • html/HTMLBodyElement.idl:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::createEventHandlerNameMap):

  • page/DOMWindow.idl:
  • page/EventHandler.h:

(WebCore::EventHandler::lastMouseDownEvent):

Source/WebKit2:

ActionMenuHitTestResult has a new bool indicating whether to not the HitTestResult
will prevent default.

  • Shared/mac/ActionMenuHitTestResult.h:
  • Shared/mac/ActionMenuHitTestResult.mm:

(WebKit::ActionMenuHitTestResult::encode):
(WebKit::ActionMenuHitTestResult::decode):

Send immediateActionDidUpdate and the normalized force over the the WebProcess.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::immediateActionDidUpdate):

  • UIProcess/WebPageProxy.h:

We need a dummy animation controller when web content is overriding the default
behavior.

  • UIProcess/mac/WKImmediateActionController.mm:

Send along the update information.
(-[WKImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):

Use the dummy animation controller if default has been prevented.
(-[WKImmediateActionController _defaultAnimationController]):
(-[WKImmediateActionController _updateImmediateActionItem]):

Keep track of whether m_lastActionMenuHitTes prevented the default immediate
action behavior.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Call dispatchMouseForceMayBegin() at hit test time.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):

Call dispatchMouseForceChanged() if appropriate.
(WebKit::WebPage::immediateActionDidUpdate):

Call dispatchMouseForceCancelled() if appropriate.
(WebKit::WebPage::immediateActionDidCancel):

Call dispatchMouseForceDown() if appropriate.
(WebKit::WebPage::immediateActionDidComplete):

Source/WTF:

New enable flag for the events.

  • wtf/FeatureDefines.h:

LayoutTests:

  • fast/dom/event-handler-attributes-expected.txt:
  • fast/dom/event-handler-attributes.html:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
Location:
trunk
Files:
3 added
37 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r181904 r181907  
     12015-03-24  Beth Dakin  <bdakin@apple.com>
     2
     3        Add events related to force click gesture
     4        https://bugs.webkit.org/show_bug.cgi?id=142836
     5        -and corresponding-
     6        rdar://problem/20210239
     7
     8        Reviewed by Dean Jackson.
     9
     10        * fast/dom/event-handler-attributes-expected.txt:
     11        * fast/dom/event-handler-attributes.html:
     12        * platform/mac/js/dom/global-constructors-attributes-expected.txt:
     13
    1142015-03-24  Chris Dumez  <cdumez@apple.com>
    215
  • trunk/LayoutTests/fast/dom/event-handler-attributes-expected.txt

    r181507 r181907  
    8989PASS testScriptAttribute(window, "webkitanimationstart") is "window"
    9090PASS testScriptAttribute(window, "webkitdeviceproximity") is "window"
     91PASS testScriptAttribute(window, "webkitmouseforcecancelled") is "window"
     92PASS testScriptAttribute(window, "webkitmouseforcechanged") is "window"
     93PASS testScriptAttribute(window, "webkitmouseforceclick") is "window"
     94PASS testScriptAttribute(window, "webkitmouseforcedown") is "window"
     95PASS testScriptAttribute(window, "webkitmouseforceup") is "window"
     96PASS testScriptAttribute(window, "webkitmouseforcewillbegin") is "window"
    9197PASS testScriptAttribute(window, "webkittransitionend") is "window"
    9298PASS testScriptAttribute(window, "webkitwillrevealbottom") is "window"
     
    178184PASS testScriptAttribute(document, "touchmove") is "document"
    179185PASS testScriptAttribute(document, "touchstart") is "document"
     186PASS testScriptAttribute(document, "webkitmouseforcecancelled") is "document"
     187PASS testScriptAttribute(document, "webkitmouseforcechanged") is "document"
     188PASS testScriptAttribute(document, "webkitmouseforceclick") is "document"
     189PASS testScriptAttribute(document, "webkitmouseforcedown") is "document"
     190PASS testScriptAttribute(document, "webkitmouseforceup") is "document"
     191PASS testScriptAttribute(document, "webkitmouseforcewillbegin") is "document"
    180192PASS testScriptAttribute(document, "webkitfullscreenchange") is "document"
    181193PASS testScriptAttribute(document, "webkitfullscreenerror") is "document"
     
    336348PASS testElementAttribute(element, "webkitkeyerror") is "target"
    337349PASS testElementAttribute(element, "webkitkeymessage") is "target"
     350PASS testElementAttribute(element, "webkitmouseforcecancelled") is "target"
     351PASS testElementAttribute(element, "webkitmouseforcechanged") is "target"
     352PASS testElementAttribute(element, "webkitmouseforceclick") is "target"
     353PASS testElementAttribute(element, "webkitmouseforcedown") is "target"
     354PASS testElementAttribute(element, "webkitmouseforceup") is "target"
     355PASS testElementAttribute(element, "webkitmouseforcewillbegin") is "target"
    338356PASS testElementAttribute(element, "webkitneedkey") is "target"
    339357PASS testElementAttribute(element, "webkitplaybacktargetavailabilitychanged") is "target"
     
    458476PASS testElementAttribute(inputElement, "webkitkeyerror") is "target"
    459477PASS testElementAttribute(inputElement, "webkitkeymessage") is "target"
     478PASS testElementAttribute(inputElement, "webkitmouseforcecancelled") is "target"
     479PASS testElementAttribute(inputElement, "webkitmouseforcechanged") is "target"
     480PASS testElementAttribute(inputElement, "webkitmouseforceclick") is "target"
     481PASS testElementAttribute(inputElement, "webkitmouseforcedown") is "target"
     482PASS testElementAttribute(inputElement, "webkitmouseforceup") is "target"
     483PASS testElementAttribute(inputElement, "webkitmouseforcewillbegin") is "target"
    460484PASS testElementAttribute(inputElement, "webkitneedkey") is "target"
    461485PASS testElementAttribute(inputElement, "webkitplaybacktargetavailabilitychanged") is "target"
     
    580604PASS testElementAttribute(audioElement, "webkitkeyerror") is "target"
    581605PASS testElementAttribute(audioElement, "webkitkeymessage") is "target"
     606PASS testElementAttribute(audioElement, "webkitmouseforcecancelled") is "target"
     607PASS testElementAttribute(audioElement, "webkitmouseforcechanged") is "target"
     608PASS testElementAttribute(audioElement, "webkitmouseforceclick") is "target"
     609PASS testElementAttribute(audioElement, "webkitmouseforcedown") is "target"
     610PASS testElementAttribute(audioElement, "webkitmouseforceup") is "target"
     611PASS testElementAttribute(audioElement, "webkitmouseforcewillbegin") is "target"
    582612PASS testElementAttribute(audioElement, "webkitneedkey") is "target"
    583613PASS testElementAttribute(audioElement, "webkitplaybacktargetavailabilitychanged") is "target"
     
    702732PASS testElementAttribute(videoElement, "webkitkeyerror") is "target"
    703733PASS testElementAttribute(videoElement, "webkitkeymessage") is "target"
     734PASS testElementAttribute(videoElement, "webkitmouseforcecancelled") is "target"
     735PASS testElementAttribute(videoElement, "webkitmouseforcechanged") is "target"
     736PASS testElementAttribute(videoElement, "webkitmouseforceclick") is "target"
     737PASS testElementAttribute(videoElement, "webkitmouseforcedown") is "target"
     738PASS testElementAttribute(videoElement, "webkitmouseforceup") is "target"
     739PASS testElementAttribute(videoElement, "webkitmouseforcewillbegin") is "target"
    704740PASS testElementAttribute(videoElement, "webkitneedkey") is "target"
    705741PASS testElementAttribute(videoElement, "webkitplaybacktargetavailabilitychanged") is "target"
     
    756792PASS testElementAttribute(bodyElement, "storage") is "window"
    757793PASS testElementAttribute(bodyElement, "unload") is "window"
     794PASS testElementAttribute(bodyElement, "webkitmouseforcecancelled") is "window"
     795PASS testElementAttribute(bodyElement, "webkitmouseforcechanged") is "window"
     796PASS testElementAttribute(bodyElement, "webkitmouseforceclick") is "window"
     797PASS testElementAttribute(bodyElement, "webkitmouseforcedown") is "window"
     798PASS testElementAttribute(bodyElement, "webkitmouseforceup") is "window"
     799PASS testElementAttribute(bodyElement, "webkitmouseforcewillbegin") is "window"
    758800PASS testElementAttribute(bodyElement, "webkitwillrevealbottom") is "window"
    759801PASS testElementAttribute(bodyElement, "webkitwillrevealleft") is "window"
     
    884926PASS testElementAttribute(framesetElement, "storage") is "window"
    885927PASS testElementAttribute(framesetElement, "unload") is "window"
     928FAIL testElementAttribute(framesetElement, "webkitmouseforcecancelled") should be window. Was script: target; content: window.
     929FAIL testElementAttribute(framesetElement, "webkitmouseforcechanged") should be window. Was script: target; content: window.
     930FAIL testElementAttribute(framesetElement, "webkitmouseforceclick") should be window. Was script: target; content: window.
     931FAIL testElementAttribute(framesetElement, "webkitmouseforcedown") should be window. Was script: target; content: window.
     932FAIL testElementAttribute(framesetElement, "webkitmouseforceup") should be window. Was script: target; content: window.
     933FAIL testElementAttribute(framesetElement, "webkitmouseforcewillbegin") should be window. Was script: target; content: window.
    886934PASS testElementAttribute(framesetElement, "webkitwillrevealbottom") is "window"
    887935PASS testElementAttribute(framesetElement, "webkitwillrevealleft") is "window"
     
    10801128PASS testElementAttribute(rectElement, "webkitkeyerror") is "target"
    10811129PASS testElementAttribute(rectElement, "webkitkeymessage") is "target"
     1130PASS testElementAttribute(rectElement, "webkitmouseforcecancelled") is "target"
     1131PASS testElementAttribute(rectElement, "webkitmouseforcechanged") is "target"
     1132PASS testElementAttribute(rectElement, "webkitmouseforceclick") is "target"
     1133PASS testElementAttribute(rectElement, "webkitmouseforcedown") is "target"
     1134PASS testElementAttribute(rectElement, "webkitmouseforceup") is "target"
     1135PASS testElementAttribute(rectElement, "webkitmouseforcewillbegin") is "target"
    10821136PASS testElementAttribute(rectElement, "webkitneedkey") is "target"
    10831137PASS testElementAttribute(rectElement, "webkitplaybacktargetavailabilitychanged") is "target"
     
    12231277FAIL testElementAttribute(nonHTMLElement, "webkitkeyerror") should be none. Was script: target; content: none.
    12241278FAIL testElementAttribute(nonHTMLElement, "webkitkeymessage") should be none. Was script: target; content: none.
     1279FAIL testElementAttribute(nonHTMLElement, "webkitmouseforcecancelled") should be none. Was script: target; content: none.
     1280FAIL testElementAttribute(nonHTMLElement, "webkitmouseforcechanged") should be none. Was script: target; content: none.
     1281FAIL testElementAttribute(nonHTMLElement, "webkitmouseforceclick") should be none. Was script: target; content: none.
     1282FAIL testElementAttribute(nonHTMLElement, "webkitmouseforcedown") should be none. Was script: target; content: none.
     1283FAIL testElementAttribute(nonHTMLElement, "webkitmouseforceup") should be none. Was script: target; content: none.
     1284FAIL testElementAttribute(nonHTMLElement, "webkitmouseforcewillbegin") should be none. Was script: target; content: none.
    12251285FAIL testElementAttribute(nonHTMLElement, "webkitneedkey") should be none. Was script: target; content: none.
    12261286FAIL testElementAttribute(nonHTMLElement, "webkitplaybacktargetavailabilitychanged") should be none. Was script: target; content: none.
  • trunk/LayoutTests/fast/dom/event-handler-attributes.html

    r181507 r181907  
    9797    "webkitanimationstart",
    9898    "webkitdeviceproximity",
     99    "webkitmouseforcecancelled",
     100    "webkitmouseforcechanged",
     101    "webkitmouseforceclick",
     102    "webkitmouseforcedown",
     103    "webkitmouseforceup",
     104    "webkitmouseforcewillbegin",
    99105    "webkittransitionend",
    100106    "webkitwillrevealbottom",
     
    156162    "touchmove",
    157163    "touchstart",
     164    "webkitmouseforcecancelled",
     165    "webkitmouseforcechanged",
     166    "webkitmouseforceclick",
     167    "webkitmouseforcedown",
     168    "webkitmouseforceup",
     169    "webkitmouseforcewillbegin",
    158170    "webkitfullscreenchange",
    159171    "webkitfullscreenerror",
     
    252264    "webkitkeyerror",
    253265    "webkitkeymessage",
     266    "webkitmouseforcecancelled",
     267    "webkitmouseforcechanged",
     268    "webkitmouseforceclick",
     269    "webkitmouseforcedown",
     270    "webkitmouseforceup",
     271    "webkitmouseforcewillbegin",
    254272    "webkitneedkey",
    255273    "webkitplaybacktargetavailabilitychanged",
     
    282300    "storage",
    283301    "unload",
     302    "webkitmouseforcecancelled",
     303    "webkitmouseforcechanged",
     304    "webkitmouseforceclick",
     305    "webkitmouseforcedown",
     306    "webkitmouseforceup",
     307    "webkitmouseforcewillbegin",
    284308    "webkitwillrevealbottom",
    285309    "webkitwillrevealleft",
  • trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt

    r180616 r181907  
    20192019PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeys').enumerable is false
    20202020PASS Object.getOwnPropertyDescriptor(global, 'WebKitMediaKeys').configurable is true
     2021PASS Object.getOwnPropertyDescriptor(global, 'WebKitMouseForceChangedEvent').value is WebKitMouseForceChangedEvent
     2022PASS Object.getOwnPropertyDescriptor(global, 'WebKitMouseForceChangedEvent').hasOwnProperty('get') is false
     2023PASS Object.getOwnPropertyDescriptor(global, 'WebKitMouseForceChangedEvent').hasOwnProperty('set') is false
     2024PASS Object.getOwnPropertyDescriptor(global, 'WebKitMouseForceChangedEvent').enumerable is false
     2025PASS Object.getOwnPropertyDescriptor(global, 'WebKitMouseForceChangedEvent').configurable is true
    20212026PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').value is WebKitMutationObserver
    20222027PASS Object.getOwnPropertyDescriptor(global, 'WebKitMutationObserver').hasOwnProperty('get') is false
  • trunk/Source/WTF/ChangeLog

    r181887 r181907  
     12015-03-24  Beth Dakin  <bdakin@apple.com>
     2
     3        Add events related to force click gesture
     4        https://bugs.webkit.org/show_bug.cgi?id=142836
     5        -and corresponding-
     6        rdar://problem/20210239
     7
     8        Reviewed by Dean Jackson.
     9
     10        New enable flag for the events.
     11        * wtf/FeatureDefines.h:
     12
    1132015-03-23  Filip Pizlo  <fpizlo@apple.com>
    214
  • trunk/Source/WTF/wtf/FeatureDefines.h

    r181618 r181907  
    570570#endif
    571571
     572#if !defined(ENABLE_MOUSE_FORCE_EVENTS)
     573#define ENABLE_MOUSE_FORCE_EVENTS 1
     574#endif
     575
    572576#if !defined(ENABLE_NAVIGATOR_CONTENT_UTILS)
    573577#define ENABLE_NAVIGATOR_CONTENT_UTILS 0
  • trunk/Source/WebCore/CMakeLists.txt

    r181629 r181907  
    428428    dom/UIEvent.idl
    429429    dom/WebKitAnimationEvent.idl
     430    dom/WebKitMouseForceEvent.idl
    430431    dom/WebKitNamedFlow.idl
    431432    dom/WebKitTransitionEvent.idl
     
    14531454    dom/VisitedLinkState.cpp
    14541455    dom/WebKitAnimationEvent.cpp
     1456    dom/WebKitMouseForceEvent.cpp
    14551457    dom/WebKitNamedFlow.cpp
    14561458    dom/WebKitTransitionEvent.cpp
  • trunk/Source/WebCore/ChangeLog

    r181906 r181907  
     12015-03-24  Beth Dakin  <bdakin@apple.com>
     2
     3        Add events related to force click gesture
     4        https://bugs.webkit.org/show_bug.cgi?id=142836
     5        -and corresponding-
     6        rdar://problem/20210239
     7
     8        Reviewed by Dean Jackson.
     9
     10        This patch adds six new events for the force click gesture:
     11
     12        webkitmouseforcewillbegin -> Event is sent just before mousedown to indicate that
     13        force can be perceived if the user presses any harder. The author should prevent
     14        default on this event to both prevent the user agent’s default force click
     15        features and to receive the other 5 events.
     16
     17        webkitmouseforcechanged -> This event fires whenever force changes between the
     18        mousedown and mouseup. It is a new type of mouse event that includes a force
     19        variable which is a normalized number between 0 (corresponds to click) and 1
     20        (corresponds to force click). In this patch, I have only added code to send this
     21        event between mousedown and mouseforcedown, but as a followup patch, we plan to
     22        send it through mouseup.
     23
     24        webkitmouseforcecancelled -> If the user releases their finger from the trackpad
     25        after pressing hard enough to send webkitmouseforcewillbegin events but not hard
     26        enough to force click, this event will be sent to indicate that the user bailed
     27        out on the gesture.
     28
     29        webkitmouseforcedown -> The down part of the force click.
     30
     31        webkitmouseforceup -> The up part of the force click. This event is added in this
     32        patch, but does not yet fire. That is work for a follow-up patch.
     33
     34        webkitmouseforceclick -> The equivalent of the click event for the force click.
     35        Should fire just after webkitmouseforceup. This event is added in this patch, but
     36        does not yet fire. That is work for a follow-up patch.
     37
     38        Add new files for WebKitMouseForceEvent to build systems.
     39        * DerivedSources.cpp:
     40        * DerivedSources.make:
     41        * WebCore.vcxproj/WebCore.vcxproj:
     42        * WebCore.vcxproj/WebCore.vcxproj.filters:
     43        * WebCore.xcodeproj/project.pbxproj:
     44        * WebCore.xcodeproj/project.pbxproj:
     45
     46        Plumbing for new events.
     47        * dom/Document.idl:
     48
     49        Code to dispatch the new events. Currently the code that calls these functions is
     50        in WebKit2.
     51        * dom/Element.cpp:
     52        (WebCore::Element::dispatchMouseForceWillBegin):
     53        (WebCore::Element::dispatchMouseForceChanged):
     54        (WebCore::Element::dispatchMouseForceDown):
     55        (WebCore::Element::dispatchMouseForceUp):
     56        (WebCore::Element::dispatchMouseForceClick):
     57        (WebCore::Element::dispatchMouseForceCancelled):
     58        * dom/Element.h:
     59
     60        More plumbing.
     61        * dom/Element.idl:
     62        * dom/EventNames.h:
     63        * dom/EventNames.in:
     64
     65        Our new type of mouse event that includes force.
     66        * dom/WebKitMouseForceEvent.cpp: Added.
     67        (WebCore::WebKitMouseForceEventInit::WebKitMouseForceEventInit):
     68        (WebCore::WebKitMouseForceEvent::WebKitMouseForceEvent):
     69        (WebCore::WebKitMouseForceEvent::~WebKitMouseForceEvent):
     70        (WebCore::WebKitMouseForceEvent::eventInterface):
     71        * dom/WebKitMouseForceEvent.h: Added.
     72        * dom/WebKitMouseForceEvent.idl: Added.
     73
     74        More plumbing.
     75        * html/HTMLAttributeNames.in:
     76        * html/HTMLBodyElement.cpp:
     77        (WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):
     78        * html/HTMLBodyElement.idl:
     79        * html/HTMLElement.cpp:
     80        (WebCore::HTMLElement::createEventHandlerNameMap):
     81        * page/DOMWindow.idl:
     82        * page/EventHandler.h:
     83        (WebCore::EventHandler::lastMouseDownEvent):
     84
    1852015-03-24  Anders Carlsson  <andersca@apple.com>
    286
  • trunk/Source/WebCore/DerivedSources.cpp

    r180601 r181907  
    510510#include "JSWebKitCSSMatrix.cpp"
    511511#include "JSWebKitCSSRegionRule.cpp"
     512#include "JSWebKitMouseForceEvent.cpp"
    512513#include "JSWebKitNamedFlow.cpp"
    513514#include "JSWebKitPoint.cpp"
  • trunk/Source/WebCore/DerivedSources.make

    r181291 r181907  
    314314    $(WebCore)/dom/UIEvent.idl \
    315315    $(WebCore)/dom/WebKitAnimationEvent.idl \
     316        $(WebCore)/dom/WebKitMouseForceEvent.idl \
    316317    $(WebCore)/dom/WebKitNamedFlow.idl \
    317318    $(WebCore)/dom/WebKitTransitionEvent.idl \
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r181574 r181907  
    63196319      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
    63206320    </ClCompile>
     6321        <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitMouseForceEvent.cpp">
     6322      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     6323      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     6324      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
     6325      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
     6326      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
     6327      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
     6328      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     6329      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     6330      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
     6331      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
     6332      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
     6333      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     6334    </ClCompile>
    63216335    <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitNamedFlow.cpp">
    63226336      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     
    1417314187    </ClCompile>
    1417414188    <ClCompile Include="..\dom\WebKitAnimationEvent.cpp">
     14189      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
     14190      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     14191      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
     14192      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
     14193      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
     14194      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
     14195      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
     14196      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     14197      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
     14198      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
     14199      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
     14200      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     14201    </ClCompile>
     14202    <ClCompile Include="..\dom\WebKitMouseForceEvent.cpp">
    1417514203      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
    1417614204      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
     
    1877718805    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitCSSRegionRule.h" />
    1877818806    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitCSSTransformValue.h" />
     18807    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitMouseForceEvent.h" />
    1877918808    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitNamedFlow.h" />
    1878018809    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitPoint.h" />
     
    2069420723    <ClInclude Include="..\dom\ViewportArguments.h" />
    2069520724    <ClInclude Include="..\dom\WebKitAnimationEvent.h" />
     20725    <ClInclude Include="..\dom\WebKitMouseForceEvent.h" />
    2069620726    <ClInclude Include="..\dom\WebKitNamedFlow.h" />
    2069720727    <ClInclude Include="..\dom\WebKitTransitionEvent.h" />
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters

    r181571 r181907  
    33793379      <Filter>dom</Filter>
    33803380    </ClCompile>
     3381    <ClCompile Include="..\dom\WebKitMouseForceEvent.cpp">
     3382      <Filter>dom</Filter>
     3383    </ClCompile>
    33813384    <ClCompile Include="..\dom\WebKitNamedFlow.cpp">
    33823385      <Filter>dom</Filter>
     
    62076210    </ClCompile>
    62086211    <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitCSSTransformValue.cpp">
     6212      <Filter>DerivedSources</Filter>
     6213    </ClCompile>
     6214    <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitMouseForceEvent.cpp">
    62096215      <Filter>DerivedSources</Filter>
    62106216    </ClCompile>
     
    1047110477      <Filter>dom</Filter>
    1047210478    </ClInclude>
     10479    <ClInclude Include="..\dom\WebKitMouseForceEvent.h">
     10480      <Filter>dom</Filter>
     10481    </ClInclude>
    1047310482    <ClInclude Include="..\dom\WebKitNamedFlow.h">
    1047410483      <Filter>dom</Filter>
     
    1357313582    </ClInclude>
    1357413583    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitCSSTransformValue.h">
     13584      <Filter>DerivedSources</Filter>
     13585    </ClInclude>
     13586    <ClInclude Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSWebKitMouseForceEvent.h">
    1357513587      <Filter>DerivedSources</Filter>
    1357613588    </ClInclude>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r181876 r181907  
    34173417                93CCF0270AF6C52900018E89 /* NavigationAction.h in Headers */ = {isa = PBXBuildFile; fileRef = 93CCF0260AF6C52900018E89 /* NavigationAction.h */; settings = {ATTRIBUTES = (Private, ); }; };
    34183418                93CCF0600AF6CA7600018E89 /* NavigationAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93CCF05F0AF6CA7600018E89 /* NavigationAction.cpp */; };
     3419                93D200ED1AB8ED090025E851 /* WebKitMouseForceEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93D200EB1AB8ED090025E851 /* WebKitMouseForceEvent.cpp */; };
     3420                93D200EE1AB8ED090025E851 /* WebKitMouseForceEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D200EC1AB8ED090025E851 /* WebKitMouseForceEvent.h */; };
     3421                93D200F21AB8F81F0025E851 /* JSWebKitMouseForceEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93D200F01AB8F81F0025E851 /* JSWebKitMouseForceEvent.cpp */; };
     3422                93D200F31AB8F8200025E851 /* JSWebKitMouseForceEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D200F11AB8F81F0025E851 /* JSWebKitMouseForceEvent.h */; };
    34193423                93D3C1590F97A9D70053C013 /* DOMHTMLCanvasElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D3C1580F97A9D70053C013 /* DOMHTMLCanvasElement.h */; };
    34203424                93D3C17D0F97AA760053C013 /* DOMHTMLCanvasElement.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 93D3C1580F97A9D70053C013 /* DOMHTMLCanvasElement.h */; };
     
    1065410658                93CCF0260AF6C52900018E89 /* NavigationAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigationAction.h; sourceTree = "<group>"; };
    1065510659                93CCF05F0AF6CA7600018E89 /* NavigationAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigationAction.cpp; sourceTree = "<group>"; };
     10660                93D200EB1AB8ED090025E851 /* WebKitMouseForceEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitMouseForceEvent.cpp; sourceTree = "<group>"; };
     10661                93D200EC1AB8ED090025E851 /* WebKitMouseForceEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitMouseForceEvent.h; sourceTree = "<group>"; };
     10662                93D200EF1AB8ED640025E851 /* WebKitMouseForceEvent.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebKitMouseForceEvent.idl; sourceTree = "<group>"; };
     10663                93D200F01AB8F81F0025E851 /* JSWebKitMouseForceEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitMouseForceEvent.cpp; sourceTree = "<group>"; };
     10664                93D200F11AB8F81F0025E851 /* JSWebKitMouseForceEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitMouseForceEvent.h; sourceTree = "<group>"; };
    1065610665                93D3C1580F97A9D70053C013 /* DOMHTMLCanvasElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLCanvasElement.h; sourceTree = "<group>"; };
    1065710666                93D9D53B0DA27E180077216C /* RangeBoundaryPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RangeBoundaryPoint.h; sourceTree = "<group>"; };
     
    1969219701                                31C0FF390E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp */,
    1969319702                                31C0FF3A0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h */,
     19703                                93D200F01AB8F81F0025E851 /* JSWebKitMouseForceEvent.cpp */,
     19704                                93D200F11AB8F81F0025E851 /* JSWebKitMouseForceEvent.h */,
    1969419705                                31C0FF3B0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.cpp */,
    1969519706                                31C0FF3C0E4CEFAC007D6FE5 /* JSWebKitTransitionEvent.h */,
     
    2316523176                                31C0FF1C0E4CEB6E007D6FE5 /* WebKitAnimationEvent.h */,
    2316623177                                31C0FF1D0E4CEB6E007D6FE5 /* WebKitAnimationEvent.idl */,
     23178                                93D200EB1AB8ED090025E851 /* WebKitMouseForceEvent.cpp */,
     23179                                93D200EC1AB8ED090025E851 /* WebKitMouseForceEvent.h */,
     23180                                93D200EF1AB8ED640025E851 /* WebKitMouseForceEvent.idl */,
    2316723181                                D7613A4E1474F13F00DB8606 /* WebKitNamedFlow.cpp */,
    2316823182                                D7613A4D1474F13F00DB8606 /* WebKitNamedFlow.h */,
     
    2420624220                                BC1A37B6097C715F0019F3D8 /* DOMHTML.h in Headers */,
    2420724221                                319848081A1E6CB500A13318 /* DOMAnimationEvent.h in Headers */,
     24222                                93D200F31AB8F8200025E851 /* JSWebKitMouseForceEvent.h in Headers */,
    2420824223                                85DF81270AA7787200486AD7 /* DOMHTMLAnchorElement.h in Headers */,
    2420924224                                85E7119B0AC5D5350053270F /* DOMHTMLAnchorElementInternal.h in Headers */,
     
    2656326578                                B2227A3C0D00BF220071B782 /* SVGLineElement.h in Headers */,
    2656426579                                0810764412828556007C63BA /* SVGListProperty.h in Headers */,
     26580                                93D200EE1AB8ED090025E851 /* WebKitMouseForceEvent.h in Headers */,
    2656526581                                088A0E09126EF1DB00978F7A /* SVGListPropertyTearOff.h in Headers */,
    2656626582                                B2227A410D00BF220071B782 /* SVGLocatable.h in Headers */,
     
    2749127507                                2EDEF1F3121B0EFC00726DB2 /* BlobData.cpp in Sources */,
    2749227508                                E1D31CDC19196020001005A3 /* BlobDataFileReference.cpp in Sources */,
     27509                                93D200ED1AB8ED090025E851 /* WebKitMouseForceEvent.cpp in Sources */,
    2749327510                                E164A2ED191AE6350010737D /* BlobDataFileReferenceMac.mm in Sources */,
    2749427511                                E14A94D716DFDF950068DE82 /* BlobRegistry.cpp in Sources */,
     
    2751827535                                BCB16C290979C3BD00467741 /* CachedResourceLoader.cpp in Sources */,
    2751927536                                5081E3C33CE580C16EF8B48B /* CachedResourceRequest.cpp in Sources */,
     27537                                93D200F21AB8F81F0025E851 /* JSWebKitMouseForceEvent.cpp in Sources */,
    2752027538                                6C638896A96CCEE50C8C946C /* CachedResourceRequestInitiators.cpp in Sources */,
    2752127539                                BCB16C230979C3BD00467741 /* CachedScript.cpp in Sources */,
  • trunk/Source/WebCore/dom/DOMAllInOne.cpp

    r177663 r181907  
    150150#include "VisitedLinkState.cpp"
    151151#include "WebKitAnimationEvent.cpp"
     152#include "WebKitMouseForceEvent.cpp"
    152153#include "WebKitNamedFlow.cpp"
    153154#include "WebKitTransitionEvent.cpp"
  • trunk/Source/WebCore/dom/Document.idl

    r181657 r181907  
    297297    [NotEnumerable] attribute EventHandler onwebkitfullscreenchange;
    298298    [NotEnumerable] attribute EventHandler onwebkitfullscreenerror;
     299    [NotEnumerable] attribute EventHandler onwebkitmouseforcecancelled;
     300    [NotEnumerable] attribute EventHandler onwebkitmouseforcechanged;
     301    [NotEnumerable] attribute EventHandler onwebkitmouseforceclick;
     302    [NotEnumerable] attribute EventHandler onwebkitmouseforcedown;
     303    [NotEnumerable] attribute EventHandler onwebkitmouseforceup;
     304    [NotEnumerable] attribute EventHandler onwebkitmouseforcewillbegin;
    299305    [NotEnumerable] attribute EventHandler onwebkitwillrevealbottom;
    300306    [NotEnumerable] attribute EventHandler onwebkitwillrevealleft;
  • trunk/Source/WebCore/dom/Element.cpp

    r181898 r181907  
    7979#include "TextIterator.h"
    8080#include "VoidCallback.h"
     81#include "WebKitMouseForceEvent.h"
    8182#include "WheelEvent.h"
    8283#include "XLinkNames.h"
     
    21072108}
    21082109
     2110#if ENABLE(MOUSE_FORCE_EVENTS)
     2111bool Element::dispatchMouseForceWillBegin()
     2112{
     2113    Frame* frame = document().frame();
     2114    if (!frame)
     2115        return false;
     2116
     2117    PlatformMouseEvent platformMouseEvent(frame->eventHandler().lastKnownMousePosition(), frame->eventHandler().lastKnownMouseGlobalPosition(), NoButton, PlatformEvent::NoType, 1, false, false, false, false, WTF::currentTime());
     2118    RefPtr<Event> mouseForceWillBeginEvent =  WebKitMouseForceEvent::create(eventNames().webkitmouseforcewillbeginEvent, 0, platformMouseEvent, document().defaultView());
     2119    mouseForceWillBeginEvent->setTarget(this);
     2120    dispatchEvent(mouseForceWillBeginEvent);
     2121
     2122    if (mouseForceWillBeginEvent->defaultHandled() || mouseForceWillBeginEvent->defaultPrevented())
     2123        return true;
     2124    return false;
     2125}
     2126
     2127void Element::dispatchMouseForceChanged(float force, const PlatformMouseEvent& platformMouseEvent)
     2128{
     2129    RefPtr<WebKitMouseForceEvent> mouseForceChangedEvent = WebKitMouseForceEvent::create(eventNames().webkitmouseforcechangedEvent, force, platformMouseEvent, document().defaultView());
     2130    mouseForceChangedEvent->setTarget(this);
     2131    dispatchEvent(mouseForceChangedEvent);
     2132}
     2133
     2134void Element::dispatchMouseForceDown(const PlatformMouseEvent& platformMouseEvent)
     2135{
     2136    RefPtr<Event> mouseForceDownEvent = WebKitMouseForceEvent::create(eventNames().webkitmouseforcedownEvent, 1, platformMouseEvent, document().defaultView());
     2137    mouseForceDownEvent->setTarget(this);
     2138    dispatchEvent(mouseForceDownEvent);
     2139}
     2140
     2141void Element::dispatchMouseForceUp(const PlatformMouseEvent& platformMouseEvent)
     2142{
     2143    RefPtr<Event> mouseForceUpEvent = WebKitMouseForceEvent::create(eventNames().webkitmouseforceupEvent, 1, platformMouseEvent, document().defaultView());
     2144    mouseForceUpEvent->setTarget(this);
     2145    dispatchEvent(mouseForceUpEvent);
     2146}
     2147
     2148void Element::dispatchMouseForceClick(const PlatformMouseEvent& platformMouseEvent)
     2149{
     2150    RefPtr<Event> mouseForceClickEvent = WebKitMouseForceEvent::create(eventNames().webkitmouseforceclickEvent, 1, platformMouseEvent, document().defaultView());
     2151    mouseForceClickEvent->setTarget(this);
     2152    dispatchEvent(mouseForceClickEvent);
     2153}
     2154
     2155void Element::dispatchMouseForceCancelled(const PlatformMouseEvent& platformMouseEvent)
     2156{
     2157    RefPtr<Event> mouseForceCancelledEvent = WebKitMouseForceEvent::create(eventNames().webkitmouseforcecancelledEvent, 0, platformMouseEvent, document().defaultView());
     2158    mouseForceCancelledEvent->setTarget(this);
     2159    dispatchEvent(mouseForceCancelledEvent);
     2160}
     2161
     2162#else // #if ENABLE(MOUSE_FORCE_EVENTS)
     2163
     2164bool Element::dispatchMouseForceWillBegin()
     2165{
     2166    return false;
     2167}
     2168
     2169void Element::dispatchMouseForceChanged(float, const PlatformMouseEvent&)
     2170{
     2171}
     2172
     2173void Element::dispatchMouseForceDown(const PlatformMouseEvent&)
     2174{
     2175}
     2176
     2177void Element::dispatchMouseForceUp(const PlatformMouseEvent&)
     2178{
     2179}
     2180
     2181void Element::dispatchMouseForceClick(const PlatformMouseEvent&)
     2182{
     2183}
     2184
     2185void Element::dispatchMouseForceCancelled(const PlatformMouseEvent&)
     2186{
     2187}
     2188#endif // #if ENABLE(MOUSE_FORCE_EVENTS)
     2189
    21092190void Element::mergeWithNextTextNode(Text& node, ExceptionCode& ec)
    21102191{
  • trunk/Source/WebCore/dom/Element.h

    r181173 r181907  
    469469    virtual void dispatchBlurEvent(RefPtr<Element>&& newFocusedElement);
    470470
     471    WEBCORE_EXPORT bool dispatchMouseForceWillBegin();
     472    WEBCORE_EXPORT void dispatchMouseForceChanged(float force, const PlatformMouseEvent&);
     473    WEBCORE_EXPORT void dispatchMouseForceDown(const PlatformMouseEvent&);
     474    WEBCORE_EXPORT void dispatchMouseForceUp(const PlatformMouseEvent&);
     475    WEBCORE_EXPORT void dispatchMouseForceClick(const PlatformMouseEvent&);
     476    WEBCORE_EXPORT void dispatchMouseForceCancelled(const PlatformMouseEvent&);
     477
    471478    virtual bool willRecalcStyle(Style::Change);
    472479    virtual void didRecalcStyle(Style::Change);
  • trunk/Source/WebCore/dom/Element.idl

    r181507 r181907  
    255255    [NotEnumerable] attribute EventHandler onwebkitkeyerror;
    256256    [NotEnumerable] attribute EventHandler onwebkitkeymessage;
     257    [NotEnumerable] attribute EventHandler onwebkitmouseforcecancelled;
     258    [NotEnumerable] attribute EventHandler onwebkitmouseforcechanged;
     259    [NotEnumerable] attribute EventHandler onwebkitmouseforceclick;
     260    [NotEnumerable] attribute EventHandler onwebkitmouseforcedown;
     261    [NotEnumerable] attribute EventHandler onwebkitmouseforcewillbegin;
     262    [NotEnumerable] attribute EventHandler onwebkitmouseforceup;
    257263    [NotEnumerable] attribute EventHandler onwebkitneedkey;
    258264    [NotEnumerable] attribute EventHandler onwebkitplaybacktargetavailabilitychanged;
  • trunk/Source/WebCore/dom/EventNames.h

    r181514 r181907  
    233233    macro(webkitkeyerror) \
    234234    macro(webkitkeymessage) \
     235    macro(webkitmouseforcecancelled) \
     236    macro(webkitmouseforcechanged) \
     237    macro(webkitmouseforceclick) \
     238    macro(webkitmouseforcedown) \
     239    macro(webkitmouseforcewillbegin) \
     240    macro(webkitmouseforceup) \
    235241    macro(webkitneedkey) \
    236242    macro(webkitnetworkinfochange) \
  • trunk/Source/WebCore/dom/EventNames.in

    r180416 r181907  
    2929UIEvents interfaceName=UIEvent
    3030WebKitAnimationEvent
     31WebKitMouseForceEvent
    3132WebKitTransitionEvent
    3233WheelEvent
  • trunk/Source/WebCore/html/HTMLAttributeNames.in

    r181507 r181907  
    271271onwebkitkeyerror
    272272onwebkitkeymessage
     273onwebkitmouseforcecancelled
     274onwebkitmouseforcechanged
     275onwebkitmouseforceclick
     276onwebkitmouseforcedown
     277onwebkitmouseforceup
     278onwebkitmouseforcewillbegin
    273279onwebkitneedkey
    274280onwebkitsourceclose
  • trunk/Source/WebCore/html/HTMLBodyElement.cpp

    r181507 r181907  
    118118        &onstorageAttr,
    119119        &onunloadAttr,
     120        &onwebkitmouseforcecancelledAttr,
     121        &onwebkitmouseforcechangedAttr,
     122        &onwebkitmouseforceclickAttr,
     123        &onwebkitmouseforcedownAttr,
     124        &onwebkitmouseforceupAttr,
     125        &onwebkitmouseforcewillbeginAttr,
    120126        &onwebkitwillrevealbottomAttr,
    121127        &onwebkitwillrevealleftAttr,
  • trunk/Source/WebCore/html/HTMLBodyElement.idl

    r181507 r181907  
    4646    [NotEnumerable, WindowEventHandler] attribute EventHandler onstorage;
    4747    [NotEnumerable, WindowEventHandler] attribute EventHandler onunload;
     48    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitmouseforcecancelled;
     49    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitmouseforcechanged;
     50    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitmouseforceclick;
     51    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitmouseforcedown;
     52    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitmouseforcewillbegin;
     53    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitmouseforceup;
    4854    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealbottom;
    4955    [NotEnumerable, WindowEventHandler] attribute EventHandler onwebkitwillrevealleft;
  • trunk/Source/WebCore/html/HTMLElement.cpp

    r181507 r181907  
    339339        &onwebkitkeyerrorAttr,
    340340        &onwebkitkeymessageAttr,
     341        &onwebkitmouseforcecancelledAttr,
     342        &onwebkitmouseforcechangedAttr,
     343        &onwebkitmouseforceclickAttr,
     344        &onwebkitmouseforcedownAttr,
     345        &onwebkitmouseforcewillbeginAttr,
     346        &onwebkitmouseforceupAttr,
    341347        &onwebkitneedkeyAttr,
    342348        &onwebkitplaybacktargetavailabilitychangedAttr,
  • trunk/Source/WebCore/page/DOMWindow.idl

    r181507 r181907  
    270270    [NotEnumerable] attribute EventHandler onwebkitanimationstart;
    271271    [NotEnumerable] attribute EventHandler onwebkitdeviceproximity;
     272    [NotEnumerable] attribute EventHandler onwebkitmouseforcecancelled;
     273    [NotEnumerable] attribute EventHandler onwebkitmouseforcechanged;
     274    [NotEnumerable] attribute EventHandler onwebkitmouseforceclick;
     275    [NotEnumerable] attribute EventHandler onwebkitmouseforcedown;
     276    [NotEnumerable] attribute EventHandler onwebkitmouseforceup;
     277    [NotEnumerable] attribute EventHandler onwebkitmouseforcewillbegin;
    272278    [NotEnumerable] attribute EventHandler onwebkittransitionend;
    273279    [NotEnumerable] attribute EventHandler onwebkitwillrevealbottom;
  • trunk/Source/WebCore/page/EventHandler.cpp

    r181879 r181907  
    40234023}
    40244024
     4025const PlatformMouseEvent& EventHandler::lastMouseDownEvent() const
     4026{
     4027    return m_mouseDown;
     4028}
     4029
    40254030void EventHandler::setImmediateActionStage(ImmediateActionStage stage)
    40264031{
  • trunk/Source/WebCore/page/EventHandler.h

    r181879 r181907  
    181181
    182182    IntPoint lastKnownMousePosition() const;
     183    IntPoint lastKnownMouseGlobalPosition() const { return m_lastKnownMouseGlobalPosition; }
    183184    Cursor currentMouseCursor() const { return m_currentMouseCursor; }
    184185
     
    314315
    315316    WEBCORE_EXPORT void setImmediateActionStage(ImmediateActionStage stage);
     317    WEBCORE_EXPORT const PlatformMouseEvent& lastMouseDownEvent() const;
    316318
    317319private:
  • trunk/Source/WebKit2/ChangeLog

    r181906 r181907  
     12015-03-24  Beth Dakin  <bdakin@apple.com>
     2
     3        Add events related to force click gesture
     4        https://bugs.webkit.org/show_bug.cgi?id=142836
     5        -and corresponding-
     6        rdar://problem/20210239
     7
     8        Reviewed by Dean Jackson.
     9
     10        ActionMenuHitTestResult has a new bool indicating whether to not the HitTestResult
     11        will prevent default.
     12        * Shared/mac/ActionMenuHitTestResult.h:
     13        * Shared/mac/ActionMenuHitTestResult.mm:
     14        (WebKit::ActionMenuHitTestResult::encode):
     15        (WebKit::ActionMenuHitTestResult::decode):
     16
     17        Send immediateActionDidUpdate and the normalized force over the the WebProcess.
     18        * UIProcess/WebPageProxy.cpp:
     19        (WebKit::WebPageProxy::immediateActionDidUpdate):
     20        * UIProcess/WebPageProxy.h:
     21
     22        We need a dummy animation controller when web content is overriding the default
     23        behavior.
     24        * UIProcess/mac/WKImmediateActionController.mm:
     25
     26        Send along the update information.
     27        (-[WKImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):
     28
     29        Use the dummy animation controller if default has been prevented.
     30        (-[WKImmediateActionController _defaultAnimationController]):
     31        (-[WKImmediateActionController _updateImmediateActionItem]):
     32
     33        Keep track of whether m_lastActionMenuHitTes prevented the default immediate
     34        action behavior.
     35        * WebProcess/WebPage/WebPage.cpp:
     36        (WebKit::WebPage::WebPage):
     37        * WebProcess/WebPage/WebPage.h:
     38        * WebProcess/WebPage/WebPage.messages.in:
     39
     40        Call dispatchMouseForceMayBegin() at hit test time.
     41        * WebProcess/WebPage/mac/WebPageMac.mm:
     42        (WebKit::WebPage::performActionMenuHitTestAtLocation):
     43
     44        Call dispatchMouseForceChanged() if appropriate.
     45        (WebKit::WebPage::immediateActionDidUpdate):
     46
     47        Call dispatchMouseForceCancelled() if appropriate.
     48        (WebKit::WebPage::immediateActionDidCancel):
     49
     50        Call dispatchMouseForceDown() if appropriate.
     51        (WebKit::WebPage::immediateActionDidComplete):
     52
    1532015-03-24  Anders Carlsson  <andersca@apple.com>
    254
  • trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h

    r181874 r181907  
    6666
    6767    RefPtr<WebCore::TextIndicator> linkTextIndicator;
     68
     69    bool contentPreventsDefault;
    6870};
    6971
  • trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm

    r181874 r181907  
    7777    if (hasLinkTextIndicator)
    7878        encoder << linkTextIndicator->data();
     79
     80    encoder << contentPreventsDefault;
    7981}
    8082
     
    157159    }
    158160
     161    if (!decoder.decode(actionMenuHitTestResult.contentPreventsDefault))
     162        return false;
     163
    159164    return true;
    160165}
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r181836 r181907  
    55715571}
    55725572
     5573void WebPageProxy::immediateActionDidUpdate(float force)
     5574{
     5575    m_process->send(Messages::WebPage::ImmediateActionDidUpdate(force), m_pageID);
     5576}
     5577
    55735578void WebPageProxy::immediateActionDidCancel()
    55745579{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r181836 r181907  
    989989    void focusAndSelectLastActionMenuHitTestResult();
    990990
     991    void immediateActionDidUpdate(float force);
    991992    void immediateActionDidCancel();
    992993    void immediateActionDidComplete();
  • trunk/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm

    r181660 r181907  
    5454@end
    5555
     56@interface WebAnimationController : NSObject <NSImmediateActionAnimationController> {
     57}
     58@end
     59
     60@implementation WebAnimationController
     61@end
     62
    5663@implementation WKImmediateActionController
    5764
     
    206213        return;
    207214
     215    if (_hitTestResult.contentPreventsDefault) {
     216        _page->immediateActionDidUpdate([immediateActionRecognizer animationProgress]);
     217        return;
     218    }
     219
    208220    _page->setTextIndicatorAnimationProgress([immediateActionRecognizer animationProgress]);
    209221}
     
    250262- (id <NSImmediateActionAnimationController>)_defaultAnimationController
    251263{
     264    if (_hitTestResult.contentPreventsDefault) {
     265        RetainPtr<WebAnimationController> dummyController = [[WebAnimationController alloc] init];
     266        return dummyController.get();
     267    }
     268
    252269    RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];
    253270
     
    289306
    290307    id <NSImmediateActionAnimationController> defaultAnimationController = [self _defaultAnimationController];
     308
     309    if (_hitTestResult.contentPreventsDefault) {
     310        [_immediateActionRecognizer.get() setAnimationController:defaultAnimationController];
     311        return;
     312    }
    291313
    292314    RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r181836 r181907  
    341341    , m_systemWebGLPolicy(WebGLAllowCreation)
    342342#endif
     343#if PLATFORM(MAC)
     344    , m_lastActionMenuHitTestPreventsDefault(false)
     345#endif
    343346    , m_mainFrameProgressCompleted(false)
    344347    , m_shouldDispatchFakeMouseMoveEvents(true)
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r181836 r181907  
    10851085    void selectLastActionMenuRange();
    10861086    void focusAndSelectLastActionMenuHitTestResult();
     1087    void immediateActionDidUpdate(float force);
    10871088    void immediateActionDidCancel();
    10881089    void immediateActionDidComplete();
     
    13421343    WebCore::HitTestResult m_lastActionMenuHitTestResult;
    13431344    RefPtr<WebPageOverlay> m_lastActionMenuHitPageOverlay;
     1345    bool m_lastActionMenuHitTestPreventsDefault;
    13441346#endif
    13451347
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r181836 r181907  
    406406    SelectLastActionMenuRange()
    407407    FocusAndSelectLastActionMenuHitTestResult()
     408    ImmediateActionDidUpdate(float force)
    408409    ImmediateActionDidCancel()
    409410    ImmediateActionDidComplete()
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm

    r181874 r181907  
    10251025    HitTestResult hitTestResult = mainFrame.eventHandler().hitTestResultAtPoint(locationInContentCoordinates);
    10261026
    1027     if (forImmediateAction)
     1027    m_lastActionMenuHitTestPreventsDefault = false;
     1028    Element* element = hitTestResult.innerElement();
     1029
     1030    if (forImmediateAction) {
    10281031        mainFrame.eventHandler().setImmediateActionStage(ImmediateActionStage::PerformedHitTest);
     1032        if (element)
     1033            m_lastActionMenuHitTestPreventsDefault = element->dispatchMouseForceWillBegin();
     1034    }
    10291035
    10301036    ActionMenuHitTestResult actionMenuResult;
    10311037    actionMenuResult.hitTestLocationInViewCooordinates = locationInViewCooordinates;
    10321038    actionMenuResult.hitTestResult = WebHitTestResult::Data(hitTestResult);
     1039    actionMenuResult.contentPreventsDefault = m_lastActionMenuHitTestPreventsDefault;
    10331040
    10341041    RefPtr<Range> selectionRange = corePage()->focusController().focusedOrMainFrame().selection().selection().firstRange();
     
    11501157}
    11511158
     1159void WebPage::immediateActionDidUpdate(float force)
     1160{
     1161    Element* element = m_lastActionMenuHitTestResult.innerElement();
     1162    if (!element)
     1163        return;
     1164
     1165    if (!m_lastActionMenuHitTestPreventsDefault)
     1166        return;
     1167
     1168    element->dispatchMouseForceChanged(force, m_page->mainFrame().eventHandler().lastMouseDownEvent());
     1169}
     1170
    11521171void WebPage::immediateActionDidCancel()
    11531172{
    11541173    m_page->mainFrame().eventHandler().setImmediateActionStage(ImmediateActionStage::ActionCancelled);
     1174
     1175    Element* element = m_lastActionMenuHitTestResult.innerElement();
     1176    if (!element)
     1177        return;
     1178
     1179    if (!m_lastActionMenuHitTestPreventsDefault)
     1180        return;
     1181
     1182    element->dispatchMouseForceCancelled(m_page->mainFrame().eventHandler().lastMouseDownEvent());
    11551183}
    11561184
     
    11581186{
    11591187    m_page->mainFrame().eventHandler().setImmediateActionStage(ImmediateActionStage::ActionCompleted);
     1188
     1189    Element* element = m_lastActionMenuHitTestResult.innerElement();
     1190    if (!element)
     1191        return;
     1192
     1193    if (!m_lastActionMenuHitTestPreventsDefault)
     1194        return;
     1195
     1196    element->dispatchMouseForceDown(m_page->mainFrame().eventHandler().lastMouseDownEvent());
    11601197}
    11611198
Note: See TracChangeset for help on using the changeset viewer.