Title: [275203] trunk/Source
Revision
275203
Author
[email protected]
Date
2021-03-30 07:12:07 -0700 (Tue, 30 Mar 2021)

Log Message

Now Playing content isn't updated when media session's Metadata is modified
https://bugs.webkit.org/show_bug.cgi?id=223795
Source/WebCore:

<rdar://problem/75883478>

Patch by Jean-Yves Avenard <[email protected]> on 2021-03-30
Reviewed by Eric Carlson.

Manually tested. Ensuring that immediately after modifying the MediaSession metadata, NowPlaying reflects the change.

* Modules/mediasession/MediaSession.h:
(WebCore::MediaSession::Observer::metadataChanged): Change method prototype to avoid unnecessary refcount.
(WebCore::MediaSession::Observer::positionStateChanged): Change method prototype to pass argument by reference rather than value (and easier forward declaration).
* Modules/mediasession/MediaSessionCoordinator.cpp:
(WebCore::MediaSessionCoordinator::positionStateChanged):  Pass argument by reference rather than value.
* Modules/mediasession/MediaSessionCoordinator.h:
* Modules/mediasession/MediaSessionCoordinatorPrivate.h:
* html/MediaElementSession.cpp: Add MediaSessionObserver class, we use separate proxy to avoid multiple inheritance of CanMakeWeakPtr.
(WebCore::MediaSessionObserver::MediaSessionObserver):
(WebCore::MediaSessionObserver::~MediaSessionObserver):
(WebCore::MediaSessionObserver::actionHandlersChanged):
(WebCore::MediaElementSession::registerWithDocument): Add MediaElementSession as Media Session observer when it's added to the DOM.
(WebCore::MediaElementSession::unregisterWithDocument): Remove MediaElementSession as Media Session observer when it's removed from the DOM.
(WebCore::MediaElementSession::didReceiveRemoteControlCommand): Simplify with new mediaSession() helper.
(WebCore::MediaElementSession::nowPlayingInfo const): Simplify with new mediaSession() helper.
(WebCore::MediaElementSession::mediaSession const): Helper to retrieve associated mediaSession object.
(WebCore::MediaElementSession::ensureIsObservingMediaSession):
(WebCore::MediaElementSession::metadataChanged): Call clientCharacteristicsChanged which will trigger the PlatformMediaSessionManager to refresh the NowPlayingInfo content.
(WebCore::MediaElementSession::positionStateChanged): Method currently doing nothing. Preparing for future change.
(WebCore::MediaElementSession::playbackStateChanged): Method currently doing nothing. Preparing for future change.
(WebCore::MediaElementSession::actionHandlersChanged): Method currently doing nothing. Preparing for future change.
* html/MediaElementSession.h: Add methods.
* platform/cocoa/RemoteCommandListenerCocoa.h: Remove trailing whitespace.
* testing/MockMediaSessionCoordinator.cpp:
(WebCore::MockMediaSessionCoordinator::positionStateChanged): Update for new method prototyping.
* testing/MockMediaSessionCoordinator.h:

Source/WebKit:

Patch by Jean-Yves Avenard <[email protected]> on 2021-03-30
Reviewed by Eric Carlson.

* UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h: Update for new method prototyping.
* UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:
(WebKit::RemoteMediaSessionCoordinatorProxy::positionStateChanged): Update for new method prototyping.
* WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:
(WebKit::RemoteMediaSessionCoordinator::positionStateChanged): Update for new method prototyping.
* WebProcess/MediaSession/RemoteMediaSessionCoordinator.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (275202 => 275203)


