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 |