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

Unified Diff: content/browser/media/android/browser_media_player_manager.h

Issue 278353003: Make RendererMediaPlayerManager a RenderFrameObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor fix. Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/media/android/browser_media_player_manager.h
diff --git a/content/browser/media/android/browser_media_player_manager.h b/content/browser/media/android/browser_media_player_manager.h
index b6648f0f6ba0283e1f7b22d9115d932ed3cd1bf3..fbc2487a8356f5627b836915adfe74e98a4ad7d4 100644
--- a/content/browser/media/android/browser_media_player_manager.h
+++ b/content/browser/media/android/browser_media_player_manager.h
@@ -16,9 +16,10 @@
#include "base/memory/scoped_vector.h"
#include "base/time/time.h"
#include "content/browser/android/content_video_view.h"
+#include "content/common/content_export.h"
#include "content/common/media/cdm_messages_enums.h"
#include "content/common/media/media_player_messages_enums_android.h"
-#include "content/public/browser/web_contents_observer.h"
+#include "ipc/ipc_message.h"
#include "media/base/android/media_player_android.h"
#include "media/base/android/media_player_manager.h"
#include "ui/gfx/rect_f.h"
@@ -33,6 +34,7 @@ namespace content {
class BrowserDemuxerAndroid;
class ContentViewCoreImpl;
class ExternalVideoSurfaceContainer;
+class RenderFrameHost;
class WebContents;
// This class manages all the MediaPlayerAndroid and CDM objects.
@@ -41,23 +43,19 @@ class WebContents;
// MediaPlayerAndroid and CDM objects are converted to IPCs and then sent to
// the render process.
class CONTENT_EXPORT BrowserMediaPlayerManager
- : public WebContentsObserver,
- public media::MediaPlayerManager {
+ : public media::MediaPlayerManager {
public:
// Permits embedders to provide an extended version of the class.
- typedef BrowserMediaPlayerManager* (*Factory)(RenderViewHost*);
+ typedef BrowserMediaPlayerManager* (*Factory)(RenderFrameHost*);
static void RegisterFactory(Factory factory);
// Returns a new instance using the registered factory if available.
- static BrowserMediaPlayerManager* Create(RenderViewHost* rvh);
+ static BrowserMediaPlayerManager* Create(RenderFrameHost* rfh);
ContentViewCoreImpl* GetContentViewCore() const;
virtual ~BrowserMediaPlayerManager();
- // WebContentsObserver overrides.
- virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
-
// Fullscreen video playback controls.
virtual void FullscreenPlayerPlay();
virtual void FullscreenPlayerPause();
@@ -69,6 +67,9 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
// Any actual seek started by renderer will be handled by browser in OnSeek().
void OnSeekRequest(int player_id, const base::TimeDelta& time_to_seek);
+ // Pauses all video players manages by this class.
+ void PauseVideo();
+
// media::MediaPlayerManager overrides.
virtual void OnTimeUpdate(
int player_id, base::TimeDelta current_time) OVERRIDE;
@@ -113,10 +114,6 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
void OnFrameInfoUpdated();
#endif // defined(VIDEO_HOLE)
- protected:
- // Clients must use Create() or subclass constructor.
- explicit BrowserMediaPlayerManager(RenderViewHost* render_view_host);
-
// Message handlers.
virtual void OnEnterFullscreen(int player_id);
virtual void OnExitFullscreen(int player_id);
@@ -147,6 +144,16 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
void OnReleaseSession(int cdm_id, uint32 session_id);
void OnSetCdm(int player_id, int cdm_id);
void OnDestroyCdm(int cdm_id);
+#if defined(VIDEO_HOLE)
+ void OnNotifyExternalSurface(
+ int player_id, bool is_request, const gfx::RectF& rect);
+#endif // defined(VIDEO_HOLE)
+
+ protected:
+ // Clients must use Create() or subclass constructor.
+ explicit BrowserMediaPlayerManager(RenderFrameHost* render_frame_host);
+
+ WebContents* web_contents() const { return web_contents_; }
// Cancels all pending session creations associated with |cdm_id|.
void CancelAllPendingSessionCreations(int cdm_id);
@@ -173,6 +180,11 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
// Removes the CDM with the specified id.
void RemoveCdm(int cdm_id);
+ int RoutingID();
+
+ // Helper function to send messages to RenderFrameObserver.
+ bool Send(IPC::Message* msg);
+
private:
// If |permitted| is false, it does nothing but send
// |CdmMsg_SessionError| IPC message.
@@ -208,11 +220,11 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
virtual void OnMediaResourcesReleased(int player_id);
#if defined(VIDEO_HOLE)
- void OnNotifyExternalSurface(
- int player_id, bool is_request, const gfx::RectF& rect);
void OnRequestExternalSurface(int player_id, const gfx::RectF& rect);
#endif // defined(VIDEO_HOLE)
+ RenderFrameHost* const render_frame_host_;
+
// An array of managed players.
ScopedVector<media::MediaPlayerAndroid> players_;
@@ -244,7 +256,7 @@ class CONTENT_EXPORT BrowserMediaPlayerManager
// Whether the fullscreen player has been Release()-d.
bool fullscreen_player_is_released_;
- WebContents* web_contents_;
+ WebContents* const web_contents_;
// Object for retrieving resources media players.
scoped_ptr<media::MediaResourceGetter> media_resource_getter_;

Powered by Google App Engine
This is Rietveld 408576698