| 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
|
|
|