WebKit
WebKit copied to clipboard
"targetavailabilitychanged" event fired even when media element has disabledRemotePlayback = true
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
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/aaa3495f953089021e9fb9ced2da58d7a7ba74f8)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/2001e77129bb1ec12c54cf78f4d9d484ef41144c)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/4d44a5bcd1e486199abfe436a4ff7517646fe54c)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/f958006ab842501cad67547605411074e64e1610)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/0919d6df9c7c57ad18b6f2ae6a0ae035292d0016)
EWS run on current version of this PR (hash https://github.com/WebKit/WebKit/commit/6e9854a8900f1bd757ecccf5125e06b49e1e1596)
Committed 278933@main (7eb36e38f352): https://commits.webkit.org/278933@main
Reviewed commits have been landed. Closing PR #28599 and removing active labels.