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

Side by Side Diff: content/browser/media/android/media_web_contents_observer_android.h

Issue 1698933004: Make MediaSession a runtime-enabled feature on Desktop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: with flag Created 4 years, 10 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_WEB_CONTENTS_OBSERVER_ANDROID_H_ 5 #ifndef CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_WEB_CONTENTS_OBSERVER_ANDROID_H_
6 #define CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_WEB_CONTENTS_OBSERVER_ANDROID_H_ 6 #define CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_WEB_CONTENTS_OBSERVER_ANDROID_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/containers/scoped_ptr_hash_map.h" 10 #include "base/containers/scoped_ptr_hash_map.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "content/browser/media/media_web_contents_observer.h" 13 #include "content/browser/media/media_web_contents_observer.h"
14 #include "content/common/content_export.h" 14 #include "content/common/content_export.h"
15 15
16 namespace content { 16 namespace content {
17 17
18 class BrowserCdmManager; 18 class BrowserCdmManager;
19 class BrowserMediaPlayerManager; 19 class BrowserMediaPlayerManager;
20 class BrowserMediaSessionManager; 20 class BrowserMediaSessionManager;
21 class MediaSessionController;
22 21
23 // This class adds Android specific extensions to the MediaWebContentsObserver. 22 // This class adds Android specific extensions to the MediaWebContentsObserver.
24 class CONTENT_EXPORT MediaWebContentsObserverAndroid 23 class CONTENT_EXPORT MediaWebContentsObserverAndroid
25 : public MediaWebContentsObserver { 24 : public MediaWebContentsObserver {
26 public: 25 public:
27 explicit MediaWebContentsObserverAndroid(WebContents* web_contents); 26 explicit MediaWebContentsObserverAndroid(WebContents* web_contents);
28 ~MediaWebContentsObserverAndroid() override; 27 ~MediaWebContentsObserverAndroid() override;
29 28
30 // Returns the android specific observer for a given web contents. 29 // Returns the android specific observer for a given web contents.
31 static MediaWebContentsObserverAndroid* FromWebContents( 30 static MediaWebContentsObserverAndroid* FromWebContents(
32 WebContents* web_contents); 31 WebContents* web_contents);
33 32
34 // Gets the media player or media session manager associated with the given 33 // Gets the media player or media session manager associated with the given
35 // |render_frame_host| respectively. Creates a new one if it doesn't exist. 34 // |render_frame_host| respectively. Creates a new one if it doesn't exist.
36 // The caller doesn't own the returned pointer. 35 // The caller doesn't own the returned pointer.
37 BrowserMediaPlayerManager* GetMediaPlayerManager( 36 BrowserMediaPlayerManager* GetMediaPlayerManager(
38 RenderFrameHost* render_frame_host); 37 RenderFrameHost* render_frame_host);
39 BrowserMediaSessionManager* GetMediaSessionManager( 38 BrowserMediaSessionManager* GetMediaSessionManager(
40 RenderFrameHost* render_frame_host); 39 RenderFrameHost* render_frame_host);
41 40
42 // Called by the WebContents when a tab has been closed but may still be 41 // Called by the WebContents when a tab has been closed but may still be
43 // available for "undo" -- indicates that all media players (even audio only 42 // available for "undo" -- indicates that all media players (even audio only
44 // players typically allowed background audio) bound to this WebContents must 43 // players typically allowed background audio) bound to this WebContents must
45 // be suspended. 44 // be suspended.
46 void SuspendAllMediaPlayers(); 45 void SuspendAllMediaPlayers();
47 46
48 // Initiates a synchronous MediaSession request for browser side players.
49 //
50 // TODO(dalecurtis): Delete this method once we're no longer using WMPA and
51 // the BrowserMediaPlayerManagers. Tracked by http://crbug.com/580626
52 bool RequestPlay(RenderFrameHost* render_frame_host,
53 int delegate_id,
54 bool has_audio,
55 bool is_remote,
56 base::TimeDelta duration);
57
58 #if defined(VIDEO_HOLE) 47 #if defined(VIDEO_HOLE)
59 void OnFrameInfoUpdated(); 48 void OnFrameInfoUpdated();
60 #endif // defined(VIDEO_HOLE) 49 #endif // defined(VIDEO_HOLE)
61 50
62 // MediaWebContentsObserverAndroid overrides. 51 // MediaWebContentsObserverAndroid overrides.
63 void RenderFrameDeleted(RenderFrameHost* render_frame_host) override; 52 void RenderFrameDeleted(RenderFrameHost* render_frame_host) override;
64 bool OnMessageReceived(const IPC::Message& message, 53 bool OnMessageReceived(const IPC::Message& message,
65 RenderFrameHost* render_frame_host) override; 54 RenderFrameHost* render_frame_host) override;
66 55
67 private: 56 private:
68 // Handles messages from the WebMediaPlayerDelegate; does not modify the
69 // handled state since the superclass needs to handle these as well.
70 void OnMediaPlayerDelegateMessageReceived(const IPC::Message& msg,
71 RenderFrameHost* render_frame_host);
72 void OnMediaDestroyed(RenderFrameHost* render_frame_host, int delegate_id);
73 void OnMediaPaused(RenderFrameHost* render_frame_host,
74 int delegate_id,
75 bool reached_end_of_stream);
76 void OnMediaPlaying(RenderFrameHost* render_frame_host,
77 int delegate_id,
78 bool has_video,
79 bool has_audio,
80 bool is_remote,
81 base::TimeDelta duration);
82
83 // Helper functions to handle media player IPC messages. Returns whether the 57 // Helper functions to handle media player IPC messages. Returns whether the
84 // |message| is handled in the function. 58 // |message| is handled in the function.
85 bool OnMediaPlayerMessageReceived(const IPC::Message& message, 59 bool OnMediaPlayerMessageReceived(const IPC::Message& message,
86 RenderFrameHost* render_frame_host); 60 RenderFrameHost* render_frame_host);
87 61
88 bool OnMediaPlayerSetCdmMessageReceived(const IPC::Message& message, 62 bool OnMediaPlayerSetCdmMessageReceived(const IPC::Message& message,
89 RenderFrameHost* render_frame_host); 63 RenderFrameHost* render_frame_host);
90 64
91 bool OnMediaSessionMessageReceived(const IPC::Message& message, 65 bool OnMediaSessionMessageReceived(const IPC::Message& message,
92 RenderFrameHost* render_frame_host); 66 RenderFrameHost* render_frame_host);
93 67
94 void OnSetCdm(RenderFrameHost* render_frame_host, int player_id, int cdm_id); 68 void OnSetCdm(RenderFrameHost* render_frame_host, int player_id, int cdm_id);
95 69
96 // Map from RenderFrameHost* to BrowserMediaPlayerManager. 70 // Map from RenderFrameHost* to BrowserMediaPlayerManager.
97 using MediaPlayerManagerMap = 71 using MediaPlayerManagerMap =
98 base::ScopedPtrHashMap<RenderFrameHost*, 72 base::ScopedPtrHashMap<RenderFrameHost*,
99 scoped_ptr<BrowserMediaPlayerManager>>; 73 scoped_ptr<BrowserMediaPlayerManager>>;
100 MediaPlayerManagerMap media_player_managers_; 74 MediaPlayerManagerMap media_player_managers_;
101 75
102 // Map from RenderFrameHost* to BrowserMediaSessionManager. 76 // Map from RenderFrameHost* to BrowserMediaSessionManager.
103 using MediaSessionManagerMap = 77 using MediaSessionManagerMap =
104 base::ScopedPtrHashMap<RenderFrameHost*, 78 base::ScopedPtrHashMap<RenderFrameHost*,
105 scoped_ptr<BrowserMediaSessionManager>>; 79 scoped_ptr<BrowserMediaSessionManager>>;
106 MediaSessionManagerMap media_session_managers_; 80 MediaSessionManagerMap media_session_managers_;
107 81
108 // Map of renderer process media players to session controllers.
109 using MediaSessionMap =
110 std::map<MediaPlayerId, scoped_ptr<MediaSessionController>>;
111 MediaSessionMap media_session_map_;
112
113 DISALLOW_COPY_AND_ASSIGN(MediaWebContentsObserverAndroid); 82 DISALLOW_COPY_AND_ASSIGN(MediaWebContentsObserverAndroid);
114 }; 83 };
115 84
116 } // namespace content 85 } // namespace content
117 86
118 #endif // CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_WEB_CONTENTS_OBSERVER_ANDROID_H_ 87 #endif // CONTENT_BROWSER_MEDIA_ANDROID_MEDIA_WEB_CONTENTS_OBSERVER_ANDROID_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698