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

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

Issue 2526533002: Allow MediaSession in iframes to be routed (Closed)
Patch Set: nits Created 4 years 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_service_impl.h
diff --git a/content/browser/media/session/media_session_service_impl.h b/content/browser/media/session/media_session_service_impl.h
index 37629c37f38cac272a35ea274b9f40d352977b0e..e5e6f6ec7035c9db411f858419c15919d156f4e5 100644
--- a/content/browser/media/session/media_session_service_impl.h
+++ b/content/browser/media/session/media_session_service_impl.h
@@ -12,32 +12,39 @@
namespace content {
-class MediaSessionImpl;
class RenderFrameHost;
+class MediaSessionImpl;
-// There is one MediaSessionService per frame.
-class MediaSessionServiceImpl : public blink::mojom::MediaSessionService {
+// There is one MediaSessionService per frame. The class is owned by
+// RenderFrameHost and should register/unregister itself to/from
+// MediaSessionImpl when RenderFrameHost is created/destroyed.
+class CONTENT_EXPORT MediaSessionServiceImpl
+ : public blink::mojom::MediaSessionService {
public:
~MediaSessionServiceImpl() override;
static void Create(RenderFrameHost* render_frame_host,
blink::mojom::MediaSessionServiceRequest request);
const blink::mojom::MediaSessionClientPtr& GetClient() { return client_; }
+ RenderFrameHost* GetRenderFrameHost() { return render_frame_host_; }
- private:
- explicit MediaSessionServiceImpl(RenderFrameHost* render_frame_host);
+ const base::Optional<MediaMetadata>& metadata() const { return metadata_; }
+ const std::set<blink::mojom::MediaSessionAction>& actions() const {
+ return actions_;
+ }
// blink::mojom::MediaSessionService implementation.
void SetClient(blink::mojom::MediaSessionClientPtr client) override;
- void SetMetadata(
- const base::Optional<content::MediaMetadata>& metadata) override;
+ void SetMetadata(const base::Optional<MediaMetadata>& metadata) override;
void EnableAction(blink::mojom::MediaSessionAction action) override;
void DisableAction(blink::mojom::MediaSessionAction action) override;
- // Returns the content::MediaSession this service is associated with. Only
- // returns non-null when this service is in the top-level frame.
+ protected:
+ explicit MediaSessionServiceImpl(RenderFrameHost* render_frame_host);
+
+ private:
MediaSessionImpl* GetMediaSession();
void Bind(blink::mojom::MediaSessionServiceRequest request);
@@ -48,6 +55,8 @@ class MediaSessionServiceImpl : public blink::mojom::MediaSessionService {
// The binding is removed when binding_ is cleared or goes out of scope.
std::unique_ptr<mojo::Binding<blink::mojom::MediaSessionService>> binding_;
blink::mojom::MediaSessionClientPtr client_;
+ base::Optional<MediaMetadata> metadata_;
+ std::set<blink::mojom::MediaSessionAction> actions_;
DISALLOW_COPY_AND_ASSIGN(MediaSessionServiceImpl);
};

Powered by Google App Engine
This is Rietveld 408576698