| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/frame/EventHandlerRegistry.h" | 6 #include "core/frame/EventHandlerRegistry.h" |
| 7 | 7 |
| 8 #include "core/frame/LocalDOMWindow.h" | 8 #include "core/frame/LocalDOMWindow.h" |
| 9 #include "core/frame/LocalFrame.h" | 9 #include "core/frame/LocalFrame.h" |
| 10 #include "core/html/HTMLFrameOwnerElement.h" | 10 #include "core/html/HTMLFrameOwnerElement.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 || eventType == EventTypeNames::pointerleave | 34 || eventType == EventTypeNames::pointerleave |
| 35 || eventType == EventTypeNames::pointermove | 35 || eventType == EventTypeNames::pointermove |
| 36 || eventType == EventTypeNames::pointerout | 36 || eventType == EventTypeNames::pointerout |
| 37 || eventType == EventTypeNames::pointerover | 37 || eventType == EventTypeNames::pointerover |
| 38 || eventType == EventTypeNames::pointerup; | 38 || eventType == EventTypeNames::pointerup; |
| 39 } | 39 } |
| 40 | 40 |
| 41 } // namespace | 41 } // namespace |
| 42 | 42 |
| 43 EventHandlerRegistry::EventHandlerRegistry(FrameHost& frameHost) | 43 EventHandlerRegistry::EventHandlerRegistry(FrameHost& frameHost) |
| 44 : m_frameHost(frameHost) | 44 : m_frameHost(&frameHost) |
| 45 { | 45 { |
| 46 } | 46 } |
| 47 | 47 |
| 48 EventHandlerRegistry::~EventHandlerRegistry() | 48 EventHandlerRegistry::~EventHandlerRegistry() |
| 49 { | 49 { |
| 50 checkConsistency(); | 50 checkConsistency(); |
| 51 } | 51 } |
| 52 | 52 |
| 53 bool EventHandlerRegistry::eventTypeToClass(const AtomicString& eventType, Event
HandlerClass* result) | 53 bool EventHandlerRegistry::eventTypeToClass(const AtomicString& eventType, Event
HandlerClass* result) |
| 54 { | 54 { |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 void EventHandlerRegistry::didRemoveAllEventHandlers(EventTarget& target) | 189 void EventHandlerRegistry::didRemoveAllEventHandlers(EventTarget& target) |
| 190 { | 190 { |
| 191 for (size_t i = 0; i < EventHandlerClassCount; ++i) { | 191 for (size_t i = 0; i < EventHandlerClassCount; ++i) { |
| 192 EventHandlerClass handlerClass = static_cast<EventHandlerClass>(i); | 192 EventHandlerClass handlerClass = static_cast<EventHandlerClass>(i); |
| 193 updateEventHandlerInternal(RemoveAll, handlerClass, &target); | 193 updateEventHandlerInternal(RemoveAll, handlerClass, &target); |
| 194 } | 194 } |
| 195 } | 195 } |
| 196 | 196 |
| 197 void EventHandlerRegistry::notifyHasHandlersChanged(EventHandlerClass handlerCla
ss, bool hasActiveHandlers) | 197 void EventHandlerRegistry::notifyHasHandlersChanged(EventHandlerClass handlerCla
ss, bool hasActiveHandlers) |
| 198 { | 198 { |
| 199 ScrollingCoordinator* scrollingCoordinator = m_frameHost.page().scrollingCoo
rdinator(); | 199 ScrollingCoordinator* scrollingCoordinator = m_frameHost->page().scrollingCo
ordinator(); |
| 200 | 200 |
| 201 switch (handlerClass) { | 201 switch (handlerClass) { |
| 202 case ScrollEvent: | 202 case ScrollEvent: |
| 203 if (scrollingCoordinator) | 203 if (scrollingCoordinator) |
| 204 scrollingCoordinator->updateHaveScrollEventHandlers(); | 204 scrollingCoordinator->updateHaveScrollEventHandlers(); |
| 205 break; | 205 break; |
| 206 case WheelEvent: | 206 case WheelEvent: |
| 207 if (scrollingCoordinator) | 207 if (scrollingCoordinator) |
| 208 scrollingCoordinator->updateHaveWheelEventHandlers(); | 208 scrollingCoordinator->updateHaveWheelEventHandlers(); |
| 209 break; | 209 break; |
| 210 case TouchEvent: | 210 case TouchEvent: |
| 211 m_frameHost.chromeClient().needTouchEvents(hasActiveHandlers); | 211 m_frameHost->chromeClient().needTouchEvents(hasActiveHandlers); |
| 212 break; | 212 break; |
| 213 #if ENABLE(ASSERT) | 213 #if ENABLE(ASSERT) |
| 214 case EventsForTesting: | 214 case EventsForTesting: |
| 215 break; | 215 break; |
| 216 #endif | 216 #endif |
| 217 default: | 217 default: |
| 218 ASSERT_NOT_REACHED(); | 218 ASSERT_NOT_REACHED(); |
| 219 break; | 219 break; |
| 220 } | 220 } |
| 221 } | 221 } |
| 222 | 222 |
| 223 void EventHandlerRegistry::notifyDidAddOrRemoveEventHandlerTarget(EventHandlerCl
ass handlerClass) | 223 void EventHandlerRegistry::notifyDidAddOrRemoveEventHandlerTarget(EventHandlerCl
ass handlerClass) |
| 224 { | 224 { |
| 225 ScrollingCoordinator* scrollingCoordinator = m_frameHost.page().scrollingCoo
rdinator(); | 225 ScrollingCoordinator* scrollingCoordinator = m_frameHost->page().scrollingCo
ordinator(); |
| 226 if (scrollingCoordinator && handlerClass == TouchEvent) | 226 if (scrollingCoordinator && handlerClass == TouchEvent) |
| 227 scrollingCoordinator->touchEventTargetRectsDidChange(); | 227 scrollingCoordinator->touchEventTargetRectsDidChange(); |
| 228 } | 228 } |
| 229 | 229 |
| 230 DEFINE_TRACE(EventHandlerRegistry) | 230 DEFINE_TRACE(EventHandlerRegistry) |
| 231 { | 231 { |
| 232 visitor->trace(m_frameHost); |
| 232 visitor->template registerWeakMembers<EventHandlerRegistry, &EventHandlerReg
istry::clearWeakMembers>(this); | 233 visitor->template registerWeakMembers<EventHandlerRegistry, &EventHandlerReg
istry::clearWeakMembers>(this); |
| 233 } | 234 } |
| 234 | 235 |
| 235 void EventHandlerRegistry::clearWeakMembers(Visitor* visitor) | 236 void EventHandlerRegistry::clearWeakMembers(Visitor* visitor) |
| 236 { | 237 { |
| 237 Vector<EventTarget*> deadTargets; | 238 Vector<EventTarget*> deadTargets; |
| 238 for (size_t i = 0; i < EventHandlerClassCount; ++i) { | 239 for (size_t i = 0; i < EventHandlerClassCount; ++i) { |
| 239 EventHandlerClass handlerClass = static_cast<EventHandlerClass>(i); | 240 EventHandlerClass handlerClass = static_cast<EventHandlerClass>(i); |
| 240 const EventTargetSet* targets = &m_targets[handlerClass]; | 241 const EventTargetSet* targets = &m_targets[handlerClass]; |
| 241 for (const auto& eventTarget : *targets) { | 242 for (const auto& eventTarget : *targets) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 void EventHandlerRegistry::checkConsistency() const | 283 void EventHandlerRegistry::checkConsistency() const |
| 283 { | 284 { |
| 284 #if ENABLE(ASSERT) | 285 #if ENABLE(ASSERT) |
| 285 for (size_t i = 0; i < EventHandlerClassCount; ++i) { | 286 for (size_t i = 0; i < EventHandlerClassCount; ++i) { |
| 286 EventHandlerClass handlerClass = static_cast<EventHandlerClass>(i); | 287 EventHandlerClass handlerClass = static_cast<EventHandlerClass>(i); |
| 287 const EventTargetSet* targets = &m_targets[handlerClass]; | 288 const EventTargetSet* targets = &m_targets[handlerClass]; |
| 288 for (const auto& eventTarget : *targets) { | 289 for (const auto& eventTarget : *targets) { |
| 289 if (Node* node = eventTarget.key->toNode()) { | 290 if (Node* node = eventTarget.key->toNode()) { |
| 290 // See the comment for |documentDetached| if either of these ass
ertions fails. | 291 // See the comment for |documentDetached| if either of these ass
ertions fails. |
| 291 ASSERT(node->document().frameHost()); | 292 ASSERT(node->document().frameHost()); |
| 292 ASSERT(node->document().frameHost() == &m_frameHost); | 293 ASSERT(node->document().frameHost() == m_frameHost); |
| 293 } else if (LocalDOMWindow* window = eventTarget.key->toDOMWindow())
{ | 294 } else if (LocalDOMWindow* window = eventTarget.key->toDOMWindow())
{ |
| 294 // If any of these assertions fail, LocalDOMWindow failed to unr
egister its handlers | 295 // If any of these assertions fail, LocalDOMWindow failed to unr
egister its handlers |
| 295 // properly. | 296 // properly. |
| 296 ASSERT(window->frame()); | 297 ASSERT(window->frame()); |
| 297 ASSERT(window->frame()->host()); | 298 ASSERT(window->frame()->host()); |
| 298 ASSERT(window->frame()->host() == &m_frameHost); | 299 ASSERT(window->frame()->host() == m_frameHost); |
| 299 } | 300 } |
| 300 } | 301 } |
| 301 } | 302 } |
| 302 #endif // ENABLE(ASSERT) | 303 #endif // ENABLE(ASSERT) |
| 303 } | 304 } |
| 304 | 305 |
| 305 } // namespace blink | 306 } // namespace blink |
| OLD | NEW |