Changeset 181615 in webkit
- Timestamp:
- Mar 16, 2015 9:43:52 PM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r181613 r181615 1 2015-03-16 Simon Fraser <simon.fraser@apple.com> 2 3 Generalize the Document code that maintains a set of nodes with event handlers 4 https://bugs.webkit.org/show_bug.cgi?id=142762 5 6 Reviewed by Zalan Bujtas, Darin Adler. 7 8 Document.h defines a TouchEventTargetSet type, which will in future be used for 9 other event types too (wheel events), so rename it to EventTargetSet. 10 11 Take didRemoveEventTargetNode() outside the TOUCH_EVENTS #ifdef, and change it 12 to take a reference. 13 14 * dom/Document.cpp: 15 (WebCore::Document::prepareForDestruction): References 16 (WebCore::Document::didAddTouchEventHandler): Ditto. 17 (WebCore::Document::didRemoveEventTargetNode): Ditto. 18 * dom/Document.h: 19 (WebCore::Document::touchEventTargets): No-one calls this; just remove the non 20 #ideffed one. 21 * html/HTMLInputElement.cpp: 22 (WebCore::HTMLInputElement::~HTMLInputElement): Pass a ref. 23 (WebCore::HTMLInputElement::didMoveToNewDocument): Pass a ref. 24 * page/DOMWindow.cpp: 25 (WebCore::DOMWindow::removeAllEventListeners): Pass a ref. 26 1 27 2015-03-16 Joseph Pecoraro <pecoraro@apple.com> 2 28 -
trunk/Source/WebCore/dom/Document.cpp
r181519 r181615 2240 2240 #if ENABLE(TOUCH_EVENTS) 2241 2241 if (m_touchEventTargets && m_touchEventTargets->size() && parentDocument()) 2242 parentDocument()->didRemoveEventTargetNode( this);2242 parentDocument()->didRemoveEventTargetNode(*this); 2243 2243 #endif 2244 2244 … … 6013 6013 #if ENABLE(TOUCH_EVENTS) 6014 6014 if (!m_touchEventTargets.get()) 6015 m_touchEventTargets = std::make_unique< TouchEventTargetSet>();6015 m_touchEventTargets = std::make_unique<EventTargetSet>(); 6016 6016 m_touchEventTargets->add(&handler); 6017 6017 if (Document* parent = parentDocument()) { … … 6055 6055 } 6056 6056 6057 void Document::didRemoveEventTargetNode(Node& handler) 6058 { 6057 6059 #if ENABLE(TOUCH_EVENTS) 6058 void Document::didRemoveEventTargetNode(Node* handler)6059 {6060 6060 if (m_touchEventTargets) { 6061 m_touchEventTargets->removeAll(handler); 6062 if ((handler == this || m_touchEventTargets->isEmpty()) && parentDocument()) 6063 parentDocument()->didRemoveEventTargetNode(this); 6064 } 6065 } 6066 #endif 6061 m_touchEventTargets->removeAll(&handler); 6062 if ((&handler == this || m_touchEventTargets->isEmpty()) && parentDocument()) 6063 parentDocument()->didRemoveEventTargetNode(*this); 6064 } 6065 #else 6066 UNUSED_PARAM(handler); 6067 #endif 6068 } 6069 6067 6070 void Document::updateLastHandledUserGestureTimestamp() 6068 6071 { -
trunk/Source/WebCore/dom/Document.h
r181514 r181615 240 240 const int numNodeListInvalidationTypes = InvalidateOnAnyAttrChange + 1; 241 241 242 typedef HashCountedSet<Node*> TouchEventTargetSet;242 typedef HashCountedSet<Node*> EventTargetSet; 243 243 244 244 enum DocumentClass { … … 1138 1138 void didRemoveTouchEventHandler(Node&); 1139 1139 1140 void didRemoveEventTargetNode(Node&); 1141 1142 const EventTargetSet* touchEventTargets() const 1143 { 1140 1144 #if ENABLE(TOUCH_EVENTS) 1141 void didRemoveEventTargetNode(Node*); 1142 #endif 1143 1144 #if ENABLE(TOUCH_EVENTS) 1145 const TouchEventTargetSet* touchEventTargets() const { return m_touchEventTargets.get(); } 1145 return m_touchEventTargets.get(); 1146 1146 #else 1147 const TouchEventTargetSet* touchEventTargets() const { return 0; } 1148 #endif 1147 return nullptr; 1148 #endif 1149 } 1149 1150 1150 1151 bool visualUpdatesAllowed() const { return m_visualUpdatesAllowed; } … … 1559 1560 unsigned m_wheelEventHandlerCount; 1560 1561 #if ENABLE(TOUCH_EVENTS) 1561 std::unique_ptr< TouchEventTargetSet> m_touchEventTargets;1562 std::unique_ptr<EventTargetSet> m_touchEventTargets; 1562 1563 #endif 1563 1564 -
trunk/Source/WebCore/html/HTMLInputElement.cpp
r181520 r181615 167 167 #if ENABLE(TOUCH_EVENTS) 168 168 if (m_hasTouchEventHandler) 169 document().didRemoveEventTargetNode( this);169 document().didRemoveEventTargetNode(*this); 170 170 #endif 171 171 } … … 1507 1507 #if ENABLE(TOUCH_EVENTS) 1508 1508 if (m_hasTouchEventHandler) 1509 oldDocument->didRemoveEventTargetNode( this);1509 oldDocument->didRemoveEventTargetNode(*this); 1510 1510 #endif 1511 1511 } -
trunk/Source/WebCore/page/DOMWindow.cpp
r181514 r181615 1934 1934 #if ENABLE(TOUCH_EVENTS) 1935 1935 if (Document* document = this->document()) 1936 document->didRemoveEventTargetNode( document);1936 document->didRemoveEventTargetNode(*document); 1937 1937 #endif 1938 1938 -
trunk/Source/WebCore/testing/Internals.cpp
r181408 r181615 1214 1214 } 1215 1215 1216 const TouchEventTargetSet*touchHandlers = document->touchEventTargets();1216 auto touchHandlers = document->touchEventTargets(); 1217 1217 if (!touchHandlers) 1218 1218 return 0; 1219 1219 1220 1220 unsigned count = 0; 1221 for (TouchEventTargetSet::const_iterator iter = touchHandlers->begin(); iter != touchHandlers->end(); ++iter) 1222 count += iter->value; 1221 for (auto& handler : *touchHandlers) 1222 count += handler.value; 1223 1223 1224 return count; 1224 1225 }
Note: See TracChangeset
for help on using the changeset viewer.