Changeset 244995 in webkit
- Timestamp:
- May 6, 2019 5:21:25 PM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r244988 r244995 1 2019-05-06 Chris Dumez <cdumez@apple.com> 2 3 Add assertions to JSLazyEventListener to help catch the cause of a crash 4 https://bugs.webkit.org/show_bug.cgi?id=197617 5 6 Reviewed by Alexey Proskuryakov. 7 8 Add assertions to JSLazyEventListener to help catch the cause of <rdar://problem/24314027>. 9 10 * bindings/js/JSLazyEventListener.cpp: 11 (WebCore::JSLazyEventListener::checkValidityForEventTarget): 12 * bindings/js/JSLazyEventListener.h: 13 * dom/EventListener.h: 14 (WebCore::EventListener::checkValidityForEventTarget): 15 * dom/EventTarget.cpp: 16 (WebCore::EventTarget::addEventListener): 17 (WebCore::EventTarget::setAttributeEventListener): 18 (WebCore::EventTarget::innerInvokeEventListeners): 19 1 20 2019-05-04 Per Arne Vollan <pvollan@apple.com> 2 21 -
trunk/Source/WebCore/bindings/js/JSLazyEventListener.cpp
r244926 r244995 80 80 } 81 81 82 #if !ASSERT_DISABLED 83 // This is to help find the underlying cause of <rdar://problem/24314027>. 84 void JSLazyEventListener::checkValidityForEventTarget(EventTarget& eventTarget) 85 { 86 if (eventTarget.isNode()) { 87 ASSERT(m_originalNode); 88 ASSERT(static_cast<EventTarget*>(m_originalNode.get()) == &eventTarget); 89 } else 90 ASSERT(!m_originalNode); 91 } 92 #endif 93 82 94 JSLazyEventListener::~JSLazyEventListener() 83 95 { -
trunk/Source/WebCore/bindings/js/JSLazyEventListener.h
r244926 r244995 47 47 JSLazyEventListener(CreationArguments&&, const String& sourceURL, const TextPosition&); 48 48 49 #if !ASSERT_DISABLED 50 void checkValidityForEventTarget(EventTarget&) final; 51 #endif 52 49 53 JSC::JSObject* initializeJSFunction(ScriptExecutionContext&) const final; 50 54 bool wasCreatedFromMarkup() const final { return true; } -
trunk/Source/WebCore/dom/EventListener.h
r228260 r244995 32 32 class ScriptExecutionContext; 33 33 class Event; 34 class EventTarget; 34 35 35 36 class EventListener : public RefCounted<EventListener> { … … 56 57 Type type() const { return m_type; } 57 58 59 #if !ASSERT_DISABLED 60 virtual void checkValidityForEventTarget(EventTarget&) { } 61 #endif 62 58 63 protected: 59 64 explicit EventListener(Type type) -
trunk/Source/WebCore/dom/EventTarget.cpp
r243887 r244995 39 39 #include "InspectorInstrumentation.h" 40 40 #include "JSEventListener.h" 41 #include "JSLazyEventListener.h" 41 42 #include "RuntimeEnabledFeatures.h" 42 43 #include "ScriptController.h" … … 70 71 bool EventTarget::addEventListener(const AtomicString& eventType, Ref<EventListener>&& listener, const AddEventListenerOptions& options) 71 72 { 73 #if !ASSERT_DISABLED 74 listener->checkValidityForEventTarget(*this); 75 #endif 76 72 77 auto passive = options.passive; 73 78 … … 146 151 InspectorInstrumentation::willRemoveEventListener(*this, eventType, *existingListener, false); 147 152 153 #if !ASSERT_DISABLED 154 listener->checkValidityForEventTarget(*this); 155 #endif 156 148 157 auto listenerPointer = listener.copyRef(); 149 158 eventTargetData()->eventListenerMap.replace(eventType, *existingListener, listener.releaseNonNull(), { }); … … 302 311 event.setInPassiveListener(true); 303 312 313 #if !ASSERT_DISABLED 314 registeredListener->callback().checkValidityForEventTarget(*this); 315 #endif 316 304 317 InspectorInstrumentation::willHandleEvent(context, event, *registeredListener); 305 318 registeredListener->callback().handleEvent(context, event);
Note: See TracChangeset
for help on using the changeset viewer.