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

Changeset 279529 in webkit


Ignore:
Timestamp:
Jul 2, 2021, 6:24:12 PM (5 years ago)
Author:
Kocsen Chung
Message:

Cherry-pick r278964. rdar://problem/79474157

Protect Element before calling dispatchMouseEvent() on it
​https://bugs.webkit.org/show_bug.cgi?id=226767
<rdar://problem/79009112>

Reviewed by Ryosuke Niwa.

  • page/EventHandler.cpp: (WebCore::EventHandler::updateMouseEventTargetNode): (WebCore::EventHandler::dispatchMouseEvent):
  • page/PointerLockController.cpp: (WebCore::PointerLockController::dispatchLockedMouseEvent):
  • page/Quirks.cpp: (WebCore::Quirks::triggerOptionalStorageAccessQuirk const):

git-svn-id: ​https://svn.webkit.org/repository/webkit/trunk@278964 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Location:
branches/safari-611.3.10.1-branch/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-611.3.10.1-branch/Source/WebCore/ChangeLog

    r279077 r279529  
     12021-07-02  Ruben Turcios  <rubent_22@apple.com>
     2
     3        Cherry-pick r278964. rdar://problem/79474157
     4
     5    Protect Element before calling dispatchMouseEvent() on it
     6    https://bugs.webkit.org/show_bug.cgi?id=226767
     7    <rdar://problem/79009112>
     8   
     9    Reviewed by Ryosuke Niwa.
     10   
     11    * page/EventHandler.cpp:
     12    (WebCore::EventHandler::updateMouseEventTargetNode):
     13    (WebCore::EventHandler::dispatchMouseEvent):
     14    * page/PointerLockController.cpp:
     15    (WebCore::PointerLockController::dispatchLockedMouseEvent):
     16    * page/Quirks.cpp:
     17    (WebCore::Quirks::triggerOptionalStorageAccessQuirk const):
     18   
     19   
     20    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278964 268f45cc-cd09-0410-ab3c-d52691b4dbfc
     21
     22    2021-06-16  Chris Dumez  <cdumez@apple.com>
     23
     24            Protect Element before calling dispatchMouseEvent() on it
     25            https://bugs.webkit.org/show_bug.cgi?id=226767
     26            <rdar://problem/79009112>
     27
     28            Reviewed by Ryosuke Niwa.
     29
     30            * page/EventHandler.cpp:
     31            (WebCore::EventHandler::updateMouseEventTargetNode):
     32            (WebCore::EventHandler::dispatchMouseEvent):
     33            * page/PointerLockController.cpp:
     34            (WebCore::PointerLockController::dispatchLockedMouseEvent):
     35            * page/Quirks.cpp:
     36            (WebCore::Quirks::triggerOptionalStorageAccessQuirk const):
     37
    1382021-06-21  Alan Coon  <alancoon@apple.com>
    239
  • branches/safari-611.3.10.1-branch/Source/WebCore/dom/Element.cpp

    r278502 r279529  
    386386        return true; // Shouldn't happen.
    387387
     388    Ref protectedThis { *this };
    388389    bool didNotSwallowEvent = true;
    389390
  • branches/safari-611.3.10.1-branch/Source/WebCore/page/EventHandler.cpp

    r276045 r279529  
    25482548            }
    25492549
    2550             if (m_lastElementUnderMouse)
    2551                 m_lastElementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames().mouseoutEvent, 0, m_elementUnderMouse.get());
     2550            if (auto lastElementUnderMouse = m_lastElementUnderMouse)
     2551                lastElementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames().mouseoutEvent, 0, m_elementUnderMouse.get());
    25522552
    25532553            for (auto& chain : leftElementsChain) {
    … …  
    25562556            }
    25572557
    2558             if (m_elementUnderMouse)
    2559                 m_elementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames().mouseoverEvent, 0, m_lastElementUnderMouse.get());
     2558            if (auto elementUnderMouse = m_elementUnderMouse)
     2559                elementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames().mouseoverEvent, 0, m_lastElementUnderMouse.get());
    25602560
    25612561            for (auto& chain : WTF::makeReversedRange(enteredElementsChain)) {
    … …  
    26412641    updateMouseEventTargetNode(eventType, targetNode, platformMouseEvent, fireMouseOverOut);
    26422642
    2643     if (m_elementUnderMouse && !m_elementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventType, clickCount))
    2644         return false;
     2643    if (auto elementUnderMouse = m_elementUnderMouse) {
     2644        if (!elementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventType, clickCount))
     2645            return false;
     2646    }
    26452647
    26462648    if (eventType != eventNames().mousedownEvent)
  • branches/safari-611.3.10.1-branch/Source/WebCore/page/PointerLockController.cpp

    r273389 r279529  
    182182        return;
    183183
    184     m_element->dispatchMouseEvent(event, eventType, event.clickCount());
     184    Ref protectedElement { *m_element };
     185    protectedElement->dispatchMouseEvent(event, eventType, event.clickCount());
    185186
    186187    // Create click events
    187188    if (eventType == eventNames().mouseupEvent)
    188         m_element->dispatchMouseEvent(event, eventNames().clickEvent, event.clickCount());
     189        protectedElement->dispatchMouseEvent(event, eventNames().clickEvent, event.clickCount());
    189190}
    190191
  • branches/safari-611.3.10.1-branch/Source/WebCore/page/Quirks.cpp

    r278502 r279529  
    11931193        if (isStorageAccessQuirkDomainAndElement(m_document->url(), element)) {
    11941194            return requestStorageAccessAndHandleClick([element = makeWeakPtr(element), platformEvent, eventType, detail, relatedTarget] (ShouldDispatchClick shouldDispatchClick) mutable {
    1195                 if (!element)
     1195                RefPtr protectedElement { element.get() };
     1196                if (!protectedElement)
    11961197                    return;
    11971198
    11981199                if (shouldDispatchClick == ShouldDispatchClick::Yes)
    1199                     element->dispatchMouseEvent(platformEvent, eventType, detail, relatedTarget);
     1200                    protectedElement->dispatchMouseEvent(platformEvent, eventType, detail, relatedTarget);
    12001201            });
    12011202        }
Note: See TracChangeset for help on using the changeset viewer.