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

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

Issue 975943003: Revert of Revert of Propagate audible state from player to the containing tab" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_BROWSER_MEDIA_PLAYER_MANAGER_H_ 5 #ifndef CONTENT_BROWSER_MEDIA_ANDROID_BROWSER_MEDIA_PLAYER_MANAGER_H_
6 #define CONTENT_BROWSER_MEDIA_ANDROID_BROWSER_MEDIA_PLAYER_MANAGER_H_ 6 #define CONTENT_BROWSER_MEDIA_ANDROID_BROWSER_MEDIA_PLAYER_MANAGER_H_
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 12 matching lines...) Expand all
23 namespace media { 23 namespace media {
24 class DemuxerAndroid; 24 class DemuxerAndroid;
25 } 25 }
26 26
27 struct MediaPlayerHostMsg_Initialize_Params; 27 struct MediaPlayerHostMsg_Initialize_Params;
28 28
29 namespace content { 29 namespace content {
30 class BrowserDemuxerAndroid; 30 class BrowserDemuxerAndroid;
31 class ContentViewCoreImpl; 31 class ContentViewCoreImpl;
32 class ExternalVideoSurfaceContainer; 32 class ExternalVideoSurfaceContainer;
33 class MediaPlayersObserver;
33 class RenderFrameHost; 34 class RenderFrameHost;
34 class WebContents; 35 class WebContents;
35 36
36 // This class manages all the MediaPlayerAndroid objects. 37 // This class manages all the MediaPlayerAndroid objects.
37 // It receives control operations from the the render process, and forwards 38 // It receives control operations from the the render process, and forwards
38 // them to corresponding MediaPlayerAndroid object. Callbacks from 39 // them to corresponding MediaPlayerAndroid object. Callbacks from
39 // MediaPlayerAndroid objects are converted to IPCs and then sent to the render 40 // MediaPlayerAndroid objects are converted to IPCs and then sent to the render
40 // process. 41 // process.
41 class CONTENT_EXPORT BrowserMediaPlayerManager 42 class CONTENT_EXPORT BrowserMediaPlayerManager
42 : public media::MediaPlayerManager { 43 : public media::MediaPlayerManager {
43 public: 44 public:
44 // Permits embedders to provide an extended version of the class. 45 // Permits embedders to provide an extended version of the class.
45 typedef BrowserMediaPlayerManager* (*Factory)(RenderFrameHost*); 46 typedef BrowserMediaPlayerManager* (*Factory)(RenderFrameHost*,
47 MediaPlayersObserver*);
46 static void RegisterFactory(Factory factory); 48 static void RegisterFactory(Factory factory);
47 49
48 // Permits embedders to handle custom urls. 50 // Permits embedders to handle custom urls.
49 static void RegisterMediaUrlInterceptor( 51 static void RegisterMediaUrlInterceptor(
50 media::MediaUrlInterceptor* media_url_interceptor); 52 media::MediaUrlInterceptor* media_url_interceptor);
51 53
52 // Returns a new instance using the registered factory if available. 54 // Returns a new instance using the registered factory if available.
53 static BrowserMediaPlayerManager* Create(RenderFrameHost* rfh); 55 static BrowserMediaPlayerManager* Create(
56 RenderFrameHost* rfh,
57 MediaPlayersObserver* audio_monitor);
54 58
55 ContentViewCoreImpl* GetContentViewCore() const; 59 ContentViewCoreImpl* GetContentViewCore() const;
56 60
57 ~BrowserMediaPlayerManager() override; 61 ~BrowserMediaPlayerManager() override;
58 62
59 // Fullscreen video playback controls. 63 // Fullscreen video playback controls.
60 virtual void ExitFullscreen(bool release_media_player); 64 virtual void ExitFullscreen(bool release_media_player);
61 virtual void SetVideoSurface(gfx::ScopedJavaSurface surface); 65 virtual void SetVideoSurface(gfx::ScopedJavaSurface surface);
62 66
63 // Called when browser player wants the renderer media element to seek. 67 // Called when browser player wants the renderer media element to seek.
(...skipping 12 matching lines...) Expand all
76 int width, 80 int width,
77 int height, 81 int height,
78 bool success) override; 82 bool success) override;
79 void OnPlaybackComplete(int player_id) override; 83 void OnPlaybackComplete(int player_id) override;
80 void OnMediaInterrupted(int player_id) override; 84 void OnMediaInterrupted(int player_id) override;
81 void OnBufferingUpdate(int player_id, int percentage) override; 85 void OnBufferingUpdate(int player_id, int percentage) override;
82 void OnSeekComplete(int player_id, 86 void OnSeekComplete(int player_id,
83 const base::TimeDelta& current_time) override; 87 const base::TimeDelta& current_time) override;
84 void OnError(int player_id, int error) override; 88 void OnError(int player_id, int error) override;
85 void OnVideoSizeChanged(int player_id, int width, int height) override; 89 void OnVideoSizeChanged(int player_id, int width, int height) override;
90 void OnAudibleStateChanged(
91 int player_id, bool is_audible_now) override;
92
86 media::MediaResourceGetter* GetMediaResourceGetter() override; 93 media::MediaResourceGetter* GetMediaResourceGetter() override;
87 media::MediaUrlInterceptor* GetMediaUrlInterceptor() override; 94 media::MediaUrlInterceptor* GetMediaUrlInterceptor() override;
88 media::MediaPlayerAndroid* GetFullscreenPlayer() override; 95 media::MediaPlayerAndroid* GetFullscreenPlayer() override;
89 media::MediaPlayerAndroid* GetPlayer(int player_id) override; 96 media::MediaPlayerAndroid* GetPlayer(int player_id) override;
90 void RequestFullScreen(int player_id) override; 97 void RequestFullScreen(int player_id) override;
91 #if defined(VIDEO_HOLE) 98 #if defined(VIDEO_HOLE)
92 bool ShouldUseVideoOverlayForEmbeddedEncryptedVideo() override; 99 bool ShouldUseVideoOverlayForEmbeddedEncryptedVideo() override;
93 100
94 void AttachExternalVideoSurface(int player_id, jobject surface); 101 void AttachExternalVideoSurface(int player_id, jobject surface);
95 void DetachExternalVideoSurface(int player_id); 102 void DetachExternalVideoSurface(int player_id);
(...skipping 15 matching lines...) Expand all
111 virtual void OnRequestRemotePlayback(int player_id); 118 virtual void OnRequestRemotePlayback(int player_id);
112 virtual void OnRequestRemotePlaybackControl(int player_id); 119 virtual void OnRequestRemotePlaybackControl(int player_id);
113 virtual void ReleaseFullscreenPlayer(media::MediaPlayerAndroid* player); 120 virtual void ReleaseFullscreenPlayer(media::MediaPlayerAndroid* player);
114 #if defined(VIDEO_HOLE) 121 #if defined(VIDEO_HOLE)
115 void OnNotifyExternalSurface( 122 void OnNotifyExternalSurface(
116 int player_id, bool is_request, const gfx::RectF& rect); 123 int player_id, bool is_request, const gfx::RectF& rect);
117 #endif // defined(VIDEO_HOLE) 124 #endif // defined(VIDEO_HOLE)
118 125
119 protected: 126 protected:
120 // Clients must use Create() or subclass constructor. 127 // Clients must use Create() or subclass constructor.
121 explicit BrowserMediaPlayerManager(RenderFrameHost* render_frame_host); 128 BrowserMediaPlayerManager(RenderFrameHost* render_frame_host,
129 MediaPlayersObserver* audio_monitor);
122 130
123 WebContents* web_contents() const { return web_contents_; } 131 WebContents* web_contents() const { return web_contents_; }
124 132
125 // Adds a given player to the list. 133 // Adds a given player to the list.
126 void AddPlayer(media::MediaPlayerAndroid* player); 134 void AddPlayer(media::MediaPlayerAndroid* player);
127 135
128 // Removes the player with the specified id. 136 // Removes the player with the specified id.
129 void RemovePlayer(int player_id); 137 void RemovePlayer(int player_id);
130 138
131 // Replaces a player with the specified id with a given MediaPlayerAndroid 139 // Replaces a player with the specified id with a given MediaPlayerAndroid
(...skipping 29 matching lines...) Expand all
161 // Releases the player. However, don't remove it from |players_|. 169 // Releases the player. However, don't remove it from |players_|.
162 void ReleasePlayer(media::MediaPlayerAndroid* player); 170 void ReleasePlayer(media::MediaPlayerAndroid* player);
163 171
164 #if defined(VIDEO_HOLE) 172 #if defined(VIDEO_HOLE)
165 void ReleasePlayerOfExternalVideoSurfaceIfNeeded(int future_player); 173 void ReleasePlayerOfExternalVideoSurfaceIfNeeded(int future_player);
166 void OnRequestExternalSurface(int player_id, const gfx::RectF& rect); 174 void OnRequestExternalSurface(int player_id, const gfx::RectF& rect);
167 #endif // defined(VIDEO_HOLE) 175 #endif // defined(VIDEO_HOLE)
168 176
169 RenderFrameHost* const render_frame_host_; 177 RenderFrameHost* const render_frame_host_;
170 178
179 MediaPlayersObserver* audio_monitor_;
180
171 // An array of managed players. 181 // An array of managed players.
172 ScopedVector<media::MediaPlayerAndroid> players_; 182 ScopedVector<media::MediaPlayerAndroid> players_;
173 183
174 // The fullscreen video view object or NULL if video is not played in 184 // The fullscreen video view object or NULL if video is not played in
175 // fullscreen. 185 // fullscreen.
176 scoped_ptr<ContentVideoView> video_view_; 186 scoped_ptr<ContentVideoView> video_view_;
177 187
178 #if defined(VIDEO_HOLE) 188 #if defined(VIDEO_HOLE)
179 scoped_ptr<ExternalVideoSurfaceContainer> external_video_surface_container_; 189 scoped_ptr<ExternalVideoSurfaceContainer> external_video_surface_container_;
180 #endif 190 #endif
(...skipping 11 matching lines...) Expand all
192 202
193 // NOTE: Weak pointers must be invalidated before all other member variables. 203 // NOTE: Weak pointers must be invalidated before all other member variables.
194 base::WeakPtrFactory<BrowserMediaPlayerManager> weak_ptr_factory_; 204 base::WeakPtrFactory<BrowserMediaPlayerManager> weak_ptr_factory_;
195 205
196 DISALLOW_COPY_AND_ASSIGN(BrowserMediaPlayerManager); 206 DISALLOW_COPY_AND_ASSIGN(BrowserMediaPlayerManager);
197 }; 207 };
198 208
199 } // namespace content 209 } // namespace content
200 210
201 #endif // CONTENT_BROWSER_MEDIA_ANDROID_BROWSER_MEDIA_PLAYER_MANAGER_H_ 211 #endif // CONTENT_BROWSER_MEDIA_ANDROID_BROWSER_MEDIA_PLAYER_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698