Title: [279289] trunk/Source/WebCore
Revision
279289
Author
[email protected]
Date
2021-06-25 10:55:19 -0700 (Fri, 25 Jun 2021)

Log Message

WIRELESS_PLAYBACK_TARGET guards protect unrelated code
https://bugs.webkit.org/show_bug.cgi?id=227404

Patch by Philippe Normand <[email protected]> on 2021-06-25
Reviewed by Eric Carlson.

The dispatchEvent(), addEventListener() and removeEventListener() are now unconditionally
implemented. The WIRELESS_PLAYBACK_TARGET guards were refactored to enclose only the code
specific to this feature.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent):
(WebCore::HTMLMediaElement::setWirelessPlaybackTarget):
(WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget):
(WebCore::HTMLMediaElement::playbackTargetPickerWasDismissed):
(WebCore::HTMLMediaElement::remoteHasAvailabilityCallbacksChanged):
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):
* html/HTMLMediaElement.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (279288 => 279289)


--- trunk/Source/WebCore/ChangeLog	2021-06-25 17:12:12 UTC (rev 279288)
+++ trunk/Source/WebCore/ChangeLog	2021-06-25 17:55:19 UTC (rev 279289)
@@ -1,3 +1,24 @@
+2021-06-25  Philippe Normand  <[email protected]>
+
+        WIRELESS_PLAYBACK_TARGET guards protect unrelated code
+        https://bugs.webkit.org/show_bug.cgi?id=227404
+
+        Reviewed by Eric Carlson.
+
+        The dispatchEvent(), addEventListener() and removeEventListener() are now unconditionally
+        implemented. The WIRELESS_PLAYBACK_TARGET guards were refactored to enclose only the code
+        specific to this feature.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent):
+        (WebCore::HTMLMediaElement::setWirelessPlaybackTarget):
+        (WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget):
+        (WebCore::HTMLMediaElement::playbackTargetPickerWasDismissed):
+        (WebCore::HTMLMediaElement::remoteHasAvailabilityCallbacksChanged):
+        (WebCore::HTMLMediaElement::addEventListener):
+        (WebCore::HTMLMediaElement::removeEventListener):
+        * html/HTMLMediaElement.h:
+
 2021-06-25  Ryan Haddad  <[email protected]>
 
         Unreviewed, reverting r279208.

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (279288 => 279289)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2021-06-25 17:12:12 UTC (rev 279288)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2021-06-25 17:55:19 UTC (rev 279289)
@@ -5813,6 +5813,51 @@
     });
 }
 
+void HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent()
+{
+    bool hasTargets = m_mediaSession && mediaSession().hasWirelessPlaybackTargets();
+    ALWAYS_LOG(LOGIDENTIFIER, "hasTargets = ", hasTargets);
+    auto event = WebKitPlaybackTargetAvailabilityEvent::create(eventNames().webkitplaybacktargetavailabilitychangedEvent, hasTargets);
+    scheduleEvent(WTFMove(event));
+    scheduleUpdateMediaState();
+}
+
+void HTMLMediaElement::setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&& device)
+{
+    bool hasActiveRoute = device->hasActiveRoute();
+    ALWAYS_LOG(LOGIDENTIFIER, hasActiveRoute);
+
+    if (m_player)
+        m_player->setWirelessPlaybackTarget(WTFMove(device));
+    m_remote->shouldPlayToRemoteTargetChanged(hasActiveRoute);
+}
+
+void HTMLMediaElement::setShouldPlayToPlaybackTarget(bool shouldPlay)
+{
+    if (m_player) {
+        m_player->setShouldPlayToPlaybackTarget(shouldPlay);
+        setIsPlayingToWirelessTarget(m_player->isCurrentPlaybackTargetWireless());
+    }
+}
+
+void HTMLMediaElement::playbackTargetPickerWasDismissed()
+{
+    m_remote->playbackTargetPickerWasDismissed();
+}
+
+void HTMLMediaElement::remoteHasAvailabilityCallbacksChanged()
+{
+    bool hasListeners = hasEventListeners(eventNames().webkitplaybacktargetavailabilitychangedEvent) || m_remote->hasAvailabilityCallbacks();
+    if (m_hasPlaybackTargetAvailabilityListeners == hasListeners)
+        return;
+
+    ALWAYS_LOG(LOGIDENTIFIER, "hasListeners: ", hasListeners);
+    m_hasPlaybackTargetAvailabilityListeners = hasListeners;
+    mediaSession().setHasPlaybackTargetAvailabilityListeners(hasListeners);
+    scheduleUpdateMediaState();
+}
+#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
+
 void HTMLMediaElement::dispatchEvent(Event& event)
 {
     DEBUG_LOG(LOGIDENTIFIER, event.type());
@@ -5838,6 +5883,7 @@
         updateShouldContinueAfterNeedKey();
 #endif
 
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     if (eventType != eventNames().webkitplaybacktargetavailabilitychangedEvent)
         return Node::addEventListener(eventType, WTFMove(listener), options);
 
@@ -5856,6 +5902,9 @@
 
     enqueuePlaybackTargetAvailabilityChangedEvent(); // Ensure the event listener gets at least one event.
     return true;
+#else
+    return Node::addEventListener(eventType, WTFMove(listener), options);
+#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
 }
 
 bool HTMLMediaElement::removeEventListener(const AtomString& eventType, EventListener& listener, const EventListenerOptions& options)
