| Index: content/public/browser/media_session.h
|
| diff --git a/content/public/browser/media_session.h b/content/public/browser/media_session.h
|
| index 509629f894ad72b8111d6e5a418046463e6d8c5b..f0b10a0a343d62c62acb0df7c521da3212bfaf50 100644
|
| --- a/content/public/browser/media_session.h
|
| +++ b/content/public/browser/media_session.h
|
| @@ -6,6 +6,7 @@
|
| #define CONTENT_PUBLIC_BROWSER_MEDIA_SESSION_H_
|
|
|
| #include "base/macros.h"
|
| +#include "base/observer_list.h"
|
| #include "content/common/content_export.h"
|
|
|
| namespace blink {
|
| @@ -16,6 +17,7 @@ enum class MediaSessionAction;
|
|
|
| namespace content {
|
|
|
| +class MediaSessionObserver;
|
| class WebContents;
|
|
|
| // MediaSession manages the media session and audio focus for a given
|
| @@ -23,7 +25,7 @@ class WebContents;
|
| //
|
| // MediaSession allows clients to observe its changes via MediaSessionObserver,
|
| // and allows clients to resume/suspend/stop the managed players.
|
| -class MediaSession {
|
| +class CONTENT_EXPORT MediaSession {
|
| public:
|
| enum class SuspendType {
|
| // Suspended by the system because a transient sound needs to be played.
|
| @@ -38,7 +40,7 @@ class MediaSession {
|
| // none is currently available.
|
| CONTENT_EXPORT static MediaSession* Get(WebContents* contents);
|
|
|
| - virtual ~MediaSession() = default;
|
| + virtual ~MediaSession();
|
|
|
| // Resume the media session.
|
| // |type| represents the origin of the request.
|
| @@ -64,7 +66,17 @@ class MediaSession {
|
| virtual void StopDucking() = 0;
|
|
|
| protected:
|
| - MediaSession() = default;
|
| + MediaSession();
|
| +
|
| + base::ObserverList<MediaSessionObserver>& observers() { return observers_; }
|
| +
|
| + private:
|
| + friend class MediaSessionObserver;
|
| +
|
| + void AddObserver(MediaSessionObserver* observer);
|
| + void RemoveObserver(MediaSessionObserver* observer);
|
| +
|
| + base::ObserverList<MediaSessionObserver> observers_;
|
| };
|
|
|
| } // namespace content
|
|
|