WebKit icon indicating copy to clipboard operation
WebKit copied to clipboard

"targetavailabilitychanged" event fired even when media element has disabledRemotePlayback = true

Open jernoble opened this issue 1 year ago โ€ข 4 comments

f958006ab842501cad67547605411074e64e1610

"targetavailabilitychanged" event fired even when media element has disabledRemotePlayback = true
https://bugs.webkit.org/show_bug.cgi?id=274220
rdar://128137977

Reviewed by NOBODY (OOPS!).

The expectation is that `disableRemotePlayback = true` should cause all remote playback
events to not fire. Instead, disabling remote playback seems to have no effect on disabling
these events, and default media controls remote playback buttons still appear.

Add some utility methods to HTMLMediaElement to make it a bit cheaper to check whether
remote playback is disabled, and whether remote playback event listeners exist.

When changing the state of `disableRemotePlayback`, ensure that an event is fired saying
no remote playback targets exist, which cause media controls (including the native ones)
to hide the remote playback button.

* LayoutTests/media/airplay-target-availability-disableremoteplayback-expected.txt: Added.
* LayoutTests/media/airplay-target-availability-disableremoteplayback.html: Added.
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::attributeChanged):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::clearMediaPlayer):
(WebCore::HTMLMediaElement::wirelessRoutesAvailableDidChange):
(WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent):
(WebCore::HTMLMediaElement::remoteHasAvailabilityCallbacksChanged):
(WebCore::HTMLMediaElement::hasTargetAvailabilityListeners):
(WebCore::HTMLMediaElement::hasEnabledTargetAvailabilityListeners):
(WebCore::HTMLMediaElement::isWirelessPlaybackTargetDisabledChanged):
(WebCore::HTMLMediaElement::isWirelessPlaybackTargetDisabled const):
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):
* Source/WebCore/html/HTMLMediaElement.h:

https://github.com/WebKit/WebKit/commit/f958006ab842501cad67547605411074e64e1610

Misc iOS, tvOS & watchOS macOS Linux Windows
โœ… ๐Ÿงช style โœ… ๐Ÿ›  ios โœ… ๐Ÿ›  mac โœ… ๐Ÿ›  wpe โœ… ๐Ÿ›  wincairo
โœ… ๐Ÿงช bindings โœ… ๐Ÿ›  ios-sim โœ… ๐Ÿ›  mac-AS-debug โŒ ๐Ÿงช wpe-wk2
โœ… ๐Ÿงช webkitperl โŒ ๐Ÿงช ios-wk2 โœ… ๐Ÿงช api-mac โœ… ๐Ÿงช api-wpe
โŒ ๐Ÿงช ios-wk2-wpt โœ… ๐Ÿงช mac-wk1 โณ ๐Ÿ›  wpe-skia
โœ… ๐Ÿงช api-ios โœ… ๐Ÿงช mac-wk2 โœ… ๐Ÿ›  gtk
โœ… ๐Ÿ›  tv โœ… ๐Ÿงช mac-AS-debug-wk2 โŒ ๐Ÿงช gtk-wk2
โœ… ๐Ÿ›  tv-sim โœ… ๐Ÿงช mac-wk2-stress โœ… ๐Ÿงช api-gtk
โœ… ๐Ÿ›  watch
โœ… ๐Ÿ›  watch-sim

jernoble avatar May 15 '24 17:05 jernoble

Committed 278933@main (7eb36e38f352): https://commits.webkit.org/278933@main

Reviewed commits have been landed. Closing PR #28599 and removing active labels.

webkit-commit-queue avatar May 17 '24 23:05 webkit-commit-queue