--- trunk/Source/WebCore/ChangeLog	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/ChangeLog	2021-03-30 14:12:07 UTC (rev 275203)
@@ -1,3 +1,40 @@
+2021-03-30  Jean-Yves Avenard  <[email protected]>
+
+        Now Playing content isn't updated when media session's Metadata is modified
+        https://bugs.webkit.org/show_bug.cgi?id=223795
+        <rdar://problem/75883478>
+
+        Reviewed by Eric Carlson.
+
+        Manually tested. Ensuring that immediately after modifying the MediaSession metadata, NowPlaying reflects the change.
+
+        * Modules/mediasession/MediaSession.h:
+        (WebCore::MediaSession::Observer::metadataChanged): Change method prototype to avoid unnecessary refcount.
+        (WebCore::MediaSession::Observer::positionStateChanged): Change method prototype to pass argument by reference rather than value (and easier forward declaration).
+        * Modules/mediasession/MediaSessionCoordinator.cpp:
+        (WebCore::MediaSessionCoordinator::positionStateChanged):  Pass argument by reference rather than value.
+        * Modules/mediasession/MediaSessionCoordinator.h:
+        * Modules/mediasession/MediaSessionCoordinatorPrivate.h:
+        * html/MediaElementSession.cpp: Add MediaSessionObserver class, we use separate proxy to avoid multiple inheritance of CanMakeWeakPtr.
+        (WebCore::MediaSessionObserver::MediaSessionObserver):
+        (WebCore::MediaSessionObserver::~MediaSessionObserver):
+        (WebCore::MediaSessionObserver::actionHandlersChanged):
+        (WebCore::MediaElementSession::registerWithDocument): Add MediaElementSession as Media Session observer when it's added to the DOM.
+        (WebCore::MediaElementSession::unregisterWithDocument): Remove MediaElementSession as Media Session observer when it's removed from the DOM.
+        (WebCore::MediaElementSession::didReceiveRemoteControlCommand): Simplify with new mediaSession() helper.
+        (WebCore::MediaElementSession::nowPlayingInfo const): Simplify with new mediaSession() helper.
+        (WebCore::MediaElementSession::mediaSession const): Helper to retrieve associated mediaSession object.
+        (WebCore::MediaElementSession::ensureIsObservingMediaSession):
+        (WebCore::MediaElementSession::metadataChanged): Call clientCharacteristicsChanged which will trigger the PlatformMediaSessionManager to refresh the NowPlayingInfo content.
+        (WebCore::MediaElementSession::positionStateChanged): Method currently doing nothing. Preparing for future change.
+        (WebCore::MediaElementSession::playbackStateChanged): Method currently doing nothing. Preparing for future change.
+        (WebCore::MediaElementSession::actionHandlersChanged): Method currently doing nothing. Preparing for future change.
+        * html/MediaElementSession.h: Add methods.
+        * platform/cocoa/RemoteCommandListenerCocoa.h: Remove trailing whitespace.
+        * testing/MockMediaSessionCoordinator.cpp:
+        (WebCore::MockMediaSessionCoordinator::positionStateChanged): Update for new method prototyping.
+        * testing/MockMediaSessionCoordinator.h:
+
 2021-03-30  Antoine Quint  <[email protected]>
 
         Account for "cover" and "contain" when interpolating background-size

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSession.h (275202 => 275203)


--- trunk/Source/WebCore/Modules/mediasession/MediaSession.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSession.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -100,8 +100,8 @@
     public:
         virtual ~Observer() = default;
 
-        virtual void metadataChanged(RefPtr<MediaMetadata>) { }
-        virtual void positionStateChanged(Optional<MediaPositionState>) { }
+        virtual void metadataChanged(const RefPtr<MediaMetadata>&) { }
+        virtual void positionStateChanged(const Optional<MediaPositionState>&) { }
         virtual void playbackStateChanged(MediaSessionPlaybackState) { }
         virtual void actionHandlersChanged() { }
 

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp (275202 => 275203)


--- trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp	2021-03-30 14:12:07 UTC (rev 275203)
@@ -190,7 +190,7 @@
         m_session->addObserver(*this);
 }
 
