Title: [259359] trunk
Revision
259359
Author
cdu...@apple.com
Date
2020-04-01 12:30:13 -0700 (Wed, 01 Apr 2020)

Log Message

ASSERTION FAILED: m_wrapper on imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html
https://bugs.webkit.org/show_bug.cgi?id=209684
<rdar://problem/60987285>

Reviewed by Darin Adler.

Source/WebCore:

Make sure the JS wrapper does not get collected while the HTMLMediaElement is in a state where
is may still fire events (and there are JS event listeners registered). In particular, it used
to be possible for the wrapper to get collected because media playback had started and we would
crash trying to fire the very early 'canplay' JS event.

No new tests, covered by existing test.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::virtualHasPendingActivity const):

LayoutTests:

Unmark the test as crashing.

* platform/mac/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (259358 => 259359)


--- trunk/LayoutTests/ChangeLog	2020-04-01 19:15:17 UTC (rev 259358)
+++ trunk/LayoutTests/ChangeLog	2020-04-01 19:30:13 UTC (rev 259359)
@@ -1,3 +1,15 @@
+2020-04-01  Chris Dumez  <cdu...@apple.com>
+
+        ASSERTION FAILED: m_wrapper on imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html
+        https://bugs.webkit.org/show_bug.cgi?id=209684
+        <rdar://problem/60987285>
+
+        Reviewed by Darin Adler.
+
+        Unmark the test as crashing.
+
+        * platform/mac/TestExpectations:
+
 2020-04-01  Jason Lawrence  <lawrenc...@apple.com>
 
         [ iOS wk2 ] crypto/subtle/rsa-indexeddb-non-exportable-private.html is flaky timing out.

Modified: trunk/LayoutTests/platform/mac/TestExpectations (259358 => 259359)


--- trunk/LayoutTests/platform/mac/TestExpectations	2020-04-01 19:15:17 UTC (rev 259358)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2020-04-01 19:30:13 UTC (rev 259359)
@@ -1652,7 +1652,7 @@
 
 webkit.org/b/189680 platform/mac/media/audio-session-category-video-paused.html [ Pass Timeout ]
 
-webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html [ Pass Failure Crash ]
+webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html [ Pass Failure ]
 webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/error-codes/error.html [ Pass Failure ]
 
 webkit.org/b/193399 media/media-fullscreen-return-to-inline.html [ Pass Timeout Crash ]

Modified: trunk/Source/WebCore/ChangeLog (259358 => 259359)


--- trunk/Source/WebCore/ChangeLog	2020-04-01 19:15:17 UTC (rev 259358)
+++ trunk/Source/WebCore/ChangeLog	2020-04-01 19:30:13 UTC (rev 259359)
@@ -1,3 +1,21 @@
+2020-04-01  Chris Dumez  <cdu...@apple.com>
+
+        ASSERTION FAILED: m_wrapper on imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html
+        https://bugs.webkit.org/show_bug.cgi?id=209684
+        <rdar://problem/60987285>
+
+        Reviewed by Darin Adler.
+
+        Make sure the JS wrapper does not get collected while the HTMLMediaElement is in a state where
+        is may still fire events (and there are JS event listeners registered). In particular, it used
+        to be possible for the wrapper to get collected because media playback had started and we would
+        crash trying to fire the very early 'canplay' JS event.
+
+        No new tests, covered by existing test.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::virtualHasPendingActivity const):
+
 2020-04-01  Don Olmstead  <don.olmst...@sony.com>
 
         [PlayStation] Use OBJECT libraries for WebCore and PAL

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (259358 => 259359)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2020-04-01 19:15:17 UTC (rev 259358)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2020-04-01 19:30:13 UTC (rev 259359)
@@ -5761,7 +5761,10 @@
 
 bool HTMLMediaElement::virtualHasPendingActivity() const
 {
-    return (hasAudio() && isPlaying()) || m_asyncEventQueue->hasPendingActivity() || m_playbackTargetIsWirelessQueue.hasPendingTasks() || m_creatingControls;
+    return m_creatingControls
+        || (m_asyncEventQueue->hasPendingActivity() || m_playbackTargetIsWirelessQueue.hasPendingTasks())
+        || (hasAudio() && isPlaying())
+        || (m_player && (!ended() || seeking() || m_networkState >= NETWORK_IDLE) && hasEventListeners());
 }
 
 void HTMLMediaElement::mediaVolumeDidChange()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to