Title: [233571] trunk/Source/WebCore
- Revision
- 233571
- Author
- [email protected]
- Date
- 2018-07-06 00:37:50 -0700 (Fri, 06 Jul 2018)
Log 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):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (233570 => 233571)
--- trunk/Source/WebCore/ChangeLog 2018-07-06 06:43:28 UTC (rev 233570)
+++ trunk/Source/WebCore/ChangeLog 2018-07-06 07:37:50 UTC (rev 233571)
@@ -1,3 +1,28 @@
+2018-07-05 Ryosuke Niwa <[email protected]>
+
+ 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):
+
2018-07-05 Youenn Fablet <[email protected]>
REGRESSION (r230843): Flash doesn't work; Produces blue box on page
Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp (233570 => 233571)
--- trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp 2018-07-06 06:43:28 UTC (rev 233570)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp 2018-07-06 07:37:50 UTC (rev 233571)
@@ -935,14 +935,23 @@
|| ActiveDOMObject::hasPendingActivity();
}
-void MediaSource::suspend(ReasonForSuspension)
+void MediaSource::suspend(ReasonForSuspension reason)
{
- ASSERT(!m_asyncEventQueue.hasPendingEvents());
+ switch (reason) {
+ case ReasonForSuspension::PageCache:
+ case ReasonForSuspension::PageWillBeSuspended:
+ m_asyncEventQueue.suspend();
+ break;
+ case ReasonForSuspension::_javascript_DebuggerPaused:
+ case ReasonForSuspension::WillDeferLoading:
+ // Do nothing, we don't pause media playback in these cases.
+ break;
+ }
}
void MediaSource::resume()
{
- ASSERT(!m_asyncEventQueue.hasPendingEvents());
+ m_asyncEventQueue.resume();
}
void MediaSource::stop()
Modified: trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp (233570 => 233571)
--- trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp 2018-07-06 06:43:28 UTC (rev 233570)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp 2018-07-06 07:37:50 UTC (rev 233571)
@@ -458,14 +458,23 @@
return m_source || m_asyncEventQueue.hasPendingEvents();
}
-void SourceBuffer::suspend(ReasonForSuspension)
+void SourceBuffer::suspend(ReasonForSuspension reason)
{
- ASSERT(!hasPendingActivity());
+ switch (reason) {
+ case ReasonForSuspension::PageCache:
+ case ReasonForSuspension::PageWillBeSuspended:
+ m_asyncEventQueue.suspend();
+ break;
+ case ReasonForSuspension::_javascript_DebuggerPaused:
+ case ReasonForSuspension::WillDeferLoading:
+ // Do nothing, we don't pause media playback in these cases.
+ break;
+ }
}
void SourceBuffer::resume()
{
- ASSERT(!hasPendingActivity());
+ m_asyncEventQueue.resume();
}
void SourceBuffer::stop()
Modified: trunk/Source/WebCore/Modules/mediasource/SourceBufferList.cpp (233570 => 233571)
--- trunk/Source/WebCore/Modules/mediasource/SourceBufferList.cpp 2018-07-06 06:43:28 UTC (rev 233570)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBufferList.cpp 2018-07-06 07:37:50 UTC (rev 233571)
@@ -103,14 +103,23 @@
return !m_asyncEventQueue.hasPendingEvents();
}
-void SourceBufferList::suspend(ReasonForSuspension)
+void SourceBufferList::suspend(ReasonForSuspension reason)
{
- ASSERT(!m_asyncEventQueue.hasPendingEvents());
+ switch (reason) {
+ case ReasonForSuspension::PageCache:
+ case ReasonForSuspension::PageWillBeSuspended:
+ m_asyncEventQueue.suspend();
+ break;
+ case ReasonForSuspension::_javascript_DebuggerPaused:
+ case ReasonForSuspension::WillDeferLoading:
+ // Do nothing, we don't pause media playback in these cases.
+ break;
+ }
}
void SourceBufferList::resume()
{
- ASSERT(!m_asyncEventQueue.hasPendingEvents());
+ m_asyncEventQueue.resume();
}
void SourceBufferList::stop()
Modified: trunk/Source/WebCore/html/track/TrackListBase.cpp (233570 => 233571)
--- trunk/Source/WebCore/html/track/TrackListBase.cpp 2018-07-06 06:43:28 UTC (rev 233570)
+++ trunk/Source/WebCore/html/track/TrackListBase.cpp 2018-07-06 07:37:50 UTC (rev 233571)
@@ -180,14 +180,23 @@
return !m_asyncEventQueue.hasPendingEvents();
}
-void TrackListBase::suspend(ReasonForSuspension)
+void TrackListBase::suspend(ReasonForSuspension reason)
{
- ASSERT(!m_asyncEventQueue.hasPendingEvents());
+ switch (reason) {
+ case ReasonForSuspension::PageCache:
+ case ReasonForSuspension::PageWillBeSuspended:
+ m_asyncEventQueue.suspend();
+ break;
+ case ReasonForSuspension::_javascript_DebuggerPaused:
+ case ReasonForSuspension::WillDeferLoading:
+ // Do nothing, we don't pause media playback in these cases.
+ break;
+ }
}
void TrackListBase::resume()
{
- ASSERT(!m_asyncEventQueue.hasPendingEvents());
+ m_asyncEventQueue.resume();
}
void TrackListBase::stop()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes