Diff
Modified: trunk/Source/WebCore/ChangeLog (292369 => 292370)
--- trunk/Source/WebCore/ChangeLog 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/ChangeLog 2022-04-05 03:46:42 UTC (rev 292370)
@@ -1,3 +1,90 @@
+2022-04-04 Chris Dumez <cdu...@apple.com>
+
+ Avoid repeated calls to WebCore::eventNames()
+ https://bugs.webkit.org/show_bug.cgi?id=238773
+
+ Reviewed by Geoffrey Garen.
+
+ Avoid repeated calls to WebCore::eventNames() by caching it where appropriate.
+ WebCore::eventNames() calls pthread_get_specific.
+
+ * dom/Element.cpp:
+ (WebCore::isCompatibilityMouseEvent):
+ * dom/EventContext.cpp:
+ (WebCore::EventContext::handleLocalEvents const):
+ * dom/EventTarget.cpp:
+ (WebCore::legacyType):
+ (WebCore::EventTarget::removeAllEventListeners):
+ * dom/MouseEvent.cpp:
+ (WebCore::MouseEvent::toElement const):
+ (WebCore::MouseEvent::fromElement const):
+ * dom/Node.cpp:
+ (WebCore::Node::moveNodeToNewDocument):
+ (WebCore::tryAddEventListener):
+ (WebCore::tryRemoveEventListener):
+ (WebCore::Node::defaultEventHandler):
+ (WebCore::Node::willRespondToMouseMoveEvents):
+ (WebCore::Node::willRespondToTouchEvents):
+ (WebCore::Node::willRespondToMouseClickEvents):
+ * dom/PointerEvent.h:
+ (WebCore::PointerEvent::typeIsEnterOrLeave):
+ * html/HTMLAnchorElement.cpp:
+ (WebCore::HTMLAnchorElement::defaultEventHandler):
+ * html/HTMLButtonElement.cpp:
+ (WebCore::HTMLButtonElement::defaultEventHandler):
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::willDispatchEvent):
+ * html/HTMLSelectElement.cpp:
+ (WebCore::HTMLSelectElement::menuListDefaultEventHandler):
+ (WebCore::HTMLSelectElement::listBoxDefaultEventHandler):
+ * html/HTMLSummaryElement.cpp:
+ (WebCore::HTMLSummaryElement::defaultEventHandler):
+ * html/HTMLTextFormControlElement.cpp:
+ (WebCore::HTMLTextFormControlElement::forwardEvent):
+ * html/TextFieldInputType.cpp:
+ (WebCore::TextFieldInputType::forwardEvent):
+ * html/shadow/SliderThumbElement.cpp:
+ (WebCore::SliderThumbElement::handleTouchEvent):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::dispatchAllPendingUnloadEvents):
+ (WebCore::DOMWindow::addEventListener):
+ (WebCore::DOMWindow::deviceOrientationController const): Deleted.
+ (WebCore::DOMWindow::deviceMotionController const): Deleted.
+ (WebCore::DOMWindow::isAllowedToUseDeviceMotionOrOrientation const): Deleted.
+ (WebCore::DOMWindow::isAllowedToUseDeviceMotion const): Deleted.
+ (WebCore::DOMWindow::isAllowedToUseDeviceOrientation const): Deleted.
+ (WebCore::DOMWindow::hasPermissionToReceiveDeviceMotionOrOrientationEvents const): Deleted.
+ (WebCore::DOMWindow::startListeningForDeviceOrientationIfNecessary): Deleted.
+ (WebCore::DOMWindow::stopListeningForDeviceOrientationIfNecessary): Deleted.
+ (WebCore::DOMWindow::startListeningForDeviceMotionIfNecessary): Deleted.
+ (WebCore::DOMWindow::stopListeningForDeviceMotionIfNecessary): Deleted.
+ (WebCore::DOMWindow::failedToRegisterDeviceMotionEventListener): Deleted.
+ (WebCore::DOMWindow::incrementScrollEventListenersCount): Deleted.
+ (WebCore::DOMWindow::decrementScrollEventListenersCount): Deleted.
+ (WebCore::DOMWindow::resetAllGeolocationPermission): Deleted.
+ (WebCore::DOMWindow::removeEventListener): Deleted.
+ (WebCore::DOMWindow::languagesChanged): Deleted.
+ (WebCore::DOMWindow::dispatchLoadEvent): Deleted.
+ (WebCore::DOMWindow::dispatchEvent): Deleted.
+ (WebCore::DOMWindow::removeAllEventListeners): Deleted.
+ (WebCore::DOMWindow::captureEvents): Deleted.
+ (WebCore::DOMWindow::releaseEvents): Deleted.
+ (WebCore::DOMWindow::finishedLoading): Deleted.
+ (WebCore::DOMWindow::setLocation): Deleted.
+ (WebCore::DOMWindow::printErrorMessage const): Deleted.
+ (WebCore::DOMWindow::crossDomainAccessErrorMessage): Deleted.
+ (WebCore::DOMWindow::isInsecureScriptAccess): Deleted.
+ (WebCore::DOMWindow::createWindow): Deleted.
+ (WebCore::DOMWindow::open): Deleted.
+ (WebCore::DOMWindow::showModalDialog): Deleted.
+ (WebCore::DOMWindow::enableSuddenTermination): Deleted.
+ (WebCore::DOMWindow::disableSuddenTermination): Deleted.
+ (WebCore::DOMWindow::frame const): Deleted.
+ (WebCore::DOMWindow::eventListenersDidChange): Deleted.
+ * page/EventHandler.cpp:
+ (WebCore::EventHandler::updateMouseEventTargetNode):
+ (WebCore::EventHandler::isKeyboardOptionTab):
+
2022-04-04 Said Abou-Hallawa <s...@apple.com>
[GPU Process] CSSFilter should be created only at the painting time
Modified: trunk/Source/WebCore/dom/Element.cpp (292369 => 292370)
--- trunk/Source/WebCore/dom/Element.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/dom/Element.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -433,7 +433,8 @@
{
// https://www.w3.org/TR/pointerevents/#compatibility-mapping-with-mouse-events
const auto& type = mouseEvent.type();
- return type != eventNames().clickEvent && type != eventNames().mouseoverEvent && type != eventNames().mouseoutEvent && type != eventNames().mouseenterEvent && type != eventNames().mouseleaveEvent;
+ auto& eventNames = WebCore::eventNames();
+ return type != eventNames.clickEvent && type != eventNames.mouseoverEvent && type != eventNames.mouseoutEvent && type != eventNames.mouseenterEvent && type != eventNames.mouseleaveEvent;
}
enum class ShouldIgnoreMouseEvent : bool { No, Yes };
Modified: trunk/Source/WebCore/dom/EventContext.cpp (292369 => 292370)
--- trunk/Source/WebCore/dom/EventContext.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/dom/EventContext.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -78,7 +78,8 @@
if (UNLIKELY(m_contextNodeIsFormElement)) {
ASSERT(is<HTMLFormElement>(*m_node));
- if ((event.type() == eventNames().submitEvent || event.type() == eventNames().resetEvent)
+ auto& eventNames = WebCore::eventNames();
+ if ((event.type() == eventNames.submitEvent || event.type() == eventNames.resetEvent)
&& event.eventPhase() != Event::CAPTURING_PHASE && event.target() != m_node && is<Node>(event.target())) {
event.stopPropagation();
return;
Modified: trunk/Source/WebCore/dom/EventTarget.cpp (292369 => 292370)
--- trunk/Source/WebCore/dom/EventTarget.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/dom/EventTarget.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -260,21 +260,22 @@
static const AtomString& legacyType(const Event& event)
{
- if (event.type() == eventNames().animationendEvent)
- return eventNames().webkitAnimationEndEvent;
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.animationendEvent)
+ return eventNames.webkitAnimationEndEvent;
- if (event.type() == eventNames().animationstartEvent)
- return eventNames().webkitAnimationStartEvent;
+ if (event.type() == eventNames.animationstartEvent)
+ return eventNames.webkitAnimationStartEvent;
- if (event.type() == eventNames().animationiterationEvent)
- return eventNames().webkitAnimationIterationEvent;
+ if (event.type() == eventNames.animationiterationEvent)
+ return eventNames.webkitAnimationIterationEvent;
- if (event.type() == eventNames().transitionendEvent)
- return eventNames().webkitTransitionEndEvent;
+ if (event.type() == eventNames.transitionendEvent)
+ return eventNames.webkitTransitionEndEvent;
// FIXME: This legacy name is not part of the specification (https://dom.spec.whatwg.org/#dispatching-events).
- if (event.type() == eventNames().wheelEvent)
- return eventNames().mousewheelEvent;
+ if (event.type() == eventNames.wheelEvent)
+ return eventNames.mousewheelEvent;
return nullAtom();
}
@@ -395,7 +396,8 @@
auto* data = ""
if (data && !data->eventListenerMap.isEmpty()) {
- if (data->eventListenerMap.contains(eventNames().wheelEvent) || data->eventListenerMap.contains(eventNames().mousewheelEvent))
+ auto& eventNames = WebCore::eventNames();
+ if (data->eventListenerMap.contains(eventNames.wheelEvent) || data->eventListenerMap.contains(eventNames.mousewheelEvent))
invalidateEventListenerRegions();
data->eventListenerMap.clear();
Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (292369 => 292370)
--- trunk/Source/WebCore/dom/MouseEvent.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -194,7 +194,8 @@
{
// MSIE extension - "the object toward which the user is moving the mouse pointer"
EventTarget* target;
- if (type() == eventNames().mouseoutEvent || type() == eventNames().mouseleaveEvent)
+ auto& eventNames = WebCore::eventNames();
+ if (type() == eventNames.mouseoutEvent || type() == eventNames.mouseleaveEvent)
target = relatedTarget();
else
target = this->target();
@@ -205,7 +206,8 @@
{
// MSIE extension - "object from which activation or the mouse pointer is exiting during the event" (huh?)
EventTarget* target;
- if (type() == eventNames().mouseoutEvent || type() == eventNames().mouseleaveEvent)
+ auto& eventNames = WebCore::eventNames();
+ if (type() == eventNames.mouseoutEvent || type() == eventNames.mouseleaveEvent)
target = this->target();
else
target = relatedTarget();
Modified: trunk/Source/WebCore/dom/Node.cpp (292369 => 292370)
--- trunk/Source/WebCore/dom/Node.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/dom/Node.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -2083,12 +2083,13 @@
textManipulationController->removeNode(*this);
if (auto* eventTargetData = this->eventTargetData()) {
+ auto& eventNames = WebCore::eventNames();
if (!eventTargetData->eventListenerMap.isEmpty()) {
for (auto& type : eventTargetData->eventListenerMap.eventTypes())
newDocument.addListenerTypeIfNeeded(type);
}
- unsigned numWheelEventHandlers = eventListeners(eventNames().mousewheelEvent).size() + eventListeners(eventNames().wheelEvent).size();
+ unsigned numWheelEventHandlers = eventListeners(eventNames.mousewheelEvent).size() + eventListeners(eventNames.wheelEvent).size();
for (unsigned i = 0; i < numWheelEventHandlers; ++i) {
oldDocument.didRemoveWheelEventHandler(*this);
newDocument.didAddWheelEventHandler(*this);
@@ -2097,11 +2098,11 @@
unsigned numTouchEventListeners = 0;
#if ENABLE(TOUCH_EVENTS)
if (newDocument.quirks().shouldDispatchSimulatedMouseEvents(this)) {
- for (auto& name : eventNames().extendedTouchRelatedEventNames())
+ for (auto& name : eventNames.extendedTouchRelatedEventNames())
numTouchEventListeners += eventListeners(name).size();
} else {
#endif
- for (auto& name : eventNames().touchRelatedEventNames())
+ for (auto& name : eventNames.touchRelatedEventNames())
numTouchEventListeners += eventListeners(name).size();
#if ENABLE(TOUCH_EVENTS)
}
@@ -2118,7 +2119,7 @@
#if ENABLE(TOUCH_EVENTS) && ENABLE(IOS_GESTURE_EVENTS)
unsigned numGestureEventListeners = 0;
- for (auto& name : eventNames().gestureEventNames())
+ for (auto& name : eventNames.gestureEventNames())
numGestureEventListeners += eventListeners(name).size();
for (unsigned i = 0; i < numGestureEventListeners; ++i) {
@@ -2148,25 +2149,27 @@
return false;
targetNode->document().addListenerTypeIfNeeded(eventType);
- if (eventNames().isWheelEventType(eventType))
+
+ auto& eventNames = WebCore::eventNames();
+ if (eventNames.isWheelEventType(eventType))
targetNode->document().didAddWheelEventHandler(*targetNode);
- else if (eventNames().isTouchRelatedEventType(eventType, *targetNode))
+ else if (eventNames.isTouchRelatedEventType(eventType, *targetNode))
targetNode->document().didAddTouchEventHandler(*targetNode);
#if PLATFORM(IOS_FAMILY)
- if (targetNode == &targetNode->document() && eventType == eventNames().scrollEvent) {
+ if (targetNode == &targetNode->document() && eventType == eventNames.scrollEvent) {
if (auto* window = targetNode->document().domWindow())
window->incrementScrollEventListenersCount();
}
#if ENABLE(TOUCH_EVENTS)
- if (eventNames().isTouchRelatedEventType(eventType, *targetNode))
+ if (eventNames.isTouchRelatedEventType(eventType, *targetNode))
targetNode->document().addTouchEventListener(*targetNode);
#endif
#endif // PLATFORM(IOS_FAMILY)
#if ENABLE(IOS_GESTURE_EVENTS) && ENABLE(TOUCH_EVENTS)
- if (eventNames().isGestureEventType(eventType))
+ if (eventNames.isGestureEventType(eventType))
targetNode->document().addTouchEventHandler(*targetNode);
#endif
@@ -2185,25 +2188,26 @@
// FIXME: Notify Document that the listener has vanished. We need to keep track of a number of
// listeners for each type, not just a bool - see https://bugs.webkit.org/show_bug.cgi?id=33861
- if (eventNames().isWheelEventType(eventType))
+ auto& eventNames = WebCore::eventNames();
+ if (eventNames.isWheelEventType(eventType))
targetNode->document().didRemoveWheelEventHandler(*targetNode);
- else if (eventNames().isTouchRelatedEventType(eventType, *targetNode))
+ else if (eventNames.isTouchRelatedEventType(eventType, *targetNode))
targetNode->document().didRemoveTouchEventHandler(*targetNode);
#if PLATFORM(IOS_FAMILY)
- if (targetNode == &targetNode->document() && eventType == eventNames().scrollEvent) {
+ if (targetNode == &targetNode->document() && eventType == eventNames.scrollEvent) {
if (auto* window = targetNode->document().domWindow())
window->decrementScrollEventListenersCount();
}
#if ENABLE(TOUCH_EVENTS)
- if (eventNames().isTouchRelatedEventType(eventType, *targetNode))
+ if (eventNames.isTouchRelatedEventType(eventType, *targetNode))
targetNode->document().removeTouchEventListener(*targetNode);
#endif
#endif // PLATFORM(IOS_FAMILY)
#if ENABLE(IOS_GESTURE_EVENTS) && ENABLE(TOUCH_EVENTS)
- if (eventNames().isGestureEventType(eventType))
+ if (eventNames.isGestureEventType(eventType))
targetNode->document().removeTouchEventHandler(*targetNode);
#endif
@@ -2427,27 +2431,28 @@
{
if (event.target() != this)
return;
- const AtomString& eventType = event.type();
- if (eventType == eventNames().keydownEvent || eventType == eventNames().keypressEvent || eventType == eventNames().keyupEvent) {
+ auto& eventType = event.type();
+ auto& eventNames = WebCore::eventNames();
+ if (eventType == eventNames.keydownEvent || eventType == eventNames.keypressEvent || eventType == eventNames.keyupEvent) {
if (is<KeyboardEvent>(event)) {
if (Frame* frame = document().frame())
frame->eventHandler().defaultKeyboardEventHandler(downcast<KeyboardEvent>(event));
}
- } else if (eventType == eventNames().clickEvent) {
+ } else if (eventType == eventNames.clickEvent) {
dispatchDOMActivateEvent(event);
#if ENABLE(CONTEXT_MENUS)
- } else if (eventType == eventNames().contextmenuEvent) {
+ } else if (eventType == eventNames.contextmenuEvent) {
if (Frame* frame = document().frame())
if (Page* page = frame->page())
page->contextMenuController().handleContextMenuEvent(event);
#endif
- } else if (eventType == eventNames().textInputEvent) {
+ } else if (eventType == eventNames.textInputEvent) {
if (is<TextEvent>(event)) {
if (Frame* frame = document().frame())
frame->eventHandler().defaultTextInputEventHandler(downcast<TextEvent>(event));
}
#if ENABLE(PAN_SCROLLING)
- } else if (eventType == eventNames().mousedownEvent && is<MouseEvent>(event)) {
+ } else if (eventType == eventNames.mousedownEvent && is<MouseEvent>(event)) {
if (downcast<MouseEvent>(event).button() == MiddleButton) {
if (enclosingLinkEventParentOrSelf())
return;
@@ -2462,7 +2467,7 @@
}
}
#endif
- } else if (eventNames().isWheelEventType(eventType) && is<WheelEvent>(event)) {
+ } else if (eventNames.isWheelEventType(eventType) && is<WheelEvent>(event)) {
// If we don't have a renderer, send the wheel event to the first node we find with a renderer.
// This is needed for <option> and <optgroup> elements so that <select>s get a wheel scroll.
Node* startNode = this;
@@ -2474,9 +2479,9 @@
frame->eventHandler().defaultWheelEventHandler(startNode, downcast<WheelEvent>(event));
}
#if ENABLE(TOUCH_EVENTS) && PLATFORM(IOS_FAMILY)
- } else if (is<TouchEvent>(event) && eventNames().isTouchRelatedEventType(eventType, *this)) {
+ } else if (is<TouchEvent>(event) && eventNames.isTouchRelatedEventType(eventType, *this)) {
// Capture the target node's visibility state before dispatching touchStart.
- if (is<Element>(*this) && eventType == eventNames().touchstartEvent) {
+ if (is<Element>(*this) && eventType == eventNames.touchstartEvent) {
#if ENABLE(CONTENT_CHANGE_OBSERVER)
auto& contentChangeObserver = document().contentChangeObserver();
if (ContentChangeObserver::isVisuallyHidden(*this))
@@ -2507,13 +2512,15 @@
if (downcast<Element>(*this).isDisabledFormControl())
return false;
#endif
- return hasEventListeners(eventNames().mousemoveEvent) || hasEventListeners(eventNames().mouseoverEvent) || hasEventListeners(eventNames().mouseoutEvent);
+ auto& eventNames = WebCore::eventNames();
+ return hasEventListeners(eventNames.mousemoveEvent) || hasEventListeners(eventNames.mouseoverEvent) || hasEventListeners(eventNames.mouseoutEvent);
}
bool Node::willRespondToTouchEvents()
{
+ auto& eventNames = WebCore::eventNames();
return eventTypes().containsIf([&](const auto& type) {
- return eventNames().isTouchRelatedEventType(type, *this);
+ return eventNames.isTouchRelatedEventType(type, *this);
});
}
@@ -2521,14 +2528,19 @@
{
// FIXME: Why is the iOS code path different from the non-iOS code path?
#if PLATFORM(IOS_FAMILY)
- return isContentEditable() || hasEventListeners(eventNames().mouseupEvent) || hasEventListeners(eventNames().mousedownEvent) || hasEventListeners(eventNames().clickEvent);
+ if (isContentEditable())
+ return true;
+ auto& eventNames = WebCore::eventNames();
+ return hasEventListeners(eventNames.mouseupEvent) || hasEventListeners(eventNames.mousedownEvent) || hasEventListeners(eventNames.clickEvent);
#else
if (!is<Element>(*this))
return false;
if (downcast<Element>(*this).isDisabledFormControl())
return false;
- return computeEditability(UserSelectAllIsAlwaysNonEditable, ShouldUpdateStyle::Update) != Editability::ReadOnly
- || hasEventListeners(eventNames().mouseupEvent) || hasEventListeners(eventNames().mousedownEvent) || hasEventListeners(eventNames().clickEvent) || hasEventListeners(eventNames().DOMActivateEvent);
+ if (computeEditability(UserSelectAllIsAlwaysNonEditable, ShouldUpdateStyle::Update) != Editability::ReadOnly)
+ return true;
+ auto& eventNames = WebCore::eventNames();
+ return hasEventListeners(eventNames.mouseupEvent) || hasEventListeners(eventNames.mousedownEvent) || hasEventListeners(eventNames.clickEvent) || hasEventListeners(eventNames.DOMActivateEvent);
#endif
}
Modified: trunk/Source/WebCore/dom/PointerEvent.h (292369 => 292370)
--- trunk/Source/WebCore/dom/PointerEvent.h 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/dom/PointerEvent.h 2022-04-05 03:46:42 UTC (rev 292370)
@@ -112,7 +112,7 @@
EventInterface eventInterface() const override;
private:
- static bool typeIsEnterOrLeave(const AtomString& type) { return type == eventNames().pointerenterEvent || type == eventNames().pointerleaveEvent; }
+ static bool typeIsEnterOrLeave(const AtomString& type);
static CanBubble typeCanBubble(const AtomString& type) { return typeIsEnterOrLeave(type) ? CanBubble::No : CanBubble::Yes; }
static IsCancelable typeIsCancelable(const AtomString& type) { return typeIsEnterOrLeave(type) ? IsCancelable::No : IsCancelable::Yes; }
static IsComposed typeIsComposed(const AtomString& type) { return typeIsEnterOrLeave(type) ? IsComposed::No : IsComposed::Yes; }
@@ -137,6 +137,12 @@
bool m_isPrimary { false };
};
+inline bool PointerEvent::typeIsEnterOrLeave(const AtomString& type)
+{
+ auto& eventNames = WebCore::eventNames();
+ return type == eventNames.pointerenterEvent || type == eventNames.pointerleaveEvent;
+}
+
} // namespace WebCore
SPECIALIZE_TYPE_TRAITS_EVENT(PointerEvent)
Modified: trunk/Source/WebCore/html/HTMLAnchorElement.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/HTMLAnchorElement.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/HTMLAnchorElement.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -198,10 +198,11 @@
if (hasEditableStyle()) {
// This keeps track of the editable block that the selection was in (if it was in one) just before the link was clicked
// for the LiveWhenNotFocused editable link behavior
- if (event.type() == eventNames().mousedownEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() != RightButton && document().frame()) {
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.mousedownEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() != RightButton && document().frame()) {
setRootEditableElementForSelectionOnMouseDown(document().frame()->selection().selection().rootEditableElement());
m_wasShiftKeyDownOnMouseDown = downcast<MouseEvent>(event).shiftKey();
- } else if (event.type() == eventNames().mouseoverEvent) {
+ } else if (event.type() == eventNames.mouseoverEvent) {
// These are cleared on mouseover and not mouseout because their values are needed for drag events,
// but drag events happen after mouse out events.
clearRootEditableElementForSelectionOnMouseDown();
Modified: trunk/Source/WebCore/html/HTMLButtonElement.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/HTMLButtonElement.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/HTMLButtonElement.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -136,7 +136,8 @@
if (ImageControlsMac::handleEvent(*this, event))
return;
#endif
- if (event.type() == eventNames().DOMActivateEvent && !isDisabledFormControl()) {
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.DOMActivateEvent && !isDisabledFormControl()) {
RefPtr<HTMLFormElement> protectedForm(form());
if (protectedForm) {
@@ -161,12 +162,12 @@
if (is<KeyboardEvent>(event)) {
KeyboardEvent& keyboardEvent = downcast<KeyboardEvent>(event);
- if (keyboardEvent.type() == eventNames().keydownEvent && keyboardEvent.keyIdentifier() == "U+0020") {
+ if (keyboardEvent.type() == eventNames.keydownEvent && keyboardEvent.keyIdentifier() == "U+0020") {
setActive(true, true);
// No setDefaultHandled() - IE dispatches a keypress in this case.
return;
}
- if (keyboardEvent.type() == eventNames().keypressEvent) {
+ if (keyboardEvent.type() == eventNames.keypressEvent) {
switch (keyboardEvent.charCode()) {
case '\r':
dispatchSimulatedClick(&keyboardEvent);
@@ -178,7 +179,7 @@
return;
}
}
- if (keyboardEvent.type() == eventNames().keyupEvent && keyboardEvent.keyIdentifier() == "U+0020") {
+ if (keyboardEvent.type() == eventNames.keyupEvent && keyboardEvent.keyIdentifier() == "U+0020") {
if (active())
dispatchSimulatedClick(&keyboardEvent);
keyboardEvent.setDefaultHandled();
Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/HTMLInputElement.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -1163,9 +1163,10 @@
void HTMLInputElement::willDispatchEvent(Event& event, InputElementClickState& state)
{
- if (event.type() == eventNames().textInputEvent && m_inputType->shouldSubmitImplicitly(event))
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.textInputEvent && m_inputType->shouldSubmitImplicitly(event))
event.stopPropagation();
- if (event.type() == eventNames().clickEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton) {
+ if (event.type() == eventNames.clickEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton) {
m_inputType->willDispatchClick(state);
state.stateful = true;
}
Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/HTMLSelectElement.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -1144,7 +1144,8 @@
ASSERT(renderer());
ASSERT(renderer()->isMenuList());
- if (event.type() == eventNames().keydownEvent) {
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.keydownEvent) {
if (!is<KeyboardEvent>(event))
return;
@@ -1196,7 +1197,7 @@
// Use key press event here since sending simulated mouse events
// on key down blocks the proper sending of the key press event.
- if (event.type() == eventNames().keypressEvent) {
+ if (event.type() == eventNames.keypressEvent) {
if (!is<KeyboardEvent>(event))
return;
@@ -1258,7 +1259,7 @@
keyboardEvent.setDefaultHandled();
}
- if (event.type() == eventNames().mousedownEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton) {
+ if (event.type() == eventNames.mousedownEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton) {
focus();
#if !PLATFORM(IOS_FAMILY)
document().updateStyleIfNeeded();
@@ -1280,7 +1281,7 @@
}
#if !PLATFORM(IOS_FAMILY)
- if (event.type() == eventNames().blurEvent && !focused()) {
+ if (event.type() == eventNames.blurEvent && !focused()) {
auto& menuList = downcast<RenderMenuList>(*renderer());
if (menuList.popupIsVisible())
menuList.hidePopup();
@@ -1345,7 +1346,8 @@
{
auto& listItems = this->listItems();
- if (event.type() == eventNames().mousedownEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton) {
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.mousedownEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton) {
focus();
document().updateStyleIfNeeded();
@@ -1372,7 +1374,7 @@
mouseEvent.setDefaultHandled();
}
- } else if (event.type() == eventNames().mousemoveEvent && is<MouseEvent>(event) && !downcast<RenderListBox>(*renderer()).canBeScrolledAndHasScrollableArea()) {
+ } else if (event.type() == eventNames.mousemoveEvent && is<MouseEvent>(event) && !downcast<RenderListBox>(*renderer()).canBeScrolledAndHasScrollableArea()) {
MouseEvent& mouseEvent = downcast<MouseEvent>(event);
if (mouseEvent.button() != LeftButton || !mouseEvent.buttonDown())
return;
@@ -1397,7 +1399,7 @@
}
mouseEvent.setDefaultHandled();
}
- } else if (event.type() == eventNames().mouseupEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton && document().frame()->eventHandler().autoscrollRenderer() != renderer()) {
+ } else if (event.type() == eventNames.mouseupEvent && is<MouseEvent>(event) && downcast<MouseEvent>(event).button() == LeftButton && document().frame()->eventHandler().autoscrollRenderer() != renderer()) {
// This click or drag event was not over any of the options.
if (m_lastOnChangeSelection.isEmpty())
return;
@@ -1405,7 +1407,7 @@
// click. For drag selection, onChange will fire when the autoscroll
// timer stops.
listBoxOnChange();
- } else if (event.type() == eventNames().keydownEvent) {
+ } else if (event.type() == eventNames.keydownEvent) {
if (!is<KeyboardEvent>(event))
return;
@@ -1496,7 +1498,7 @@
keyboardEvent.setDefaultHandled();
}
- } else if (event.type() == eventNames().keypressEvent) {
+ } else if (event.type() == eventNames.keypressEvent) {
if (!is<KeyboardEvent>(event))
return;
KeyboardEvent& keyboardEvent = downcast<KeyboardEvent>(event);
Modified: trunk/Source/WebCore/html/HTMLSummaryElement.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/HTMLSummaryElement.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/HTMLSummaryElement.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -117,7 +117,8 @@
void HTMLSummaryElement::defaultEventHandler(Event& event)
{
if (isActiveSummary() && renderer()) {
- if (event.type() == eventNames().DOMActivateEvent && !isClickableControl(event.target())) {
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.DOMActivateEvent && !isClickableControl(event.target())) {
if (RefPtr<HTMLDetailsElement> details = detailsElement())
details->toggleOpen();
event.setDefaultHandled();
@@ -126,12 +127,12 @@
if (is<KeyboardEvent>(event)) {
KeyboardEvent& keyboardEvent = downcast<KeyboardEvent>(event);
- if (keyboardEvent.type() == eventNames().keydownEvent && keyboardEvent.keyIdentifier() == "U+0020") {
+ if (keyboardEvent.type() == eventNames.keydownEvent && keyboardEvent.keyIdentifier() == "U+0020") {
setActive(true, true);
// No setDefaultHandled() - IE dispatches a keypress in this case.
return;
}
- if (keyboardEvent.type() == eventNames().keypressEvent) {
+ if (keyboardEvent.type() == eventNames.keypressEvent) {
switch (keyboardEvent.charCode()) {
case '\r':
dispatchSimulatedClick(&event);
@@ -143,7 +144,7 @@
return;
}
}
- if (keyboardEvent.type() == eventNames().keyupEvent && keyboardEvent.keyIdentifier() == "U+0020") {
+ if (keyboardEvent.type() == eventNames.keyupEvent && keyboardEvent.keyIdentifier() == "U+0020") {
if (active())
dispatchSimulatedClick(&event);
keyboardEvent.setDefaultHandled();
Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -158,7 +158,8 @@
void HTMLTextFormControlElement::forwardEvent(Event& event)
{
- if (event.type() == eventNames().blurEvent || event.type() == eventNames().focusEvent)
+ auto& eventNames = WebCore::eventNames();
+ if (event.type() == eventNames.blurEvent || event.type() == eventNames.focusEvent)
return;
if (auto innerText = innerTextElement())
Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/TextFieldInputType.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -235,8 +235,9 @@
return;
}
- bool isFocusEvent = event.type() == eventNames().focusEvent;
- bool isBlurEvent = event.type() == eventNames().blurEvent;
+ auto& eventNames = WebCore::eventNames();
+ bool isFocusEvent = event.type() == eventNames.focusEvent;
+ bool isBlurEvent = event.type() == eventNames.blurEvent;
if (isFocusEvent || isBlurEvent)
capsLockStateMayHaveChanged();
if (event.isMouseEvent() || isFocusEvent || isBlurEvent)
Modified: trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp (292369 => 292370)
--- trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -520,15 +520,16 @@
}
const AtomString& eventType = touchEvent.type();
- if (eventType == eventNames().touchstartEvent) {
+ auto& eventNames = WebCore::eventNames();
+ if (eventType == eventNames.touchstartEvent) {
handleTouchStart(touchEvent);
return;
}
- if (eventType == eventNames().touchendEvent || eventType == eventNames().touchcancelEvent) {
+ if (eventType == eventNames.touchendEvent || eventType == eventNames.touchcancelEvent) {
handleTouchEndAndCancel(touchEvent);
return;
}
- if (eventType == eventNames().touchmoveEvent) {
+ if (eventType == eventNames.touchmoveEvent) {
handleTouchMove(touchEvent);
return;
}
Modified: trunk/Source/WebCore/page/DOMWindow.cpp (292369 => 292370)
--- trunk/Source/WebCore/page/DOMWindow.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/page/DOMWindow.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -297,12 +297,13 @@
return Ref<DOMWindow>(*(keyValue.key));
});
+ auto& eventNames = WebCore::eventNames();
for (auto& window : windows) {
if (!set.contains(window.ptr()))
continue;
- window->dispatchEvent(PageTransitionEvent::create(eventNames().pagehideEvent, false), window->document());
- window->dispatchEvent(Event::create(eventNames().unloadEvent, Event::CanBubble::No, Event::IsCancelable::No), window->document());
+ window->dispatchEvent(PageTransitionEvent::create(eventNames.pagehideEvent, false), window->document());
+ window->dispatchEvent(Event::create(eventNames.unloadEvent, Event::CanBubble::No, Event::IsCancelable::No), window->document());
window->enableSuddenTermination();
}
@@ -1972,40 +1973,41 @@
return false;
RefPtr document = this->document();
+ auto& eventNames = WebCore::eventNames();
if (document) {
document->addListenerTypeIfNeeded(eventType);
- if (eventNames().isWheelEventType(eventType))
+ if (eventNames.isWheelEventType(eventType))
document->didAddWheelEventHandler(*document);
- else if (eventNames().isTouchRelatedEventType(eventType, *document))
+ else if (eventNames.isTouchRelatedEventType(eventType, *document))
document->didAddTouchEventHandler(*document);
- else if (eventType == eventNames().storageEvent)
+ else if (eventType == eventNames.storageEvent)
didAddStorageEventListener(*this);
}
- if (eventType == eventNames().unloadEvent)
+ if (eventType == eventNames.unloadEvent)
addUnloadEventListener(this);
- else if (eventType == eventNames().beforeunloadEvent && allowsBeforeUnloadListeners(this))
+ else if (eventType == eventNames.beforeunloadEvent && allowsBeforeUnloadListeners(this))
addBeforeUnloadEventListener(this);
#if PLATFORM(IOS_FAMILY)
- else if (eventType == eventNames().scrollEvent)
+ else if (eventType == eventNames.scrollEvent)
incrementScrollEventListenersCount();
#endif
#if ENABLE(IOS_TOUCH_EVENTS)
- else if (document && eventNames().isTouchRelatedEventType(eventType, *document))
+ else if (document && eventNames(.isTouchRelatedEventType(eventType, *document))
++m_touchAndGestureEventListenerCount;
#endif
#if ENABLE(IOS_GESTURE_EVENTS)
- else if (eventNames().isGestureEventType(eventType))
+ else if (eventNames.isGestureEventType(eventType))
++m_touchAndGestureEventListenerCount;
#endif
#if ENABLE(GAMEPAD)
- else if (eventNames().isGamepadEventType(eventType))
+ else if (eventNames.isGamepadEventType(eventType))
incrementGamepadEventListenerCount();
#endif
#if ENABLE(DEVICE_ORIENTATION)
- else if (eventType == eventNames().deviceorientationEvent)
+ else if (eventType == eventNames.deviceorientationEvent)
startListeningForDeviceOrientationIfNecessary();
- else if (eventType == eventNames().devicemotionEvent)
+ else if (eventType == eventNames.devicemotionEvent)
startListeningForDeviceMotionIfNecessary();
#endif
@@ -2215,41 +2217,42 @@
return false;
RefPtr document = this->document();
+ auto& eventNames = WebCore::eventNames();
if (document) {
- if (eventNames().isWheelEventType(eventType))
+ if (eventNames.isWheelEventType(eventType))
document->didRemoveWheelEventHandler(*document);
- else if (eventNames().isTouchRelatedEventType(eventType, *document))
+ else if (eventNames.isTouchRelatedEventType(eventType, *document))
document->didRemoveTouchEventHandler(*document);
}
- if (eventType == eventNames().unloadEvent)
+ if (eventType == eventNames.unloadEvent)
removeUnloadEventListener(this);
- else if (eventType == eventNames().beforeunloadEvent && allowsBeforeUnloadListeners(this))
+ else if (eventType == eventNames.beforeunloadEvent && allowsBeforeUnloadListeners(this))
removeBeforeUnloadEventListener(this);
#if PLATFORM(IOS_FAMILY)
- else if (eventType == eventNames().scrollEvent)
+ else if (eventType == eventNames.scrollEvent)
decrementScrollEventListenersCount();
#endif
#if ENABLE(IOS_TOUCH_EVENTS)
- else if (document && eventNames().isTouchRelatedEventType(eventType, *document)) {
+ else if (document && eventNames.isTouchRelatedEventType(eventType, *document)) {
ASSERT(m_touchAndGestureEventListenerCount > 0);
--m_touchAndGestureEventListenerCount;
}
#endif
#if ENABLE(IOS_GESTURE_EVENTS)
- else if (eventNames().isGestureEventType(eventType)) {
+ else if (eventNames.isGestureEventType(eventType)) {
ASSERT(m_touchAndGestureEventListenerCount > 0);
--m_touchAndGestureEventListenerCount;
}
#endif
#if ENABLE(GAMEPAD)
- else if (eventNames().isGamepadEventType(eventType))
+ else if (eventNames.isGamepadEventType(eventType))
decrementGamepadEventListenerCount();
#endif
#if ENABLE(DEVICE_ORIENTATION)
- else if (eventType == eventNames().deviceorientationEvent)
+ else if (eventType == eventNames.deviceorientationEvent)
stopListeningForDeviceOrientationIfNecessary();
- else if (eventType == eventNames().devicemotionEvent)
+ else if (eventType == eventNames.devicemotionEvent)
stopListeningForDeviceMotionIfNecessary();
#endif
Modified: trunk/Source/WebCore/page/EventHandler.cpp (292369 => 292370)
--- trunk/Source/WebCore/page/EventHandler.cpp 2022-04-05 03:32:00 UTC (rev 292369)
+++ trunk/Source/WebCore/page/EventHandler.cpp 2022-04-05 03:46:42 UTC (rev 292370)
@@ -2605,8 +2605,9 @@
// mouseenter and mouseleave events are only dispatched if there is a capturing eventhandler on an ancestor
// or a normal eventhandler on the element itself (they don't bubble).
// This optimization is necessary since these events can cause O(n^2) capturing event-handler checks.
- bool hasCapturingMouseEnterListener = hierarchyHasCapturingEventListeners(m_elementUnderMouse.get(), eventNames().pointerenterEvent, eventNames().mouseenterEvent);
- bool hasCapturingMouseLeaveListener = hierarchyHasCapturingEventListeners(m_lastElementUnderMouse.get(), eventNames().pointerleaveEvent, eventNames().mouseleaveEvent);
+ auto& eventNames = WebCore::eventNames();
+ bool hasCapturingMouseEnterListener = hierarchyHasCapturingEventListeners(m_elementUnderMouse.get(), eventNames.pointerenterEvent, eventNames.mouseenterEvent);
+ bool hasCapturingMouseLeaveListener = hierarchyHasCapturingEventListeners(m_lastElementUnderMouse.get(), eventNames.pointerleaveEvent, eventNames.mouseleaveEvent);
Vector<Ref<Element>, 32> leftElementsChain;
for (Element* element = m_lastElementUnderMouse.get(); element; element = element->parentElementInComposedTree())
@@ -2627,19 +2628,19 @@
}
if (auto lastElementUnderMouse = m_lastElementUnderMouse)
- lastElementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames().mouseoutEvent, 0, m_elementUnderMouse.get());
+ lastElementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames.mouseoutEvent, 0, m_elementUnderMouse.get());
for (auto& chain : leftElementsChain) {
- if (hasCapturingMouseLeaveListener || chain->hasEventListeners(eventNames().pointerleaveEvent) || chain->hasEventListeners(eventNames().mouseleaveEvent))
- chain->dispatchMouseEvent(platformMouseEvent, eventNames().mouseleaveEvent, 0, m_elementUnderMouse.get());
+ if (hasCapturingMouseLeaveListener || chain->hasEventListeners(eventNames.pointerleaveEvent) || chain->hasEventListeners(eventNames.mouseleaveEvent))
+ chain->dispatchMouseEvent(platformMouseEvent, eventNames.mouseleaveEvent, 0, m_elementUnderMouse.get());
}
if (auto elementUnderMouse = m_elementUnderMouse)
- elementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames().mouseoverEvent, 0, m_lastElementUnderMouse.get());
+ elementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventNames.mouseoverEvent, 0, m_lastElementUnderMouse.get());
for (auto& chain : makeReversedRange(enteredElementsChain)) {
- if (hasCapturingMouseEnterListener || chain->hasEventListeners(eventNames().pointerenterEvent) || chain->hasEventListeners(eventNames().mouseenterEvent))
- chain->dispatchMouseEvent(platformMouseEvent, eventNames().mouseenterEvent, 0, m_lastElementUnderMouse.get());
+ if (hasCapturingMouseEnterListener || chain->hasEventListeners(eventNames.pointerenterEvent) || chain->hasEventListeners(eventNames.mouseenterEvent))
+ chain->dispatchMouseEvent(platformMouseEvent, eventNames.mouseenterEvent, 0, m_lastElementUnderMouse.get());
}
}
@@ -4240,7 +4241,8 @@
bool EventHandler::isKeyboardOptionTab(KeyboardEvent& event)
{
- return (event.type() == eventNames().keydownEvent || event.type() == eventNames().keypressEvent)
+ auto& eventNames = WebCore::eventNames();
+ return (event.type() == eventNames.keydownEvent || event.type() == eventNames.keypressEvent)
&& event.altKey()
&& event.keyIdentifier() == "U+0009";
}