-void MediaSessionCoordinator::positionStateChanged(Optional<MediaPositionState> state)
+void MediaSessionCoordinator::positionStateChanged(const Optional<MediaPositionState>& state)
 {
     if (!state) {
         m_privateCoordinator->positionStateChanged({ });

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h (275202 => 275203)


--- trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -59,7 +59,7 @@
     explicit MediaSessionCoordinator(Ref<MediaSessionCoordinatorPrivate>&&);
 
     // MediaSession::Observer
-    void positionStateChanged(Optional<MediaPositionState>) final;
+    void positionStateChanged(const Optional<MediaPositionState>&) final;
     void playbackStateChanged(MediaSessionPlaybackState) final;
     void readyStateChanged(MediaSessionReadyState) final;
 

Modified: trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinatorPrivate.h (275202 => 275203)


--- trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinatorPrivate.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinatorPrivate.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -58,7 +58,7 @@
     virtual void pause(CompletionHandler<void(Optional<Exception>&&)>&&) = 0;
     virtual void setTrack(const String&, CompletionHandler<void(Optional<Exception>&&)>&&) = 0;
 
-    virtual void positionStateChanged(Optional<MediaPositionState>) = 0;
+    virtual void positionStateChanged(const Optional<MediaPositionState>&) = 0;
     virtual void readyStateChanged(MediaSessionReadyState) = 0;
     virtual void playbackStateChanged(MediaSessionPlaybackState) = 0;
 

Modified: trunk/Source/WebCore/html/MediaElementSession.cpp (275202 => 275203)


--- trunk/Source/WebCore/html/MediaElementSession.cpp	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/html/MediaElementSession.cpp	2021-03-30 14:12:07 UTC (rev 275203)
@@ -56,7 +56,9 @@
 
 #if ENABLE(MEDIA_SESSION)
 #include "MediaMetadata.h"
+#include "MediaPositionState.h"
 #include "MediaSession.h"
+#include "MediaSessionPlaybackState.h"
 #include "NavigatorMediaSession.h"
 #endif
 
@@ -114,6 +116,46 @@
     return document.isMediaDocument() && !document.ownerElement() && page && page->allowsMediaDocumentInlinePlayback();
 }
 
+#if ENABLE(MEDIA_SESSION)
+class MediaSessionObserver : public MediaSession::Observer {
+    WTF_MAKE_FAST_ALLOCATED;
+
+public:
+    MediaSessionObserver(MediaElementSession& session, const Ref<MediaSession>& mediaSession)
+        : m_session(makeWeakPtr(session)), m_mediaSession(mediaSession)
+    {
+        m_mediaSession->addObserver(*this);
+    }
+    ~MediaSessionObserver()
+    {
+        m_mediaSession->removeObserver(*this);
+    }
+    void metadataChanged(const RefPtr<MediaMetadata>& metadata) final
+    {
+        if (m_session)
+            m_session->metadataChanged(metadata);
+    }
+    void positionStateChanged(const Optional<MediaPositionState>& state) final
+    {
+        if (m_session)
+            m_session->positionStateChanged(state);
+    }
+    void playbackStateChanged(MediaSessionPlaybackState state) final
+    {
+        if (m_session)
+            m_session->playbackStateChanged(state);
+    }
+    void actionHandlersChanged()
+    {
+        if (m_session)
+            m_session->actionHandlersChanged();
+    }
+private:
+    WeakPtr<MediaElementSession> m_session;
+    Ref<MediaSession> m_mediaSession;
+};
+#endif
+
 MediaElementSession::MediaElementSession(HTMLMediaElement& element)
     : PlatformMediaSession(PlatformMediaSessionManager::sharedManager(), element)
     , m_element(element)
@@ -161,6 +203,7 @@
 #else
     UNUSED_PARAM(document);
 #endif
+    ensureIsObservingMediaSession();
 }
 
 void MediaElementSession::unregisterWithDocument(Document& document)
@@ -170,6 +213,9 @@
 #else
     UNUSED_PARAM(document);
 #endif
+#if ENABLE(MEDIA_SESSION)
+    m_observer = nullptr;
+#endif
 }
 
 void MediaElementSession::clientWillBeginAutoplaying()