@@ -5865,10 +5914,12 @@
         updateShouldContinueAfterNeedKey();
 #endif
 
+    bool listenerWasRemoved = Node::removeEventListener(eventType, listener, options);
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     if (eventType != eventNames().webkitplaybacktargetavailabilitychangedEvent)
-        return Node::removeEventListener(eventType, listener, options);
+        return listenerWasRemoved;
 
-    if (!Node::removeEventListener(eventType, listener, options))
+    if (!listenerWasRemoved)
         return false;
 
     bool didRemoveLastAvailabilityChangedListener = !hasEventListeners(eventNames().webkitplaybacktargetavailabilitychangedEvent) && !m_remote->hasAvailabilityCallbacks();
@@ -5878,55 +5929,11 @@
         mediaSession().setHasPlaybackTargetAvailabilityListeners(false);
         scheduleUpdateMediaState();
     }
+#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
 
-    return true;
+    return listenerWasRemoved;
 }
 
-void HTMLMediaElement::enqueuePlaybackTargetAvailabilityChangedEvent()
-{
-    bool hasTargets = m_mediaSession && mediaSession().hasWirelessPlaybackTargets();
-    ALWAYS_LOG(LOGIDENTIFIER, "hasTargets = ", hasTargets);
-    auto event = WebKitPlaybackTargetAvailabilityEvent::create(eventNames().webkitplaybacktargetavailabilitychangedEvent, hasTargets);
-    scheduleEvent(WTFMove(event));
-    scheduleUpdateMediaState();
-}
-
-void HTMLMediaElement::setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&& device)
-{
-    bool hasActiveRoute = device->hasActiveRoute();
-    ALWAYS_LOG(LOGIDENTIFIER, hasActiveRoute);
-
-    if (m_player)
-        m_player->setWirelessPlaybackTarget(WTFMove(device));
-    m_remote->shouldPlayToRemoteTargetChanged(hasActiveRoute);
-}
-
-void HTMLMediaElement::setShouldPlayToPlaybackTarget(bool shouldPlay)
-{
-    if (m_player) {
-        m_player->setShouldPlayToPlaybackTarget(shouldPlay);
-        setIsPlayingToWirelessTarget(m_player->isCurrentPlaybackTargetWireless());
-    }
-}
-
-void HTMLMediaElement::playbackTargetPickerWasDismissed()
-{
-    m_remote->playbackTargetPickerWasDismissed();
-}
-
-void HTMLMediaElement::remoteHasAvailabilityCallbacksChanged()
-{
-    bool hasListeners = hasEventListeners(eventNames().webkitplaybacktargetavailabilitychangedEvent) || m_remote->hasAvailabilityCallbacks();
-    if (m_hasPlaybackTargetAvailabilityListeners == hasListeners)
-        return;
-
-    ALWAYS_LOG(LOGIDENTIFIER, "hasListeners: ", hasListeners);
-    m_hasPlaybackTargetAvailabilityListeners = hasListeners;
-    mediaSession().setHasPlaybackTargetAvailabilityListeners(hasListeners);
-    scheduleUpdateMediaState();
-}
-#endif // ENABLE(WIRELESS_PLAYBACK_TARGET)
-
 bool HTMLMediaElement::webkitCurrentPlaybackTargetIsWireless() const
 {
     INFO_LOG(LOGIDENTIFIER, m_isPlayingToWirelessTarget);

Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (279288 => 279289)


--- trunk/Source/WebCore/html/HTMLMediaElement.h	2021-06-25 17:12:12 UTC (rev 279288)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h	2021-06-25 17:55:19 UTC (rev 279289)
@@ -398,11 +398,12 @@
     void textTrackReadyStateChanged(TextTrack*);
     void updateTextTrackRepresentationImageIfNeeded();
 
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
-    void webkitShowPlaybackTargetPicker();
     bool addEventListener(const AtomString& eventType, Ref<EventListener>&&, const AddEventListenerOptions&) override;
     bool removeEventListener(const AtomString& eventType, EventListener&, const EventListenerOptions&) override;
 
+#if ENABLE(WIRELESS_PLAYBACK_TARGET)
+    void webkitShowPlaybackTargetPicker();
+
     void wirelessRoutesAvailableDidChange() override;
     void setWirelessPlaybackTarget(Ref<MediaPlaybackTarget>&&) override;
     void setShouldPlayToPlaybackTarget(bool) override;
@@ -572,10 +573,8 @@
 
     void didReceiveRemoteControlCommand(PlatformMediaSession::RemoteControlCommandType, const PlatformMediaSession::RemoteCommandArgument&) override;
 
-#if ENABLE(WIRELESS_PLAYBACK_TARGET)
     using EventTarget::dispatchEvent;
     void dispatchEvent(Event&) override;
-#endif
 
 protected:
     HTMLMediaElement(const QualifiedName&, Document&, bool createdByParser);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to