Changeset 66311 in webkit
- Timestamp:
- Aug 28, 2010 11:48:49 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r66306 r66311 1 2010-08-28 Eric Carlson <eric.carlson@apple.com> 2 3 Reviewed by Simon Fraser. 4 5 Crash reloading fast/events/tabindex-focus-blur-all.html test 6 https://bugs.webkit.org/show_bug.cgi?id=44743 7 8 * platform/mac/Skipped: Remove tabindex-focus-blur-all.html from the skip list. 9 1 10 2010-08-28 Adam Barth <abarth@webkit.org> 2 11 -
trunk/LayoutTests/platform/mac/Skipped
r66294 r66311 299 299 # https://bugs.webkit.org/show_bug.cgi?id=44566 300 300 fast/canvas/webgl/gl-teximage.html 301 302 # https://bugs.webkit.org/show_bug.cgi?id=44743303 # Test always crashes on snowleopard, crashes on reload on leopard304 fast/events/tabindex-focus-blur-all.html305 -
trunk/WebCore/ChangeLog
r66310 r66311 1 2010-08-28 Eric Carlson <eric.carlson@apple.com> 2 3 Reviewed by Simon Fraser. 4 5 Crash reloading fast/events/tabindex-focus-blur-all.html test 6 https://bugs.webkit.org/show_bug.cgi?id=44743 7 8 * html/HTMLMediaElement.cpp: 9 (WebCore::HTMLMediaElement::asyncEventTimerFired): If m_isWaitingToDecrementLoadEventDelayCount 10 is true, call setShouldDelayLoadEvent(false) and set the timer to fire the pending events 11 on the next idle. 12 (WebCore::HTMLMediaElement::setShouldDelayLoadEvent): Don't clear the delay from within a 13 media engine callback because document 'load' event handlers that cause the page to become 14 inactive will delete the media engine. 15 * html/HTMLMediaElement.h: Add m_isWaitingToDecrementLoadEventDelayCount. 16 1 17 2010-08-28 Simon Fraser <simon.fraser@apple.com> 2 18 -
trunk/WebCore/html/HTMLMediaElement.cpp
r66110 r66311 113 113 , m_isWaitingUntilMediaCanStart(false) 114 114 , m_shouldDelayLoadEvent(false) 115 , m_isWaitingToDecrementLoadEventDelayCount(false) 115 116 , m_haveFiredLoadedData(false) 116 117 , m_inActiveDocument(true) … … 372 373 void HTMLMediaElement::asyncEventTimerFired(Timer<HTMLMediaElement>*) 373 374 { 375 // If we are waiting to release our delay on the load event, do that first and post 376 // the pending events on the next go around. 377 if (m_isWaitingToDecrementLoadEventDelayCount) { 378 setShouldDelayLoadEvent(false); 379 if (!m_asyncEventTimer.isActive()) 380 m_asyncEventTimer.startOneShot(0); 381 return; 382 } 383 374 384 Vector<RefPtr<Event> > pendingEvents; 375 385 ExceptionCode ec = 0; … … 2084 2094 } 2085 2095 2086 void HTMLMediaElement::setShouldDelayLoadEvent(bool delay) 2087 { 2088 if (m_shouldDelayLoadEvent == delay) 2089 return; 2090 2091 m_shouldDelayLoadEvent = delay; 2092 if (delay) 2096 void HTMLMediaElement::setShouldDelayLoadEvent(bool shouldDelay) 2097 { 2098 if (m_shouldDelayLoadEvent == shouldDelay) 2099 return; 2100 2101 // Don't decrement the load event delay if we are in the middle of a callback from 2102 // the media engine. The load event is sent synchronously and may trigger a script that 2103 // causes the document to be come inactive and that will clear the media engine, causing 2104 // the return to be a rough one. 2105 if (!shouldDelay && processingMediaPlayerCallback()) { 2106 m_isWaitingToDecrementLoadEventDelayCount = true; 2107 2108 // Instead of creating yet-another-timer, reuse the async event timer which is always 2109 // used as a one-shot. 2110 if (!m_asyncEventTimer.isActive()) 2111 m_asyncEventTimer.startOneShot(0); 2112 return; 2113 } 2114 2115 m_shouldDelayLoadEvent = shouldDelay; 2116 m_isWaitingToDecrementLoadEventDelayCount = false; 2117 if (shouldDelay) 2093 2118 document()->incrementLoadEventDelayCount(); 2094 2119 else -
trunk/WebCore/html/HTMLMediaElement.h
r66110 r66311 343 343 bool m_isWaitingUntilMediaCanStart : 1; 344 344 bool m_shouldDelayLoadEvent : 1; 345 bool m_isWaitingToDecrementLoadEventDelayCount : 1; 345 346 bool m_haveFiredLoadedData : 1; 346 347 bool m_inActiveDocument : 1;
Note: See TracChangeset
for help on using the changeset viewer.