Changeset 233571 in webkit


Ignore:
Timestamp:
Jul 6, 2018 12:37:50 AM (6 years ago)
Author:
rniwa@webkit.org
Message:

REGRESSION(r233496): macOS Sierra hits debug assertions in TrackListBase::suspend
https://bugs.webkit.org/show_bug.cgi?id=187378
<rdar://problem/41878885>

Reviewed by Eric Carlson.

These assertions were wrong since inline debugger, alert, etc... can suspend active DOM objects without
calling canSuspendForDocumentSuspension. Fixed the bug by removing the assertion and instead suspending
and resuming the generic event queue.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::suspend):
(WebCore::MediaSource::resume):

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::suspend):
(WebCore::SourceBuffer::resume):

  • Modules/mediasource/SourceBufferList.cpp:

(WebCore::SourceBufferList::suspend):
(WebCore::SourceBufferList::resume):

  • html/track/TrackListBase.cpp:

(WebCore::TrackListBase::suspend):
(WebCore::TrackListBase::resume):

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r233563 r233571  
     12018-07-05  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        REGRESSION(r233496): macOS Sierra hits debug assertions in TrackListBase::suspend
     4        https://bugs.webkit.org/show_bug.cgi?id=187378
     5        <rdar://problem/41878885>
     6
     7        Reviewed by Eric Carlson.
     8
     9        These assertions were wrong since inline debugger, alert, etc... can suspend active DOM objects without
     10        calling canSuspendForDocumentSuspension. Fixed the bug by removing the assertion and instead suspending
     11        and resuming the generic event queue.
     12
     13        * Modules/mediasource/MediaSource.cpp:
     14        (WebCore::MediaSource::suspend):
     15        (WebCore::MediaSource::resume):
     16        * Modules/mediasource/SourceBuffer.cpp:
     17        (WebCore::SourceBuffer::suspend):
     18        (WebCore::SourceBuffer::resume):
     19        * Modules/mediasource/SourceBufferList.cpp:
     20        (WebCore::SourceBufferList::suspend):
     21        (WebCore::SourceBufferList::resume):
     22        * html/track/TrackListBase.cpp:
     23        (WebCore::TrackListBase::suspend):
     24        (WebCore::TrackListBase::resume):
     25
    1262018-07-05  Youenn Fablet  <youenn@apple.com>
    227
  • trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp

    r233496 r233571  
    936936}
    937937
    938 void MediaSource::suspend(ReasonForSuspension)
    939 {
    940     ASSERT(!m_asyncEventQueue.hasPendingEvents());
     938void MediaSource::suspend(ReasonForSuspension reason)
     939{
     940    switch (reason) {
     941    case ReasonForSuspension::PageCache:
     942    case ReasonForSuspension::PageWillBeSuspended:
     943        m_asyncEventQueue.suspend();
     944        break;
     945    case ReasonForSuspension::JavaScriptDebuggerPaused:
     946    case ReasonForSuspension::WillDeferLoading:
     947        // Do nothing, we don't pause media playback in these cases.
     948        break;
     949    }
    941950}
    942951
    943952void MediaSource::resume()
    944953{
    945     ASSERT(!m_asyncEventQueue.hasPendingEvents());
     954    m_asyncEventQueue.resume();
    946955}
    947956
  • trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp

    r233496 r233571  
    459459}
    460460
    461 void SourceBuffer::suspend(ReasonForSuspension)
    462 {
    463     ASSERT(!hasPendingActivity());
     461void SourceBuffer::suspend(ReasonForSuspension reason)
     462{
     463    switch (reason) {
     464    case ReasonForSuspension::PageCache:
     465    case ReasonForSuspension::PageWillBeSuspended:
     466        m_asyncEventQueue.suspend();
     467        break;
     468    case ReasonForSuspension::JavaScriptDebuggerPaused:
     469    case ReasonForSuspension::WillDeferLoading:
     470        // Do nothing, we don't pause media playback in these cases.
     471        break;
     472    }
    464473}
    465474
    466475void SourceBuffer::resume()
    467476{
    468     ASSERT(!hasPendingActivity());
     477    m_asyncEventQueue.resume();
    469478}
    470479
  • trunk/Source/WebCore/Modules/mediasource/SourceBufferList.cpp

    r233496 r233571  
    104104}
    105105
    106 void SourceBufferList::suspend(ReasonForSuspension)
     106void SourceBufferList::suspend(ReasonForSuspension reason)
    107107{
    108     ASSERT(!m_asyncEventQueue.hasPendingEvents());
     108    switch (reason) {
     109    case ReasonForSuspension::PageCache:
     110    case ReasonForSuspension::PageWillBeSuspended:
     111        m_asyncEventQueue.suspend();
     112        break;
     113    case ReasonForSuspension::JavaScriptDebuggerPaused:
     114    case ReasonForSuspension::WillDeferLoading:
     115        // Do nothing, we don't pause media playback in these cases.
     116        break;
     117    }
    109118}
    110119
    111120void SourceBufferList::resume()
    112121{
    113     ASSERT(!m_asyncEventQueue.hasPendingEvents());
     122    m_asyncEventQueue.resume();
    114123}
    115124
  • trunk/Source/WebCore/html/track/TrackListBase.cpp

    r233496 r233571  
    181181}
    182182
    183 void TrackListBase::suspend(ReasonForSuspension)
    184 {
    185     ASSERT(!m_asyncEventQueue.hasPendingEvents());
     183void TrackListBase::suspend(ReasonForSuspension reason)
     184{
     185    switch (reason) {
     186    case ReasonForSuspension::PageCache:
     187    case ReasonForSuspension::PageWillBeSuspended:
     188        m_asyncEventQueue.suspend();
     189        break;
     190    case ReasonForSuspension::JavaScriptDebuggerPaused:
     191    case ReasonForSuspension::WillDeferLoading:
     192        // Do nothing, we don't pause media playback in these cases.
     193        break;
     194    }
    186195}
    187196
    188197void TrackListBase::resume()
    189198{
    190     ASSERT(!m_asyncEventQueue.hasPendingEvents());
     199    m_asyncEventQueue.resume();
    191200}
    192201
Note: See TracChangeset for help on using the changeset viewer.