Index: content/browser/media/session/media_session_impl.h |
diff --git a/content/browser/media/session/media_session_impl.h b/content/browser/media/session/media_session_impl.h |
index 1f1a0fc85d172fd45655d48251e7ee86ac05bae3..663bb96d6cb8ad67a3bccc2de8968cd8b53ba6af 100644 |
--- a/content/browser/media/session/media_session_impl.h |
+++ b/content/browser/media/session/media_session_impl.h |
@@ -7,6 +7,8 @@ |
#include <stddef.h> |
+#include <set> |
+ |
#include "base/callback_list.h" |
#include "base/id_map.h" |
#include "base/macros.h" |
@@ -39,7 +41,7 @@ class MediaSessionImplStateObserver; |
class MediaSessionImplVisibilityBrowserTest; |
class MediaSessionObserver; |
class MediaSessionPlayerObserver; |
-class MediaSessionServiceImpl; |
+class MediaSessionServiceRouter; |
#if defined(OS_ANDROID) |
class MediaSessionAndroid; |
@@ -84,8 +86,10 @@ class MediaSessionImpl : public MediaSession, |
void AddObserver(MediaSessionObserver* observer); |
void RemoveObserver(MediaSessionObserver* observer); |
- void SetMetadata(const base::Optional<MediaMetadata>& metadata); |
- const base::Optional<MediaMetadata>& metadata() const { return metadata_; } |
+ void NotifyMediaSessionMetadataChange( |
+ const base::Optional<MediaMetadata>& metadata); |
+ void NotifyMediaSessionActionsChange( |
+ const std::set<blink::mojom::MediaSessionAction>& actions); |
// Adds the given player to the current media session. Returns whether the |
// player was successfully added. If it returns false, AddPlayer() should be |
@@ -127,13 +131,10 @@ class MediaSessionImpl : public MediaSession, |
// Received a media session action and forward to blink::MediaSession. |
void DidReceiveAction(blink::mojom::MediaSessionAction action) override; |
- // Called when an action is enabled in blink::MediaSession. This method will |
- // notify the observers that the action is enabled. |
- void OnMediaSessionEnabledAction(blink::mojom::MediaSessionAction action); |
- |
- // Called when an action is disabled in blink::MediaSession. This method will |
- // notify the observers that the action is disabled. |
- void OnMediaSessionDisabledAction(blink::mojom::MediaSessionAction action); |
+ // Called when blink::MediaSession action list has changed. This method will |
+ // notify the observers of the change. |
+ void OnMediaSessionActionsChanged( |
+ const std::set<blink::mojom::MediaSessionAction>& actions); |
// Let the media session start ducking such that the volume multiplier is |
// reduced. |
@@ -172,10 +173,13 @@ class MediaSessionImpl : public MediaSession, |
// WebContentsObserver implementation |
void WebContentsDestroyed() override; |
- // Sets the associated MediaSessionService for communicating with |
+ // Getting the associated MediaSessionServiceRouter for communicating with |
// blink::MediaSession. |
- MediaSessionServiceImpl* GetMediaSessionService() { return service_; } |
- void SetMediaSessionService(MediaSessionServiceImpl* service); |
+ MediaSessionServiceRouter* GetMediaSessionServiceRouter() { |
+ return service_router_.get(); |
+ } |
+ |
+ MediaSessionPlayerObserver* GetMostMeaningfulPlayerObserver(); |
private: |
friend class content::WebContentsUserData<MediaSessionImpl>; |
@@ -267,7 +271,6 @@ class MediaSessionImpl : public MediaSession, |
// StopDucking(). |
bool is_ducking_; |
- base::Optional<MediaMetadata> metadata_; |
base::CallbackList<void(State)> media_session_state_listeners_; |
base::ObserverList<MediaSessionObserver> observers_; |
@@ -278,7 +281,7 @@ class MediaSessionImpl : public MediaSession, |
// The MediaSessionService this session is associated with (the service of the |
// top-level frame). |
- MediaSessionServiceImpl* service_; |
+ std::unique_ptr<MediaSessionServiceRouter> service_router_; |
DISALLOW_COPY_AND_ASSIGN(MediaSessionImpl); |
}; |