@@ -1028,8 +1074,7 @@
 #if ENABLE(MEDIA_SESSION)
 void MediaElementSession::didReceiveRemoteControlCommand(RemoteControlCommandType commandType, const RemoteCommandArgument& argument)
 {
-    auto* window = m_element.document().domWindow();
-    auto* session = window ? &NavigatorMediaSession::mediaSession(window->navigator()) : nullptr;
+    auto* session = mediaSession();
     if (!session || !session->hasActiveActionHandlers()) {
         PlatformMediaSession::didReceiveRemoteControlCommand(commandType, argument);
         return;
@@ -1108,12 +1153,11 @@
         currentTime = MediaPlayer::invalidTime();
 
 #if ENABLE(MEDIA_SESSION)
-    auto* window = m_element.document().domWindow();
-    auto* sessionMetadata = window ? NavigatorMediaSession::mediaSession(window->navigator()).metadata() : nullptr;
+    auto* session = mediaSession();
+    auto* sessionMetadata = session ? session->metadata() : nullptr;
     if (sessionMetadata) {
         Optional<NowPlayingInfoArtwork> artwork;
         if (sessionMetadata->artworkImage()) {
-            // FIXME: Optimize so that we only send an image if it changes.
             artwork = NowPlayingInfoArtwork { sessionMetadata->artworkSrc(), sessionMetadata->artworkImage()->mimeType(), sessionMetadata->artworkImage()->data() };
         }
         return NowPlayingInfo { sessionMetadata->title(), sessionMetadata->artist(), sessionMetadata->album(), m_element.sourceApplicationIdentifier(), duration, currentTime, supportsSeeking, m_element.mediaSessionUniqueIdentifier(), isPlaying, allowsNowPlayingControlsVisibility, WTFMove(artwork) };
@@ -1201,6 +1245,39 @@
     return values[static_cast<size_t>(enumerationValue)];
 }
 
+MediaSession* MediaElementSession::mediaSession() const
+{
+#if ENABLE(MEDIA_SESSION)
+    auto* window = m_element.document().domWindow();
+    if (!window)
+        return nullptr;
+    return &NavigatorMediaSession::mediaSession(window->navigator());
+#else
+    return nullptr;
+#endif
 }
 
+void MediaElementSession::ensureIsObservingMediaSession()
+{
+#if ENABLE(MEDIA_SESSION)
+    auto* session = mediaSession();
+    if (!session || m_observer)
+        return;
+    m_observer = makeUnique<MediaSessionObserver>(*this, *session);
+#endif
+}
+
+void MediaElementSession::metadataChanged(const RefPtr<MediaMetadata>&)
+{
+    clientCharacteristicsChanged();
+}
+
+void MediaElementSession::positionStateChanged(const Optional<MediaPositionState>&) { }
+
+void MediaElementSession::playbackStateChanged(MediaSessionPlaybackState) { }
+
+void MediaElementSession::actionHandlersChanged() { }
+
+}
+
 #endif // ENABLE(VIDEO)

Modified: trunk/Source/WebCore/html/MediaElementSession.h (275202 => 275203)


--- trunk/Source/WebCore/html/MediaElementSession.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/html/MediaElementSession.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -36,6 +36,10 @@
 #include <wtf/Optional.h>
 #include <wtf/TypeCasts.h>
 
+#if ENABLE(MEDIA_SESSION)
+#include <memory>
+#endif
+
 namespace WebCore {
 
 enum class MediaSessionMainContentPurpose {
@@ -57,7 +61,12 @@
 
 class Document;
 class HTMLMediaElement;
+class MediaMetadata;
+struct MediaPositionState;
+class MediaSession;
+class MediaSessionObserver;
 class SourceBuffer;
+enum class MediaSessionPlaybackState : uint8_t;
 
 class MediaElementSession final : public PlatformMediaSession
 {
@@ -178,6 +187,10 @@
 #if ENABLE(MEDIA_SESSION)
     void didReceiveRemoteControlCommand(RemoteControlCommandType, const RemoteCommandArgument&) final;
 #endif
+    void metadataChanged(const RefPtr<MediaMetadata>&);
+    void positionStateChanged(const Optional<MediaPositionState>&);
+    void playbackStateChanged(MediaSessionPlaybackState);
+    void actionHandlersChanged();
 
 private:
 
@@ -193,6 +206,9 @@
 #if PLATFORM(IOS_FAMILY)
     bool requiresPlaybackTargetRouteMonitoring() const override;
 #endif
+    void ensureIsObservingMediaSession();
+    MediaSession* mediaSession() const;
+
     bool updateIsMainContent() const;
     void mainContentCheckTimerFired();
 
@@ -236,6 +252,7 @@
     
 #if ENABLE(MEDIA_SESSION)
     bool m_isScrubbing { false };
+    std::unique_ptr<MediaSessionObserver> m_observer;
 #endif
 };
 

Modified: trunk/Source/WebCore/platform/cocoa/RemoteCommandListenerCocoa.h (275202 => 275203)


--- trunk/Source/WebCore/platform/cocoa/RemoteCommandListenerCocoa.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/platform/cocoa/RemoteCommandListenerCocoa.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -47,7 +47,7 @@
     const RemoteCommandsSet& defaultCommands();
     RemoteCommandsSet m_currentCommands;
 };
-    
+
 }
 
 #endif // PLATFORM(MAC)

Modified: trunk/Source/WebCore/testing/MockMediaSessionCoordinator.cpp (275202 => 275203)


--- trunk/Source/WebCore/testing/MockMediaSessionCoordinator.cpp	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/testing/MockMediaSessionCoordinator.cpp	2021-03-30 14:12:07 UTC (rev 275203)
@@ -91,7 +91,7 @@
     });
 }
 
