Diff
Modified: trunk/Source/WebCore/ChangeLog (181513 => 181514)
--- trunk/Source/WebCore/ChangeLog 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/ChangeLog 2015-03-15 22:47:08 UTC (rev 181514)
@@ -1,5 +1,35 @@
2015-03-15 Simon Fraser <simon.fra...@apple.com>
+ Clean up related to wheelEvent names
+ https://bugs.webkit.org/show_bug.cgi?id=142713
+
+ Reviewed by Anders Carlsson.
+
+ Add EventNames::isWheelEventType() and use it in places that test for the
+ two wheel event names.
+
+ * dom/Document.cpp:
+ (WebCore::Document::didAddWheelEventHandler):
+ (WebCore::Document::didRemoveWheelEventHandler):
+ * dom/Document.h: No need for exports (I grepped). Pass the Node*, which
+ will be used in a later patch.
+ * dom/EventNames.h:
+ (WebCore::EventNames::isWheelEventType):
+ * dom/Node.cpp:
+ (WebCore::Node::didMoveToNewDocument):
+ (WebCore::tryAddEventListener):
+ (WebCore::tryRemoveEventListener):
+ (WebCore::Node::defaultEventHandler):
+ * html/shadow/MediaControlsApple.cpp:
+ (WebCore::MediaControlsAppleEventListener::handleEvent):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::addEventListener):
+ (WebCore::DOMWindow::removeEventListener):
+ * page/ios/FrameIOS.mm:
+ (WebCore::ancestorRespondingToScrollWheelEvents): Remove dead code.
+
+2015-03-15 Simon Fraser <simon.fra...@apple.com>
+
Remove a redundant repaint when a layer becomes composited
https://bugs.webkit.org/show_bug.cgi?id=142711
Modified: trunk/Source/WebCore/dom/Document.cpp (181513 => 181514)
--- trunk/Source/WebCore/dom/Document.cpp 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/dom/Document.cpp 2015-03-15 22:47:08 UTC (rev 181514)
@@ -5995,25 +5995,25 @@
scrollingCoordinator->frameViewWheelEventHandlerCountChanged(frameView);
}
-void Document::didAddWheelEventHandler()
+void Document::didAddWheelEventHandler(Node&)
{
++m_wheelEventHandlerCount;
wheelEventHandlerCountChanged(this);
}
-void Document::didRemoveWheelEventHandler()
+void Document::didRemoveWheelEventHandler(Node&)
{
ASSERT(m_wheelEventHandlerCount > 0);
--m_wheelEventHandlerCount;
wheelEventHandlerCountChanged(this);
}
-void Document::didAddTouchEventHandler(Node* handler)
+void Document::didAddTouchEventHandler(Node& handler)
{
#if ENABLE(TOUCH_EVENTS)
if (!m_touchEventTargets.get())
m_touchEventTargets = std::make_unique<TouchEventTargetSet>();
- m_touchEventTargets->add(handler);
+ m_touchEventTargets->add(&handler);
if (Document* parent = parentDocument()) {
parent->didAddTouchEventHandler(this);
return;
@@ -6027,13 +6027,13 @@
#endif
}
-void Document::didRemoveTouchEventHandler(Node* handler)
+void Document::didRemoveTouchEventHandler(Node& handler)
{
#if ENABLE(TOUCH_EVENTS)
if (!m_touchEventTargets.get())
return;
ASSERT(m_touchEventTargets->contains(handler));
- m_touchEventTargets->remove(handler);
+ m_touchEventTargets->remove(&handler);
if (Document* parent = parentDocument()) {
parent->didRemoveTouchEventHandler(this);
return;
Modified: trunk/Source/WebCore/dom/Document.h (181513 => 181514)
--- trunk/Source/WebCore/dom/Document.h 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/dom/Document.h 2015-03-15 22:47:08 UTC (rev 181514)
@@ -1122,8 +1122,8 @@
void initDNSPrefetch();
unsigned wheelEventHandlerCount() const { return m_wheelEventHandlerCount; }
- WEBCORE_EXPORT void didAddWheelEventHandler();
- WEBCORE_EXPORT void didRemoveWheelEventHandler();
+ void didAddWheelEventHandler(Node&);
+ void didRemoveWheelEventHandler(Node&);
double lastHandledUserGestureTimestamp() const { return m_lastHandledUserGestureTimestamp; }
void updateLastHandledUserGestureTimestamp();
@@ -1134,8 +1134,8 @@
bool hasTouchEventHandlers() const { return false; }
#endif
- void didAddTouchEventHandler(Node*);
- void didRemoveTouchEventHandler(Node*);
+ void didAddTouchEventHandler(Node&);
+ void didRemoveTouchEventHandler(Node&);
#if ENABLE(TOUCH_EVENTS)
void didRemoveEventTargetNode(Node*);
Modified: trunk/Source/WebCore/dom/EventNames.h (181513 => 181514)
--- trunk/Source/WebCore/dom/EventNames.h 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/dom/EventNames.h 2015-03-15 22:47:08 UTC (rev 181514)
@@ -264,6 +264,7 @@
// FIXME: Inelegant to call these both event names and event types.
// We should choose one term and stick to it.
+ bool isWheelEventType(const AtomicString& eventType) const;
bool isGestureEventType(const AtomicString& eventType) const;
bool isTouchEventType(const AtomicString& eventType) const;
#if ENABLE(GAMEPAD)
@@ -299,6 +300,12 @@
|| eventType == touchcancelEvent;
}
+inline bool EventNames::isWheelEventType(const AtomicString& eventType) const
+{
+ return eventType == wheelEvent
+ || eventType == mousewheelEvent;
+}
+
inline std::array<std::reference_wrapper<const AtomicString>, 4> EventNames::touchEventNames() const
{
return { { touchstartEvent, touchmoveEvent, touchendEvent, touchcancelEvent } };
Modified: trunk/Source/WebCore/dom/Node.cpp (181513 => 181514)
--- trunk/Source/WebCore/dom/Node.cpp 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/dom/Node.cpp 2015-03-15 22:47:08 UTC (rev 181514)
@@ -1712,19 +1712,19 @@
cache->remove(this);
}
- unsigned numWheelEventHandlers = getEventListeners(eventNames().mousewheelEvent).size()
- + getEventListeners(eventNames().wheelEvent).size();
+ unsigned numWheelEventHandlers = getEventListeners(eventNames().mousewheelEvent).size() + getEventListeners(eventNames().wheelEvent).size();
for (unsigned i = 0; i < numWheelEventHandlers; ++i) {
- oldDocument->didRemoveWheelEventHandler();
- document().didAddWheelEventHandler();
+ oldDocument->didRemoveWheelEventHandler(*this);
+ document().didAddWheelEventHandler(*this);
}
unsigned numTouchEventHandlers = 0;
for (auto& name : eventNames().touchEventNames())
numTouchEventHandlers += getEventListeners(name).size();
+
for (unsigned i = 0; i < numTouchEventHandlers; ++i) {
- oldDocument->didRemoveTouchEventHandler(this);
- document().didAddTouchEventHandler(this);
+ oldDocument->didRemoveTouchEventHandler(*this);
+ document().didAddTouchEventHandler(*this);
}
if (auto* registry = mutationObserverRegistry()) {
@@ -1746,10 +1746,10 @@
return false;
targetNode->document().addListenerTypeIfNeeded(eventType);
- if (eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent)
- targetNode->document().didAddWheelEventHandler();
+ if (eventNames().isWheelEventType(eventType))
+ targetNode->document().didAddWheelEventHandler(*targetNode);
else if (eventNames().isTouchEventType(eventType))
- targetNode->document().didAddTouchEventHandler(targetNode);
+ targetNode->document().didAddTouchEventHandler(*targetNode);
#if PLATFORM(IOS)
if (targetNode == &targetNode->document() && eventType == eventNames().scrollEvent)
@@ -1788,10 +1788,10 @@
// 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 (eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent)
- targetNode->document().didRemoveWheelEventHandler();
+ if (eventNames().isWheelEventType(eventType))
+ targetNode->document().didRemoveWheelEventHandler(*targetNode);
else if (eventNames().isTouchEventType(eventType))
- targetNode->document().didRemoveTouchEventHandler(targetNode);
+ targetNode->document().didRemoveTouchEventHandler(*targetNode);
#if PLATFORM(IOS)
if (targetNode == &targetNode->document() && eventType == eventNames().scrollEvent)
@@ -2086,8 +2086,7 @@
}
}
#endif
- } else if ((eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent) && 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;
Modified: trunk/Source/WebCore/history/CachedFrame.cpp (181513 => 181514)
--- trunk/Source/WebCore/history/CachedFrame.cpp 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/history/CachedFrame.cpp 2015-03-15 22:47:08 UTC (rev 181514)
@@ -116,6 +116,7 @@
if (DOMWindow* domWindow = m_document->domWindow()) {
// FIXME: Add SCROLL_LISTENER to the list of event types on Document, and use m_document->hasListenerType(). See <rdar://problem/9615482>.
+ // FIXME: Can use Document::hasListenerType() now.
if (domWindow->scrollEventListenerCount() && frame.page())
frame.page()->chrome().client().setNeedsScrollNotifications(&frame, true);
}
Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp (181513 => 181514)
--- trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp 2015-03-15 22:47:08 UTC (rev 181514)
@@ -588,7 +588,7 @@
{
if (event->type() == eventNames().clickEvent)
m_mediaControls->handleClickEvent(event);
- else if ((event->type() == eventNames().wheelEvent || event->type() == eventNames().mousewheelEvent) && is<WheelEvent>(*event)) {
+ else if (eventNames().isWheelEventType(event->type()) && is<WheelEvent>(*event)) {
WheelEvent& wheelEvent = downcast<WheelEvent>(*event);
if (m_mediaControls->shouldClosedCaptionsContainerPreventPageScrolling(wheelEvent.wheelDeltaY()))
wheelEvent.preventDefault();
Modified: trunk/Source/WebCore/page/DOMWindow.cpp (181513 => 181514)
--- trunk/Source/WebCore/page/DOMWindow.cpp 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/page/DOMWindow.cpp 2015-03-15 22:47:08 UTC (rev 181514)
@@ -1697,10 +1697,10 @@
if (Document* document = this->document()) {
document->addListenerTypeIfNeeded(eventType);
- if (eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent)
- document->didAddWheelEventHandler();
+ if (eventNames().isWheelEventType(eventType))
+ document->didAddWheelEventHandler(*document);
else if (eventNames().isTouchEventType(eventType))
- document->didAddTouchEventHandler(document);
+ document->didAddTouchEventHandler(*document);
else if (eventType == eventNames().storageEvent)
didAddStorageEventListener(this);
}
@@ -1788,10 +1788,10 @@
return false;
if (Document* document = this->document()) {
- if (eventType == eventNames().wheelEvent || eventType == eventNames().mousewheelEvent)
- document->didRemoveWheelEventHandler();
+ if (eventNames().isWheelEventType(eventType))
+ document->didRemoveWheelEventHandler(*document);
else if (eventNames().isTouchEventType(eventType))
- document->didRemoveTouchEventHandler(document);
+ document->didRemoveTouchEventHandler(*document);
}
if (eventType == eventNames().unloadEvent)
Modified: trunk/Source/WebCore/page/ios/FrameIOS.mm (181513 => 181514)
--- trunk/Source/WebCore/page/ios/FrameIOS.mm 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebCore/page/ios/FrameIOS.mm 2015-03-15 22:47:08 UTC (rev 181514)
@@ -273,8 +273,6 @@
return CGRectZero;
}
-#define ALLOW_SCROLL_LISTENERS 0
-
static Node* ancestorRespondingToScrollWheelEvents(const HitTestResult& hitTestResult, Node* terminationNode, IntRect* nodeBounds)
{
if (nodeBounds)
@@ -282,13 +280,6 @@
Node* scrollingAncestor = nullptr;
for (Node* node = hitTestResult.innerNode(); node && node != terminationNode && !node->hasTagName(HTMLNames::bodyTag); node = node->parentNode()) {
-#if ALLOW_SCROLL_LISTENERS
- if (node->willRespondToMouseWheelEvents()) {
- scrollingAncestor = node;
- continue;
- }
-#endif
-
RenderObject* renderer = node->renderer();
if (!renderer)
continue;
Modified: trunk/Source/WebKit2/ChangeLog (181513 => 181514)
--- trunk/Source/WebKit2/ChangeLog 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebKit2/ChangeLog 2015-03-15 22:47:08 UTC (rev 181514)
@@ -1,3 +1,16 @@
+2015-03-15 Simon Fraser <simon.fra...@apple.com>
+
+ Clean up related to wheelEvent names
+ https://bugs.webkit.org/show_bug.cgi?id=142713
+
+ Reviewed by Anders Carlsson.
+
+ Add EventNames::isWheelEventType() and use it in places that test for the
+ two wheel event names.
+
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::handleEvent):
+
2015-03-15 Dan Bernstein <m...@apple.com>
[iOS] Presenting a modal sheet on top of a WKWebView causes it to lose focused, active state
Modified: trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (181513 => 181514)
--- trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2015-03-15 20:42:44 UTC (rev 181513)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2015-03-15 22:47:08 UTC (rev 181514)
@@ -919,7 +919,7 @@
didHandleEvent = m_plugin->handleMouseEvent(static_cast<const WebMouseEvent&>(*currentEvent));
if (event->type() != eventNames().mousemoveEvent)
pluginDidReceiveUserInteraction();
- } else if ((event->type() == eventNames().wheelEvent || event->type() == eventNames().mousewheelEvent)
+ } else if (eventNames().isWheelEventType(event->type())
&& currentEvent->type() == WebEvent::Wheel && m_plugin->wantsWheelEvents()) {
didHandleEvent = m_plugin->handleWheelEvent(static_cast<const WebWheelEvent&>(*currentEvent));
pluginDidReceiveUserInteraction();