ASSERTION FAILED: NoEventDispatchAssertion::InMainThread::isEventAllowed() || (frameV...
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 4 Nov 2017 00:36:08 +0000 (00:36 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 4 Nov 2017 00:36:08 +0000 (00:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=179259

Reviewed by Youenn Fablet.

Avoid updating the layout inside HTMLMediaElement::stop() and MediaElementSession::~MediaElementSession

No new tests since existing tests cover this.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::userCancelledLoad): Don't update VTT cues when the active DOM objects are being stopped.
* platform/audio/mac/MediaSessionManagerMac.mm:
(WebCore::MediaSessionManagerMac::removeSession): Update the updateNowPlayingInfo asynchronously
since this function can be called inside HTMLMediaElement::~HTMLMediaElement.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@224444 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/platform/audio/mac/MediaSessionManagerMac.mm

index de5bcf1..0f9cea9 100644 (file)
@@ -1,3 +1,20 @@
+2017-11-03  Ryosuke Niwa  <rniwa@webkit.org>
+
+        ASSERTION FAILED: NoEventDispatchAssertion::InMainThread::isEventAllowed() || (frameView && frameView->isInChildFrameWithFrameFlattening())
+        https://bugs.webkit.org/show_bug.cgi?id=179259
+
+        Reviewed by Youenn Fablet.
+
+        Avoid updating the layout inside HTMLMediaElement::stop() and MediaElementSession::~MediaElementSession
+
+        No new tests since existing tests cover this.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::userCancelledLoad): Don't update VTT cues when the active DOM objects are being stopped.
+        * platform/audio/mac/MediaSessionManagerMac.mm:
+        (WebCore::MediaSessionManagerMac::removeSession): Update the updateNowPlayingInfo asynchronously
+        since this function can be called inside HTMLMediaElement::~HTMLMediaElement.
+
 2017-11-03  Alex Christensen  <achristensen@webkit.org>
 
         Add WEBCORE_EXPORT to CachedResourceHandleBase
index fa0d5ab..08dd013 100644 (file)
@@ -5344,7 +5344,12 @@ void HTMLMediaElement::userCancelledLoad()
     // Reset m_readyState since m_player is gone.
     m_readyState = HAVE_NOTHING;
     updateMediaController();
+
 #if ENABLE(VIDEO_TRACK)
+    auto* context = scriptExecutionContext();
+    if (!context || context->activeDOMObjectsAreStopped())
+        return; // Document is about to be destructed. Avoid updating layout in updateActiveTextTrackCues.
+
     updateActiveTextTrackCues(MediaTime::zeroTime());
 #endif
 }
index 2fc1b1b..2e45029 100644 (file)
@@ -95,7 +95,7 @@ void MediaSessionManagerMac::removeSession(PlatformMediaSession& session)
 {
     PlatformMediaSessionManager::removeSession(session);
     LOG(Media, "MediaSessionManagerMac::removeSession");
-    updateNowPlayingInfo();
+    scheduleUpdateNowPlayingInfo();
 }
 
 void MediaSessionManagerMac::sessionWillEndPlayback(PlatformMediaSession& session)