-void MockMediaSessionCoordinator::positionStateChanged(Optional<MediaPositionState>)
+void MockMediaSessionCoordinator::positionStateChanged(const Optional<MediaPositionState>&)
 {
     ALWAYS_LOG_IF_POSSIBLE(LOGIDENTIFIER);
     m_stateChangeListener->scheduleCallback(m_context.get(), "positionStateChanged");

Modified: trunk/Source/WebCore/testing/MockMediaSessionCoordinator.h (275202 => 275203)


--- trunk/Source/WebCore/testing/MockMediaSessionCoordinator.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebCore/testing/MockMediaSessionCoordinator.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -52,7 +52,7 @@
     void pause(CompletionHandler<void(Optional<Exception>&&)>&&) final;
     void setTrack(const String&, CompletionHandler<void(Optional<Exception>&&)>&&) final;
 
-    void positionStateChanged(Optional<MediaPositionState>) final;
+    void positionStateChanged(const Optional<MediaPositionState>&) final;
     void readyStateChanged(MediaSessionReadyState) final;
     void playbackStateChanged(MediaSessionPlaybackState) final;
 

Modified: trunk/Source/WebKit/ChangeLog (275202 => 275203)


--- trunk/Source/WebKit/ChangeLog	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebKit/ChangeLog	2021-03-30 14:12:07 UTC (rev 275203)
@@ -1,3 +1,17 @@
+2021-03-30  Jean-Yves Avenard  <[email protected]>
+
+        Now Playing content isn't updated when media session's Metadata is modified
+        https://bugs.webkit.org/show_bug.cgi?id=223795
+
+        Reviewed by Eric Carlson.
+
+        * UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h: Update for new method prototyping.
+        * UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:
+        (WebKit::RemoteMediaSessionCoordinatorProxy::positionStateChanged): Update for new method prototyping.
+        * WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp: 
+        (WebKit::RemoteMediaSessionCoordinator::positionStateChanged): Update for new method prototyping.
+        * WebProcess/MediaSession/RemoteMediaSessionCoordinator.h:
+
 2021-03-29  Jiewen Tan  <[email protected]>
 
         Safari crashed and lost all tabs, after unlocking sleeping device

Modified: trunk/Source/WebKit/UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h (275202 => 275203)


--- trunk/Source/WebKit/UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebKit/UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -44,7 +44,7 @@
     virtual void pause(CompletionHandler<void(const WebCore::ExceptionData&)>&&) = 0;
     virtual void setTrack(const String&, CompletionHandler<void(const WebCore::ExceptionData&)>&&) = 0;
 
-    virtual void positionStateChanged(Optional<WebCore::MediaPositionState>) = 0;
+    virtual void positionStateChanged(const Optional<WebCore::MediaPositionState>&) = 0;
     virtual void readyStateChanged(WebCore::MediaSessionReadyState) = 0;
     virtual void playbackStateChanged(WebCore::MediaSessionPlaybackState) = 0;
 

Modified: trunk/Source/WebKit/UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp (275202 => 275203)


--- trunk/Source/WebKit/UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebKit/UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp	2021-03-30 14:12:07 UTC (rev 275203)
@@ -102,7 +102,7 @@
     });
 }
 
-void RemoteMediaSessionCoordinatorProxy::positionStateChanged(Optional<WebCore::MediaPositionState> state)
+void RemoteMediaSessionCoordinatorProxy::positionStateChanged(const Optional<WebCore::MediaPositionState>& state)
 {
     ALWAYS_LOG(LOGIDENTIFIER);
     m_privateCoordinator->positionStateChanged(state);

Modified: trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp (275202 => 275203)


--- trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp	2021-03-30 14:12:07 UTC (rev 275203)
@@ -133,7 +133,7 @@
     }, 0);
 }
 
-void RemoteMediaSessionCoordinator::positionStateChanged(Optional<WebCore::MediaPositionState> state)
+void RemoteMediaSessionCoordinator::positionStateChanged(const Optional<WebCore::MediaPositionState>& state)
 {
     ALWAYS_LOG_IF_POSSIBLE(LOGIDENTIFIER);
     m_page.send(Messages::RemoteMediaSessionCoordinatorProxy::PositionStateChanged { state }, 0);

Modified: trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.h (275202 => 275203)


--- trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.h	2021-03-30 10:02:28 UTC (rev 275202)
+++ trunk/Source/WebKit/WebProcess/MediaSession/RemoteMediaSessionCoordinator.h	2021-03-30 14:12:07 UTC (rev 275203)
@@ -65,7 +65,7 @@
     void pause(CompletionHandler<void(Optional<WebCore::Exception>&&)>&&) final;
     void setTrack(const String&, CompletionHandler<void(Optional<WebCore::Exception>&&)>&&) final;
 
-    void positionStateChanged(Optional<WebCore::MediaPositionState>) final;
+    void positionStateChanged(const Optional<WebCore::MediaPositionState>&) final;
     void readyStateChanged(WebCore::MediaSessionReadyState) final;
     void playbackStateChanged(WebCore::MediaSessionPlaybackState) final;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to