Index: Source/core/frame/EventHandlerRegistry.h |
diff --git a/Source/core/frame/EventHandlerRegistry.h b/Source/core/frame/EventHandlerRegistry.h |
index 3a49d51f7cee791aba2af98de053441bb538f02d..6298be7d014d78b5ebaefe1a00008bcb2dce0675 100644 |
--- a/Source/core/frame/EventHandlerRegistry.h |
+++ b/Source/core/frame/EventHandlerRegistry.h |
@@ -25,6 +25,7 @@ public: |
// multiple event types. |
enum EventHandlerClass { |
ScrollEvent, |
+ WheelEvent, |
#if ASSERT_ENABLED |
// Additional event categories for verifying handler tracking logic. |
EventsForTesting, |
@@ -38,6 +39,10 @@ public: |
// Returns a set of EventTargets which have registered handlers of the given class. |
const EventTargetSet* eventHandlerTargets(EventHandlerClass) const; |
+ // Returns the number of external event handlers for a given class. |
+ // External handlers are not included in |eventHandlerTargets|. |
+ unsigned externalEventHandlerCount(EventHandlerClass) const; |
+ |
// Registration and management of event handlers attached to EventTargets. |
void didAddEventHandler(EventTarget&, const AtomicString& eventType); |
void didAddEventHandler(EventTarget&, EventHandlerClass); |
@@ -53,6 +58,10 @@ public: |
// to handlers that are no longer related to it. |
void documentDetached(Document&); |
+ // Registration of event handlers attached to non-DOM objects. |
+ void didAddExternalEventHandler(const AtomicString& eventType); |
+ void didRemoveExternalEventHandler(const AtomicString& eventType); |
+ |
void trace(Visitor*); |
void clearWeakMembers(Visitor*); |
@@ -80,6 +89,7 @@ private: |
// parent registry and other clients accordingly. |
void updateEventHandlerOfType(ChangeOperation, const AtomicString& eventType, EventTarget*); |
+ void updateExternalHandlerCount(ChangeOperation, EventHandlerClass); |
void updateEventHandlerInternal(ChangeOperation, EventHandlerClass, EventTarget*); |
void updateAllEventHandlers(ChangeOperation, EventTarget&); |
@@ -87,7 +97,17 @@ private: |
void checkConsistency() const; |
FrameHost& m_frameHost; |
- EventTargetSet m_targets[EventHandlerClassCount]; |
+ |
+ struct HandlerState { |
+ HandlerState(); |
+ ~HandlerState(); |
+ |
+ EventTargetSet targets; |
+ // External handlers are not included in |targets|. |
+ unsigned externalHandlerCount; |
+ }; |
+ |
+ HandlerState m_handlers[EventHandlerClassCount]; |
}; |
} // namespace WebCore |