Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(521)

Unified Diff: content/browser/media/session/media_session_impl.h

Issue 2526533002: Allow MediaSession in iframes to be routed (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698