Diff
Modified: trunk/Source/WebCore/ChangeLog (293109 => 293110)
--- trunk/Source/WebCore/ChangeLog 2022-04-20 19:30:06 UTC (rev 293109)
+++ trunk/Source/WebCore/ChangeLog 2022-04-20 19:38:00 UTC (rev 293110)
@@ -1,3 +1,25 @@
+2022-04-20 Chris Dumez <[email protected]>
+
+ Avoid repeated calls to eventNames() in a few more places
+ https://bugs.webkit.org/show_bug.cgi?id=239548
+
+ Reviewed by Yusuke Suzuki.
+
+ Avoid repeated calls to eventNames() in a few more places given that it accesses threadGlobalData().
+
+ * dom/MouseEvent.cpp:
+ (WebCore::MouseEvent::create):
+ * dom/SimulatedClick.cpp:
+ (WebCore::simulateClick):
+ * dom/ios/PointerEventIOS.cpp:
+ (WebCore::buttonsForType):
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::eventListenersDidChange):
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::dispatchDragEvent):
+ * page/PointerCaptureController.cpp:
+ (WebCore::PointerCaptureController::cancelPointer):
+
2022-04-20 Oriol Brufau <[email protected]>
[css-cascade] Optimize code for deferred properties
Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (293109 => 293110)
--- trunk/Source/WebCore/dom/MouseEvent.cpp 2022-04-20 19:30:06 UTC (rev 293109)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp 2022-04-20 19:38:00 UTC (rev 293110)
@@ -50,7 +50,8 @@
Ref<MouseEvent> MouseEvent::create(const AtomString& eventType, RefPtr<WindowProxy>&& view, const PlatformMouseEvent& event, int detail, Node* relatedTarget)
{
- bool isMouseEnterOrLeave = eventType == eventNames().mouseenterEvent || eventType == eventNames().mouseleaveEvent;
+ auto& eventNames = WebCore::eventNames();
+ bool isMouseEnterOrLeave = eventType == eventNames.mouseenterEvent || eventType == eventNames.mouseleaveEvent;
auto isCancelable = !isMouseEnterOrLeave ? IsCancelable::Yes : IsCancelable::No;
auto canBubble = !isMouseEnterOrLeave ? CanBubble::Yes : CanBubble::No;
auto isComposed = !isMouseEnterOrLeave ? IsComposed::Yes : IsComposed::No;
Modified: trunk/Source/WebCore/dom/SimulatedClick.cpp (293109 => 293110)
--- trunk/Source/WebCore/dom/SimulatedClick.cpp 2022-04-20 19:30:06 UTC (rev 293109)
+++ trunk/Source/WebCore/dom/SimulatedClick.cpp 2022-04-20 19:38:00 UTC (rev 293110)
@@ -86,22 +86,23 @@
if (element.isDisabledFormControl())
return false;
- static NeverDestroyed<HashSet<Element*>> elementsDispatchingSimulatedClicks;
+ static MainThreadNeverDestroyed<HashSet<Element*>> elementsDispatchingSimulatedClicks;
if (!elementsDispatchingSimulatedClicks.get().add(&element).isNewEntry)
return false;
+ auto& eventNames = WebCore::eventNames();
if (mouseEventOptions == SendMouseOverUpDownEvents)
- simulateMouseEvent(eventNames().mouseoverEvent, element, underlyingEvent, creationOptions);
+ simulateMouseEvent(eventNames.mouseoverEvent, element, underlyingEvent, creationOptions);
if (mouseEventOptions != SendNoEvents)
- simulateMouseEvent(eventNames().mousedownEvent, element, underlyingEvent, creationOptions);
+ simulateMouseEvent(eventNames.mousedownEvent, element, underlyingEvent, creationOptions);
if (mouseEventOptions != SendNoEvents || visualOptions == ShowPressedLook)
element.setActive(true, true);
if (mouseEventOptions != SendNoEvents)
- simulateMouseEvent(eventNames().mouseupEvent, element, underlyingEvent, creationOptions);
+ simulateMouseEvent(eventNames.mouseupEvent, element, underlyingEvent, creationOptions);
element.setActive(false);
- simulateMouseEvent(eventNames().clickEvent, element, underlyingEvent, creationOptions);
+ simulateMouseEvent(eventNames.clickEvent, element, underlyingEvent, creationOptions);
elementsDispatchingSimulatedClicks.get().remove(&element);
return true;
Modified: trunk/Source/WebCore/dom/ios/PointerEventIOS.cpp (293109 => 293110)
--- trunk/Source/WebCore/dom/ios/PointerEventIOS.cpp 2022-04-20 19:30:06 UTC (rev 293109)
+++ trunk/Source/WebCore/dom/ios/PointerEventIOS.cpp 2022-04-20 19:38:00 UTC (rev 293110)
@@ -58,7 +58,8 @@
static unsigned short buttonsForType(const AtomString& type)
{
// We have contact with the touch surface for most events except when we've released the touch or canceled it.
- return (type == eventNames().pointerupEvent || type == eventNames().pointeroutEvent || type == eventNames().pointerleaveEvent || type == eventNames().pointercancelEvent) ? 0 : 1;
+ auto& eventNames = WebCore::eventNames();
+ return (type == eventNames.pointerupEvent || type == eventNames.pointeroutEvent || type == eventNames.pointerleaveEvent || type == eventNames.pointercancelEvent) ? 0 : 1;
}
Ref<PointerEvent> PointerEvent::create(const PlatformTouchEvent& event, unsigned index, bool isPrimary, Ref<WindowProxy>&& view)
Modified: trunk/Source/WebCore/html/HTMLCanvasElement.cpp (293109 => 293110)
--- trunk/Source/WebCore/html/HTMLCanvasElement.cpp 2022-04-20 19:30:06 UTC (rev 293109)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.cpp 2022-04-20 19:38:00 UTC (rev 293110)
@@ -985,9 +985,10 @@
void HTMLCanvasElement::eventListenersDidChange()
{
#if ENABLE(WEBGL)
- m_hasRelevantWebGLEventListener = hasEventListeners(eventNames().webglcontextchangedEvent)
- || hasEventListeners(eventNames().webglcontextlostEvent)
- || hasEventListeners(eventNames().webglcontextrestoredEvent);
+ auto& eventNames = WebCore::eventNames();
+ m_hasRelevantWebGLEventListener = hasEventListeners(eventNames.webglcontextchangedEvent)
+ || hasEventListeners(eventNames.webglcontextlostEvent)
+ || hasEventListeners(eventNames.webglcontextrestoredEvent);
#endif
}
Modified: trunk/Source/WebCore/page/EventHandler.cpp (293109 => 293110)
--- trunk/Source/WebCore/page/EventHandler.cpp 2022-04-20 19:30:06 UTC (rev 293109)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2022-04-20 19:38:00 UTC (rev 293110)
@@ -2274,15 +2274,16 @@
dragTarget.dispatchEvent(dragEvent);
if (auto* cache = m_frame.document()->existingAXObjectCache()) {
- if (eventType == eventNames().dragstartEvent)
+ auto& eventNames = WebCore::eventNames();
+ if (eventType == eventNames.dragstartEvent)
cache->postNotification(&dragTarget, AXObjectCache::AXDraggingStarted);
- else if (eventType == eventNames().dragendEvent)
+ else if (eventType == eventNames.dragendEvent)
cache->postNotification(&dragTarget, AXObjectCache::AXDraggingEnded);
- else if (eventType == eventNames().dragenterEvent)
+ else if (eventType == eventNames.dragenterEvent)
cache->postNotification(&dragTarget, AXObjectCache::AXDraggingEnteredDropZone);
- else if (eventType == eventNames().dragleaveEvent)
+ else if (eventType == eventNames.dragleaveEvent)
cache->postNotification(&dragTarget, AXObjectCache::AXDraggingExitedDropZone);
- else if (eventType == eventNames().dropEvent)
+ else if (eventType == eventNames.dropEvent)
cache->postNotification(&dragTarget, AXObjectCache::AXDraggingDropped);
}
Modified: trunk/Source/WebCore/page/PointerCaptureController.cpp (293109 => 293110)
--- trunk/Source/WebCore/page/PointerCaptureController.cpp 2022-04-20 19:30:06 UTC (rev 293109)
+++ trunk/Source/WebCore/page/PointerCaptureController.cpp 2022-04-20 19:38:00 UTC (rev 293110)
@@ -493,10 +493,11 @@
// After firing the pointercancel event, a user agent MUST also fire a pointer event named pointerout
// followed by firing a pointer event named pointerleave.
auto isPrimary = capturingData->isPrimary ? PointerEvent::IsPrimary::Yes : PointerEvent::IsPrimary::No;
- auto cancelEvent = PointerEvent::create(eventNames().pointercancelEvent, pointerId, capturingData->pointerType, isPrimary);
+ auto& eventNames = WebCore::eventNames();
+ auto cancelEvent = PointerEvent::create(eventNames.pointercancelEvent, pointerId, capturingData->pointerType, isPrimary);
target->dispatchEvent(cancelEvent);
- target->dispatchEvent(PointerEvent::create(eventNames().pointeroutEvent, pointerId, capturingData->pointerType, isPrimary));
- target->dispatchEvent(PointerEvent::create(eventNames().pointerleaveEvent, pointerId, capturingData->pointerType, isPrimary));
+ target->dispatchEvent(PointerEvent::create(eventNames.pointeroutEvent, pointerId, capturingData->pointerType, isPrimary));
+ target->dispatchEvent(PointerEvent::create(eventNames.pointerleaveEvent, pointerId, capturingData->pointerType, isPrimary));
processPendingPointerCapture(pointerId);
}