summaryrefslogtreecommitdiffstats
path: root/content/renderer
diff options
context:
space:
mode:
authorxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-31 00:35:48 +0000
committerxhwang@chromium.org <xhwang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-31 00:35:48 +0000
commit305ecfc7fa649d5cde58a33db615461fe161382d (patch)
treef36da3a902fe7f944d43f55e0d63d7c1d389d391 /content/renderer
parentcf8b0cc641969f18176ca87f693f82b5c2092d6e (diff)
downloadchromium_src-305ecfc7fa649d5cde58a33db615461fe161382d.zip
chromium_src-305ecfc7fa649d5cde58a33db615461fe161382d.tar.gz
chromium_src-305ecfc7fa649d5cde58a33db615461fe161382d.tar.bz2
Merge WebMediaPlayerProxy and RendererMediaPlayerManager.
BUG=312358 TEST=MSE/EME player still works on Chrome for Android. No functionality change. R=jochen@chromium.org, qinmin@chromium.org Review URL: https://codereview.chromium.org/48773005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231957 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
-rw-r--r--content/renderer/media/android/proxy_media_keys.cc16
-rw-r--r--content/renderer/media/android/proxy_media_keys.h16
-rw-r--r--content/renderer/media/android/renderer_media_player_manager.cc278
-rw-r--r--content/renderer/media/android/renderer_media_player_manager.h125
-rw-r--r--content/renderer/media/android/webmediaplayer_android.cc46
-rw-r--r--content/renderer/media/android/webmediaplayer_android.h12
-rw-r--r--content/renderer/media/android/webmediaplayer_proxy_android.cc299
-rw-r--r--content/renderer/media/android/webmediaplayer_proxy_android.h142
-rw-r--r--content/renderer/media/crypto/content_decryption_module_factory.cc6
-rw-r--r--content/renderer/media/crypto/content_decryption_module_factory.h4
-rw-r--r--content/renderer/media/crypto/proxy_decryptor.cc9
-rw-r--r--content/renderer/media/crypto/proxy_decryptor.h8
-rw-r--r--content/renderer/render_view_impl.cc13
-rw-r--r--content/renderer/render_view_impl.h15
14 files changed, 448 insertions, 541 deletions
diff --git a/content/renderer/media/android/proxy_media_keys.cc b/content/renderer/media/android/proxy_media_keys.cc
index 6de8e8d..2df2dbc6 100644
--- a/content/renderer/media/android/proxy_media_keys.cc
+++ b/content/renderer/media/android/proxy_media_keys.cc
@@ -8,22 +8,22 @@
#include "base/basictypes.h"
#include "base/logging.h"
-#include "content/renderer/media/android/webmediaplayer_proxy_android.h"
+#include "content/renderer/media/android/renderer_media_player_manager.h"
#include "content/renderer/media/crypto/key_systems.h"
namespace content {
-ProxyMediaKeys::ProxyMediaKeys(WebMediaPlayerProxyAndroid* proxy,
+ProxyMediaKeys::ProxyMediaKeys(RendererMediaPlayerManager* manager,
int media_keys_id,
const media::KeyAddedCB& key_added_cb,
const media::KeyErrorCB& key_error_cb,
const media::KeyMessageCB& key_message_cb)
- : proxy_(proxy),
+ : manager_(manager),
media_keys_id_(media_keys_id),
key_added_cb_(key_added_cb),
key_error_cb_(key_error_cb),
key_message_cb_(key_message_cb) {
- DCHECK(proxy_);
+ DCHECK(manager_);
}
ProxyMediaKeys::~ProxyMediaKeys() {
@@ -36,14 +36,14 @@ void ProxyMediaKeys::InitializeCDM(const std::string& key_system,
#elif defined(OS_ANDROID)
std::vector<uint8> uuid = GetUUID(key_system);
DCHECK(!uuid.empty());
- proxy_->InitializeCDM(media_keys_id_, this, uuid, frame_url);
+ manager_->InitializeCDM(media_keys_id_, this, uuid, frame_url);
#endif
}
bool ProxyMediaKeys::GenerateKeyRequest(const std::string& type,
const uint8* init_data,
int init_data_length) {
- proxy_->GenerateKeyRequest(
+ manager_->GenerateKeyRequest(
media_keys_id_,
type,
std::vector<uint8>(init_data, init_data + init_data_length));
@@ -53,14 +53,14 @@ bool ProxyMediaKeys::GenerateKeyRequest(const std::string& type,
void ProxyMediaKeys::AddKey(const uint8* key, int key_length,
const uint8* init_data, int init_data_length,
const std::string& session_id) {
- proxy_->AddKey(media_keys_id_,
+ manager_->AddKey(media_keys_id_,
std::vector<uint8>(key, key + key_length),
std::vector<uint8>(init_data, init_data + init_data_length),
session_id);
}
void ProxyMediaKeys::CancelKeyRequest(const std::string& session_id) {
- proxy_->CancelKeyRequest(media_keys_id_, session_id);
+ manager_->CancelKeyRequest(media_keys_id_, session_id);
}
void ProxyMediaKeys::OnKeyAdded(const std::string& session_id) {
diff --git a/content/renderer/media/android/proxy_media_keys.h b/content/renderer/media/android/proxy_media_keys.h
index 0fba181..10ebf41 100644
--- a/content/renderer/media/android/proxy_media_keys.h
+++ b/content/renderer/media/android/proxy_media_keys.h
@@ -12,15 +12,15 @@ class GURL;
namespace content {
-class WebMediaPlayerProxyAndroid;
+class RendererMediaPlayerManager;
-// MediaKeys wrapper of the WebMediaPlayerProxyAndroid.
-// TODO(xhwang): Remove |player_id| from WebMediaPlayerProxyAndroid, make
-// WebMediaPlayerProxyAndroid a subclass of media::MediaKeys, then remove this
-// class!
+// A MediaKeys proxy that wraps the EME part of RendererMediaPlayerManager.
+// TODO(xhwang): Instead of accessing RendererMediaPlayerManager directly, let
+// RendererMediaPlayerManager return a MediaKeys object that can be used by
+// ProxyDecryptor directly. Then we can remove this class!
class ProxyMediaKeys : public media::MediaKeys {
public:
- ProxyMediaKeys(WebMediaPlayerProxyAndroid* proxy,
+ ProxyMediaKeys(RendererMediaPlayerManager* proxy,
int media_keys_id,
const media::KeyAddedCB& key_added_cb,
const media::KeyErrorCB& key_error_cb,
@@ -48,13 +48,13 @@ class ProxyMediaKeys : public media::MediaKeys {
const std::string& destination_url);
private:
- WebMediaPlayerProxyAndroid* proxy_;
+ RendererMediaPlayerManager* manager_;
int media_keys_id_;
media::KeyAddedCB key_added_cb_;
media::KeyErrorCB key_error_cb_;
media::KeyMessageCB key_message_cb_;
- DISALLOW_COPY_AND_ASSIGN (ProxyMediaKeys);
+ DISALLOW_COPY_AND_ASSIGN(ProxyMediaKeys);
};
} // namespace content
diff --git a/content/renderer/media/android/renderer_media_player_manager.cc b/content/renderer/media/android/renderer_media_player_manager.cc
index 440cec2..0d2392f 100644
--- a/content/renderer/media/android/renderer_media_player_manager.cc
+++ b/content/renderer/media/android/renderer_media_player_manager.cc
@@ -4,15 +4,20 @@
#include "content/renderer/media/android/renderer_media_player_manager.h"
+#include "base/bind.h"
+#include "base/message_loop/message_loop.h"
+#include "content/common/media/media_player_messages_android.h"
+#include "content/renderer/media/android/proxy_media_keys.h"
+#include "content/renderer/media/android/renderer_media_player_manager.h"
#include "content/renderer/media/android/webmediaplayer_android.h"
#include "ui/gfx/rect_f.h"
namespace content {
-RendererMediaPlayerManager::RendererMediaPlayerManager()
- : next_media_player_id_(0),
- fullscreen_frame_(NULL) {
-}
+RendererMediaPlayerManager::RendererMediaPlayerManager(RenderView* render_view)
+ : RenderViewObserver(render_view),
+ next_media_player_id_(0),
+ fullscreen_frame_(NULL) {}
RendererMediaPlayerManager::~RendererMediaPlayerManager() {
std::map<int, WebMediaPlayerAndroid*>::iterator player_it;
@@ -21,6 +26,271 @@ RendererMediaPlayerManager::~RendererMediaPlayerManager() {
WebMediaPlayerAndroid* player = player_it->second;
player->Detach();
}
+
+ Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id()));
+}
+
+bool RendererMediaPlayerManager::OnMessageReceived(const IPC::Message& msg) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(RendererMediaPlayerManager, msg)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaMetadataChanged,
+ OnMediaMetadataChanged)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlaybackCompleted,
+ OnMediaPlaybackCompleted)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaBufferingUpdate,
+ OnMediaBufferingUpdate)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_SeekRequest, OnSeekRequest)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_SeekCompleted, OnSeekCompleted)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaError, OnMediaError)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaVideoSizeChanged,
+ OnVideoSizeChanged)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaTimeUpdate, OnTimeUpdate)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlayerReleased,
+ OnMediaPlayerReleased)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_ConnectedToRemoteDevice,
+ OnConnectedToRemoteDevice)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_DisconnectedFromRemoteDevice,
+ OnDisconnectedFromRemoteDevice)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidEnterFullscreen, OnDidEnterFullscreen)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidExitFullscreen, OnDidExitFullscreen)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPlay, OnPlayerPlay)
+ IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPause, OnPlayerPause)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyAdded, OnKeyAdded)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyError, OnKeyError)
+ IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyMessage, OnKeyMessage)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void RendererMediaPlayerManager::Initialize(
+ MediaPlayerHostMsg_Initialize_Type type,
+ int player_id,
+ const GURL& url,
+ const GURL& first_party_for_cookies,
+ int demuxer_client_id) {
+ Send(new MediaPlayerHostMsg_Initialize(
+ routing_id(), type, player_id, url, first_party_for_cookies,
+ demuxer_client_id));
+}
+
+void RendererMediaPlayerManager::Start(int player_id) {
+ Send(new MediaPlayerHostMsg_Start(routing_id(), player_id));
+}
+
+void RendererMediaPlayerManager::Pause(
+ int player_id,
+ bool is_media_related_action) {
+ Send(new MediaPlayerHostMsg_Pause(
+ routing_id(), player_id, is_media_related_action));
+}
+
+void RendererMediaPlayerManager::Seek(
+ int player_id,
+ const base::TimeDelta& time) {
+ Send(new MediaPlayerHostMsg_Seek(routing_id(), player_id, time));
+}
+
+void RendererMediaPlayerManager::SetVolume(int player_id, double volume) {
+ Send(new MediaPlayerHostMsg_SetVolume(routing_id(), player_id, volume));
+}
+
+void RendererMediaPlayerManager::ReleaseResources(int player_id) {
+ Send(new MediaPlayerHostMsg_Release(routing_id(), player_id));
+}
+
+void RendererMediaPlayerManager::DestroyPlayer(int player_id) {
+ Send(new MediaPlayerHostMsg_DestroyMediaPlayer(routing_id(), player_id));
+}
+
+void RendererMediaPlayerManager::OnMediaMetadataChanged(
+ int player_id,
+ base::TimeDelta duration,
+ int width,
+ int height,
+ bool success) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnMediaMetadataChanged(duration, width, height, success);
+}
+
+void RendererMediaPlayerManager::OnMediaPlaybackCompleted(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnPlaybackComplete();
+}
+
+void RendererMediaPlayerManager::OnMediaBufferingUpdate(int player_id,
+ int percent) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnBufferingUpdate(percent);
+}
+
+void RendererMediaPlayerManager::OnSeekRequest(
+ int player_id,
+ const base::TimeDelta& time_to_seek) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnSeekRequest(time_to_seek);
+}
+
+void RendererMediaPlayerManager::OnSeekCompleted(
+ int player_id,
+ const base::TimeDelta& current_time) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnSeekComplete(current_time);
+}
+
+void RendererMediaPlayerManager::OnMediaError(int player_id, int error) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnMediaError(error);
+}
+
+void RendererMediaPlayerManager::OnVideoSizeChanged(int player_id,
+ int width,
+ int height) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnVideoSizeChanged(width, height);
+}
+
+void RendererMediaPlayerManager::OnTimeUpdate(int player_id,
+ base::TimeDelta current_time) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnTimeUpdate(current_time);
+}
+
+void RendererMediaPlayerManager::OnMediaPlayerReleased(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnPlayerReleased();
+}
+
+void RendererMediaPlayerManager::OnConnectedToRemoteDevice(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnConnectedToRemoteDevice();
+}
+
+void RendererMediaPlayerManager::OnDisconnectedFromRemoteDevice(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnDisconnectedFromRemoteDevice();
+}
+
+void RendererMediaPlayerManager::OnDidEnterFullscreen(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnDidEnterFullscreen();
+}
+
+void RendererMediaPlayerManager::OnDidExitFullscreen(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnDidExitFullscreen();
+}
+
+void RendererMediaPlayerManager::OnPlayerPlay(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnMediaPlayerPlay();
+}
+
+void RendererMediaPlayerManager::OnPlayerPause(int player_id) {
+ WebMediaPlayerAndroid* player = GetMediaPlayer(player_id);
+ if (player)
+ player->OnMediaPlayerPause();
+}
+
+void RendererMediaPlayerManager::EnterFullscreen(int player_id) {
+ Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id));
+}
+
+void RendererMediaPlayerManager::ExitFullscreen(int player_id) {
+ Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id));
+}
+
+#if defined(GOOGLE_TV)
+void RendererMediaPlayerManager::RequestExternalSurface(
+ int player_id,
+ const gfx::RectF& geometry) {
+ Send(new MediaPlayerHostMsg_NotifyExternalSurface(
+ routing_id(), player_id, true, geometry));
+}
+
+void RendererMediaPlayerManager::DidCommitCompositorFrame() {
+ std::map<int, gfx::RectF> geometry_change;
+ manager_->RetrieveGeometryChanges(&geometry_change);
+ for (std::map<int, gfx::RectF>::iterator it = geometry_change.begin();
+ it != geometry_change.end();
+ ++it) {
+ Send(new MediaPlayerHostMsg_NotifyExternalSurface(
+ routing_id(), it->first, false, it->second));
+ }
+}
+#endif
+
+void RendererMediaPlayerManager::InitializeCDM(int media_keys_id,
+ ProxyMediaKeys* media_keys,
+ const std::vector<uint8>& uuid,
+ const GURL& frame_url) {
+ RegisterMediaKeys(media_keys_id, media_keys);
+ Send(new MediaKeysHostMsg_InitializeCDM(
+ routing_id(), media_keys_id, uuid, frame_url));
+}
+
+void RendererMediaPlayerManager::GenerateKeyRequest(
+ int media_keys_id,
+ const std::string& type,
+ const std::vector<uint8>& init_data) {
+ Send(new MediaKeysHostMsg_GenerateKeyRequest(
+ routing_id(), media_keys_id, type, init_data));
+}
+
+void RendererMediaPlayerManager::AddKey(int media_keys_id,
+ const std::vector<uint8>& key,
+ const std::vector<uint8>& init_data,
+ const std::string& session_id) {
+ Send(new MediaKeysHostMsg_AddKey(
+ routing_id(), media_keys_id, key, init_data, session_id));
+}
+
+void RendererMediaPlayerManager::CancelKeyRequest(
+ int media_keys_id,
+ const std::string& session_id) {
+ Send(new MediaKeysHostMsg_CancelKeyRequest(
+ routing_id(), media_keys_id, session_id));
+}
+
+void RendererMediaPlayerManager::OnKeyAdded(int media_keys_id,
+ const std::string& session_id) {
+ ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
+ if (media_keys)
+ media_keys->OnKeyAdded(session_id);
+}
+
+void RendererMediaPlayerManager::OnKeyError(
+ int media_keys_id,
+ const std::string& session_id,
+ media::MediaKeys::KeyError error_code,
+ int system_code) {
+ ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
+ if (media_keys)
+ media_keys->OnKeyError(session_id, error_code, system_code);
+}
+
+void RendererMediaPlayerManager::OnKeyMessage(
+ int media_keys_id,
+ const std::string& session_id,
+ const std::vector<uint8>& message,
+ const std::string& destination_url) {
+ ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
+ if (media_keys)
+ media_keys->OnKeyMessage(session_id, message, destination_url);
}
int RendererMediaPlayerManager::RegisterMediaPlayer(
diff --git a/content/renderer/media/android/renderer_media_player_manager.h b/content/renderer/media/android/renderer_media_player_manager.h
index bc878d8..4a16b83 100644
--- a/content/renderer/media/android/renderer_media_player_manager.h
+++ b/content/renderer/media/android/renderer_media_player_manager.h
@@ -6,8 +6,20 @@
#define CONTENT_RENDERER_MEDIA_ANDROID_RENDERER_MEDIA_PLAYER_MANAGER_H_
#include <map>
+#include <string>
+#include <vector>
#include "base/basictypes.h"
+#include "base/time/time.h"
+#include "content/common/media/media_player_messages_enums_android.h"
+#include "content/public/renderer/render_view_observer.h"
+#include "media/base/android/media_player_android.h"
+#include "media/base/media_keys.h"
+#include "url/gurl.h"
+
+#if defined(GOOGLE_TV)
+#include "ui/gfx/rect_f.h"
+#endif
namespace WebKit {
class WebFrame;
@@ -24,49 +36,140 @@ class WebMediaPlayerAndroid;
// Class for managing all the WebMediaPlayerAndroid objects in the same
// RenderView.
-class RendererMediaPlayerManager {
+class RendererMediaPlayerManager : public RenderViewObserver {
public:
- RendererMediaPlayerManager();
+ // Constructs a RendererMediaPlayerManager object for the |render_view|.
+ RendererMediaPlayerManager(RenderView* render_view);
virtual ~RendererMediaPlayerManager();
- // Register and unregister a WebMediaPlayerAndroid object.
+ // RenderViewObserver overrides.
+ virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
+
+ // Initializes a MediaPlayerAndroid object in browser process.
+ void Initialize(MediaPlayerHostMsg_Initialize_Type type,
+ int player_id,
+ const GURL& url,
+ const GURL& first_party_for_cookies,
+ int demuxer_client_id);
+
+ // Starts the player.
+ void Start(int player_id);
+
+ // Pauses the player.
+ // is_media_related_action should be true if this pause is coming from an
+ // an action that explicitly pauses the video (user pressing pause, JS, etc.)
+ // Otherwise it should be false if Pause is being called due to other reasons
+ // (cleanup, freeing resources, etc.)
+ void Pause(int player_id, bool is_media_related_action);
+
+ // Performs seek on the player.
+ void Seek(int player_id, const base::TimeDelta& time);
+
+ // Sets the player volume.
+ void SetVolume(int player_id, double volume);
+
+ // Releases resources for the player.
+ void ReleaseResources(int player_id);
+
+ // Destroys the player in the browser process
+ void DestroyPlayer(int player_id);
+
+ // Requests the player to enter fullscreen.
+ void EnterFullscreen(int player_id);
+
+ // Requests the player to exit fullscreen.
+ void ExitFullscreen(int player_id);
+
+#if defined(GOOGLE_TV)
+ // Requests an external surface for out-of-band compositing.
+ void RequestExternalSurface(int player_id, const gfx::RectF& geometry);
+
+ // RenderViewObserver overrides.
+ virtual void DidCommitCompositorFrame() OVERRIDE;
+#endif
+
+ // Encrypted media related methods.
+ void InitializeCDM(int media_keys_id,
+ ProxyMediaKeys* media_keys,
+ const std::vector<uint8>& uuid,
+ const GURL& frame_url);
+ void GenerateKeyRequest(int media_keys_id,
+ const std::string& type,
+ const std::vector<uint8>& init_data);
+ void AddKey(int media_keys_id,
+ const std::vector<uint8>& key,
+ const std::vector<uint8>& init_data,
+ const std::string& session_id);
+ void CancelKeyRequest(int media_keys_id, const std::string& session_id);
+
+ // Registers and unregisters a WebMediaPlayerAndroid object.
int RegisterMediaPlayer(WebMediaPlayerAndroid* player);
void UnregisterMediaPlayer(int player_id);
- // Register a ProxyMediaKeys object. There must be a WebMediaPlayerAndroid
+ // Registers a ProxyMediaKeys object. There must be a WebMediaPlayerAndroid
// object already registered for this id, and it is unregistered when the
// player is unregistered. For now |media_keys_id| is the same as player_id
// used in other methods.
void RegisterMediaKeys(int media_keys_id, ProxyMediaKeys* media_keys);
- // Release the media resources managed by this object when a video
+ // Releases the media resources managed by this object when a video
// is playing.
void ReleaseVideoResources();
- // Check whether a player can enter fullscreen.
+ // Checks whether a player can enter fullscreen.
bool CanEnterFullscreen(WebKit::WebFrame* frame);
// Called when a player entered or exited fullscreen.
void DidEnterFullscreen(WebKit::WebFrame* frame);
void DidExitFullscreen();
- // Check whether the Webframe is in fullscreen.
+ // Checks whether the Webframe is in fullscreen.
bool IsInFullscreen(WebKit::WebFrame* frame);
- // Get the pointer to WebMediaPlayerAndroid given the |player_id|.
+ // Gets the pointer to WebMediaPlayerAndroid given the |player_id|.
WebMediaPlayerAndroid* GetMediaPlayer(int player_id);
- // Get the pointer to ProxyMediaKeys given the |media_keys_id|.
+ // Gets the pointer to ProxyMediaKeys given the |media_keys_id|.
ProxyMediaKeys* GetMediaKeys(int media_keys_id);
#if defined(GOOGLE_TV)
- // Get the list of media players with video geometry changes.
+ // Gets the list of media players with video geometry changes.
void RetrieveGeometryChanges(std::map<int, gfx::RectF>* changes);
#endif
private:
+ // Message handlers.
+ void OnMediaMetadataChanged(int player_id,
+ base::TimeDelta duration,
+ int width,
+ int height,
+ bool success);
+ void OnMediaPlaybackCompleted(int player_id);
+ void OnMediaBufferingUpdate(int player_id, int percent);
+ void OnSeekRequest(int player_id, const base::TimeDelta& time_to_seek);
+ void OnSeekCompleted(int player_id, const base::TimeDelta& current_time);
+ void OnMediaError(int player_id, int error);
+ void OnVideoSizeChanged(int player_id, int width, int height);
+ void OnTimeUpdate(int player_id, base::TimeDelta current_time);
+ void OnMediaPlayerReleased(int player_id);
+ void OnConnectedToRemoteDevice(int player_id);
+ void OnDisconnectedFromRemoteDevice(int player_id);
+ void OnDidExitFullscreen(int player_id);
+ void OnDidEnterFullscreen(int player_id);
+ void OnPlayerPlay(int player_id);
+ void OnPlayerPause(int player_id);
+ void OnKeyAdded(int media_keys_id, const std::string& session_id);
+ void OnKeyError(int media_keys_id,
+ const std::string& session_id,
+ media::MediaKeys::KeyError error_code,
+ int system_code);
+ void OnKeyMessage(int media_keys_id,
+ const std::string& session_id,
+ const std::vector<uint8>& message,
+ const std::string& destination_url);
+
// Info for all available WebMediaPlayerAndroid on a page; kept so that
- // we can enumerate them to send updates about tab focus and visibily.
+ // we can enumerate them to send updates about tab focus and visibility.
std::map<int, WebMediaPlayerAndroid*> media_players_;
// Info for all available ProxyMediaKeys. There must be at most one
diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
index aafbb14..01bfa71 100644
--- a/content/renderer/media/android/webmediaplayer_android.cc
+++ b/content/renderer/media/android/webmediaplayer_android.cc
@@ -17,7 +17,6 @@
#include "content/renderer/media/android/proxy_media_keys.h"
#include "content/renderer/media/android/renderer_demuxer_android.h"
#include "content/renderer/media/android/renderer_media_player_manager.h"
-#include "content/renderer/media/android/webmediaplayer_proxy_android.h"
#include "content/renderer/media/crypto/key_systems.h"
#include "content/renderer/media/webmediaplayer_delegate.h"
#include "content/renderer/media/webmediaplayer_util.h"
@@ -80,7 +79,6 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<WebMediaPlayerDelegate> delegate,
RendererMediaPlayerManager* manager,
- WebMediaPlayerProxyAndroid* proxy,
StreamTextureFactory* factory,
const scoped_refptr<base::MessageLoopProxy>& media_loop,
media::MediaLog* media_log)
@@ -118,12 +116,10 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
#endif // defined(GOOGLE_TV)
pending_playback_(false),
player_type_(MEDIA_PLAYER_TYPE_URL),
- proxy_(proxy),
current_time_(0),
is_remote_(false),
media_log_(media_log),
weak_factory_(this) {
- DCHECK(proxy_);
DCHECK(manager_);
DCHECK(main_thread_checker_.CalledOnValidThread());
@@ -159,7 +155,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
client,
frame,
#else
- proxy_,
+ manager_,
player_id_, // TODO(xhwang): Use media_keys_id when MediaKeys are
// separated from WebMediaPlayer.
#endif // defined(ENABLE_PEPPER_CDMS)
@@ -175,8 +171,10 @@ WebMediaPlayerAndroid::~WebMediaPlayerAndroid() {
SetVideoFrameProviderClient(NULL);
client_->setWebLayer(NULL);
- if (proxy_)
- proxy_->DestroyPlayer(player_id_);
+ if (manager_) {
+ manager_->DestroyPlayer(player_id_);
+ manager_->UnregisterMediaPlayer(player_id_);
+ }
if (stream_id_)
stream_texture_factory_->DestroyStreamTexture(texture_id_);
@@ -188,9 +186,6 @@ WebMediaPlayerAndroid::~WebMediaPlayerAndroid() {
context->deleteTexture(remote_playback_texture_id_);
}
- if (manager_)
- manager_->UnregisterMediaPlayer(player_id_);
-
if (base::MessageLoop::current())
base::MessageLoop::current()->RemoveDestructionObserver(this);
@@ -296,11 +291,11 @@ void WebMediaPlayerAndroid::load(LoadType load_type,
url_ = url;
GURL first_party_url = frame_->document().firstPartyForCookies();
- proxy_->Initialize(
+ manager_->Initialize(
player_type_, player_id_, url, first_party_url, demuxer_client_id);
if (manager_->IsInFullscreen(frame_))
- proxy_->EnterFullscreen(player_id_);
+ manager_->EnterFullscreen(player_id_);
UpdateNetworkState(WebMediaPlayer::NetworkStateLoading);
UpdateReadyState(WebMediaPlayer::ReadyStateHaveNothing);
@@ -333,7 +328,7 @@ void WebMediaPlayerAndroid::play() {
if (hasVideo() && needs_external_surface_ &&
!manager_->IsInFullscreen(frame_)) {
DCHECK(!needs_establish_peer_);
- proxy_->RequestExternalSurface(player_id_, last_computed_rect_);
+ manager_->RequestExternalSurface(player_id_, last_computed_rect_);
}
if (audio_renderer_ && paused())
audio_renderer_->Play();
@@ -344,7 +339,7 @@ void WebMediaPlayerAndroid::play() {
EstablishSurfaceTexturePeer();
if (paused())
- proxy_->Start(player_id_);
+ manager_->Start(player_id_);
UpdatePlayingState(true);
UpdateNetworkState(WebMediaPlayer::NetworkStateLoading);
playing_started_ = true;
@@ -359,7 +354,7 @@ void WebMediaPlayerAndroid::pause(bool is_media_related_action) {
if (audio_renderer_ && !paused())
audio_renderer_->Pause();
#endif
- proxy_->Pause(player_id_, is_media_related_action);
+ manager_->Pause(player_id_, is_media_related_action);
UpdatePlayingState(false);
}
@@ -404,7 +399,7 @@ void WebMediaPlayerAndroid::seek(double seconds) {
media_source_delegate_->StartWaitingForSeek(seek_time_);
// Kick off the asynchronous seek!
- proxy_->Seek(player_id_, seek_time_);
+ manager_->Seek(player_id_, seek_time_);
}
bool WebMediaPlayerAndroid::supportsFullscreen() const {
@@ -420,7 +415,7 @@ void WebMediaPlayerAndroid::setRate(double rate) {
}
void WebMediaPlayerAndroid::setVolume(double volume) {
- proxy_->SetVolume(player_id_, volume);
+ manager_->SetVolume(player_id_, volume);
}
bool WebMediaPlayerAndroid::hasVideo() const {
@@ -738,7 +733,7 @@ void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) {
media_source_delegate_) {
needs_external_surface_ = true;
if (!paused() && !manager_->IsInFullscreen(frame_))
- proxy_->RequestExternalSurface(player_id_, last_computed_rect_);
+ manager_->RequestExternalSurface(player_id_, last_computed_rect_);
} else if (stream_texture_factory_ && !stream_id_) {
// Do deferred stream texture creation finally.
DoCreateStreamTexture();
@@ -797,7 +792,7 @@ void WebMediaPlayerAndroid::OnDidExitFullscreen() {
#if defined(GOOGLE_TV)
if (!paused() && needs_external_surface_)
- proxy_->RequestExternalSurface(player_id_, last_computed_rect_);
+ manager_->RequestExternalSurface(player_id_, last_computed_rect_);
#endif
frame_->view()->willExitFullScreen();
@@ -884,7 +879,7 @@ void WebMediaPlayerAndroid::ReleaseMediaResources() {
case WebMediaPlayer::NetworkStateDecodeError:
break;
}
- proxy_->ReleaseResources(player_id_);
+ manager_->ReleaseResources(player_id_);
OnPlayerReleased();
}
@@ -907,7 +902,6 @@ void WebMediaPlayerAndroid::Detach() {
}
is_remote_ = false;
manager_ = NULL;
- proxy_ = NULL;
}
void WebMediaPlayerAndroid::DrawRemotePlaybackIcon() {
@@ -1051,10 +1045,8 @@ void WebMediaPlayerAndroid::SetVideoFrameProviderClient(
void WebMediaPlayerAndroid::SetCurrentFrameInternal(
scoped_refptr<media::VideoFrame>& video_frame) {
- {
- base::AutoLock auto_lock(current_frame_lock_);
- current_frame_ = video_frame;
- }
+ base::AutoLock auto_lock(current_frame_lock_);
+ current_frame_ = video_frame;
}
scoped_refptr<media::VideoFrame> WebMediaPlayerAndroid::GetCurrentFrame() {
@@ -1433,13 +1425,13 @@ void WebMediaPlayerAndroid::DoReleaseRemotePlaybackTexture(uint32 sync_point) {
void WebMediaPlayerAndroid::enterFullscreen() {
if (manager_->CanEnterFullscreen(frame_)) {
- proxy_->EnterFullscreen(player_id_);
+ manager_->EnterFullscreen(player_id_);
SetNeedsEstablishPeer(false);
}
}
void WebMediaPlayerAndroid::exitFullscreen() {
- proxy_->ExitFullscreen(player_id_);
+ manager_->ExitFullscreen(player_id_);
}
bool WebMediaPlayerAndroid::canEnterFullscreen() const {
diff --git a/content/renderer/media/android/webmediaplayer_android.h b/content/renderer/media/android/webmediaplayer_android.h
index b57910e..0edc3ef 100644
--- a/content/renderer/media/android/webmediaplayer_android.h
+++ b/content/renderer/media/android/webmediaplayer_android.h
@@ -47,7 +47,6 @@ class WebLayerImpl;
namespace content {
class WebMediaPlayerDelegate;
class RendererMediaPlayerManager;
-class WebMediaPlayerProxyAndroid;
#if defined(GOOGLE_TV)
class MediaStreamAudioRenderer;
@@ -76,7 +75,6 @@ class WebMediaPlayerAndroid
WebKit::WebMediaPlayerClient* client,
base::WeakPtr<WebMediaPlayerDelegate> delegate,
RendererMediaPlayerManager* manager,
- WebMediaPlayerProxyAndroid* proxy,
StreamTextureFactory* factory,
const scoped_refptr<base::MessageLoopProxy>& media_loop,
media::MediaLog* media_log);
@@ -340,7 +338,8 @@ class WebMediaPlayerAndroid
// Whether loading has progressed since the last call to didLoadingProgress.
mutable bool did_loading_progress_;
- // Manager for managing this object.
+ // Manager for managing this object and for delegating method calls on
+ // Render Thread.
RendererMediaPlayerManager* manager_;
// Player ID assigned by the |manager_|.
@@ -367,7 +366,7 @@ class WebMediaPlayerAndroid
// Whether the mediaplayer is playing.
bool is_playing_;
- // Wether the mediaplayer has already started playing.
+ // Whether the mediaplayer has already started playing.
bool playing_started_;
// Whether media player needs to re-establish the surface texture peer.
@@ -424,11 +423,6 @@ class WebMediaPlayerAndroid
MediaPlayerHostMsg_Initialize_Type player_type_;
- // Proxy object that delegates method calls on Render Thread.
- // This object is created on the Render Thread and is only called in the
- // destructor.
- WebMediaPlayerProxyAndroid* proxy_;
-
// The current playing time. Because the media player is in the browser
// process, it will regularly update the |current_time_| by calling
// OnTimeUpdate().
diff --git a/content/renderer/media/android/webmediaplayer_proxy_android.cc b/content/renderer/media/android/webmediaplayer_proxy_android.cc
deleted file mode 100644
index 8ca15b5..0000000
--- a/content/renderer/media/android/webmediaplayer_proxy_android.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/renderer/media/android/webmediaplayer_proxy_android.h"
-
-#include "base/bind.h"
-#include "base/message_loop/message_loop.h"
-#include "content/common/media/media_player_messages_android.h"
-#include "content/renderer/media/android/proxy_media_keys.h"
-#include "content/renderer/media/android/renderer_media_player_manager.h"
-#include "content/renderer/media/android/webmediaplayer_android.h"
-
-namespace content {
-
-WebMediaPlayerProxyAndroid::WebMediaPlayerProxyAndroid(
- RenderView* render_view,
- RendererMediaPlayerManager* manager)
- : RenderViewObserver(render_view),
- manager_(manager) {}
-
-WebMediaPlayerProxyAndroid::~WebMediaPlayerProxyAndroid() {
- Send(new MediaPlayerHostMsg_DestroyAllMediaPlayers(routing_id()));
-}
-
-bool WebMediaPlayerProxyAndroid::OnMessageReceived(const IPC::Message& msg) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(WebMediaPlayerProxyAndroid, msg)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaMetadataChanged,
- OnMediaMetadataChanged)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlaybackCompleted,
- OnMediaPlaybackCompleted)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaBufferingUpdate,
- OnMediaBufferingUpdate)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_SeekRequest, OnSeekRequest)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_SeekCompleted, OnSeekCompleted)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaError, OnMediaError)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaVideoSizeChanged,
- OnVideoSizeChanged)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaTimeUpdate, OnTimeUpdate)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_MediaPlayerReleased,
- OnMediaPlayerReleased)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_ConnectedToRemoteDevice,
- OnConnectedToRemoteDevice)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_DisconnectedFromRemoteDevice,
- OnDisconnectedFromRemoteDevice)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidEnterFullscreen, OnDidEnterFullscreen)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidExitFullscreen, OnDidExitFullscreen)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPlay, OnPlayerPlay)
- IPC_MESSAGE_HANDLER(MediaPlayerMsg_DidMediaPlayerPause, OnPlayerPause)
- IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyAdded, OnKeyAdded)
- IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyError, OnKeyError)
- IPC_MESSAGE_HANDLER(MediaKeysMsg_KeyMessage, OnKeyMessage)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void WebMediaPlayerProxyAndroid::Initialize(
- MediaPlayerHostMsg_Initialize_Type type,
- int player_id,
- const GURL& url,
- const GURL& first_party_for_cookies,
- int demuxer_client_id) {
- Send(new MediaPlayerHostMsg_Initialize(
- routing_id(), type, player_id, url, first_party_for_cookies,
- demuxer_client_id));
-}
-
-void WebMediaPlayerProxyAndroid::Start(int player_id) {
- Send(new MediaPlayerHostMsg_Start(routing_id(), player_id));
-}
-
-void WebMediaPlayerProxyAndroid::Pause(
- int player_id,
- bool is_media_related_action) {
- Send(new MediaPlayerHostMsg_Pause(
- routing_id(), player_id, is_media_related_action));
-}
-
-void WebMediaPlayerProxyAndroid::Seek(
- int player_id,
- const base::TimeDelta& time) {
- Send(new MediaPlayerHostMsg_Seek(routing_id(), player_id, time));
-}
-
-void WebMediaPlayerProxyAndroid::SetVolume(int player_id, double volume) {
- Send(new MediaPlayerHostMsg_SetVolume(routing_id(), player_id, volume));
-}
-
-void WebMediaPlayerProxyAndroid::ReleaseResources(int player_id) {
- Send(new MediaPlayerHostMsg_Release(routing_id(), player_id));
-}
-
-void WebMediaPlayerProxyAndroid::DestroyPlayer(int player_id) {
- Send(new MediaPlayerHostMsg_DestroyMediaPlayer(routing_id(), player_id));
-}
-
-void WebMediaPlayerProxyAndroid::OnMediaMetadataChanged(
- int player_id,
- base::TimeDelta duration,
- int width,
- int height,
- bool success) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnMediaMetadataChanged(duration, width, height, success);
-}
-
-void WebMediaPlayerProxyAndroid::OnMediaPlaybackCompleted(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnPlaybackComplete();
-}
-
-void WebMediaPlayerProxyAndroid::OnMediaBufferingUpdate(int player_id,
- int percent) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnBufferingUpdate(percent);
-}
-
-void WebMediaPlayerProxyAndroid::OnSeekRequest(
- int player_id,
- const base::TimeDelta& time_to_seek) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnSeekRequest(time_to_seek);
-}
-
-void WebMediaPlayerProxyAndroid::OnSeekCompleted(
- int player_id,
- const base::TimeDelta& current_time) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnSeekComplete(current_time);
-}
-
-void WebMediaPlayerProxyAndroid::OnMediaError(int player_id, int error) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnMediaError(error);
-}
-
-void WebMediaPlayerProxyAndroid::OnVideoSizeChanged(int player_id,
- int width,
- int height) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnVideoSizeChanged(width, height);
-}
-
-void WebMediaPlayerProxyAndroid::OnTimeUpdate(int player_id,
- base::TimeDelta current_time) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnTimeUpdate(current_time);
-}
-
-void WebMediaPlayerProxyAndroid::OnMediaPlayerReleased(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnPlayerReleased();
-}
-
-void WebMediaPlayerProxyAndroid::OnConnectedToRemoteDevice(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnConnectedToRemoteDevice();
-}
-
-void WebMediaPlayerProxyAndroid::OnDisconnectedFromRemoteDevice(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnDisconnectedFromRemoteDevice();
-}
-
-void WebMediaPlayerProxyAndroid::OnDidEnterFullscreen(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnDidEnterFullscreen();
-}
-
-void WebMediaPlayerProxyAndroid::OnDidExitFullscreen(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnDidExitFullscreen();
-}
-
-void WebMediaPlayerProxyAndroid::OnPlayerPlay(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnMediaPlayerPlay();
-}
-
-void WebMediaPlayerProxyAndroid::OnPlayerPause(int player_id) {
- WebMediaPlayerAndroid* player = GetWebMediaPlayer(player_id);
- if (player)
- player->OnMediaPlayerPause();
-}
-
-void WebMediaPlayerProxyAndroid::EnterFullscreen(int player_id) {
- Send(new MediaPlayerHostMsg_EnterFullscreen(routing_id(), player_id));
-}
-
-void WebMediaPlayerProxyAndroid::ExitFullscreen(int player_id) {
- Send(new MediaPlayerHostMsg_ExitFullscreen(routing_id(), player_id));
-}
-
-#if defined(GOOGLE_TV)
-void WebMediaPlayerProxyAndroid::RequestExternalSurface(
- int player_id,
- const gfx::RectF& geometry) {
- Send(new MediaPlayerHostMsg_NotifyExternalSurface(
- routing_id(), player_id, true, geometry));
-}
-
-void WebMediaPlayerProxyAndroid::DidCommitCompositorFrame() {
- std::map<int, gfx::RectF> geometry_change;
- manager_->RetrieveGeometryChanges(&geometry_change);
- for (std::map<int, gfx::RectF>::iterator it = geometry_change.begin();
- it != geometry_change.end();
- ++it) {
- Send(new MediaPlayerHostMsg_NotifyExternalSurface(
- routing_id(), it->first, false, it->second));
- }
-}
-#endif
-
-void WebMediaPlayerProxyAndroid::InitializeCDM(int media_keys_id,
- ProxyMediaKeys* media_keys,
- const std::vector<uint8>& uuid,
- const GURL& frame_url) {
- manager_->RegisterMediaKeys(media_keys_id, media_keys);
- Send(new MediaKeysHostMsg_InitializeCDM(
- routing_id(), media_keys_id, uuid, frame_url));
-}
-
-void WebMediaPlayerProxyAndroid::GenerateKeyRequest(
- int media_keys_id,
- const std::string& type,
- const std::vector<uint8>& init_data) {
- Send(new MediaKeysHostMsg_GenerateKeyRequest(
- routing_id(), media_keys_id, type, init_data));
-}
-
-void WebMediaPlayerProxyAndroid::AddKey(int media_keys_id,
- const std::vector<uint8>& key,
- const std::vector<uint8>& init_data,
- const std::string& session_id) {
- Send(new MediaKeysHostMsg_AddKey(
- routing_id(), media_keys_id, key, init_data, session_id));
-}
-
-void WebMediaPlayerProxyAndroid::CancelKeyRequest(
- int media_keys_id,
- const std::string& session_id) {
- Send(new MediaKeysHostMsg_CancelKeyRequest(
- routing_id(), media_keys_id, session_id));
-}
-
-WebMediaPlayerAndroid* WebMediaPlayerProxyAndroid::GetWebMediaPlayer(
- int player_id) {
- return static_cast<WebMediaPlayerAndroid*>(
- manager_->GetMediaPlayer(player_id));
-}
-
-ProxyMediaKeys* WebMediaPlayerProxyAndroid::GetMediaKeys(int media_keys_id) {
- return manager_->GetMediaKeys(media_keys_id);
-}
-
-void WebMediaPlayerProxyAndroid::OnKeyAdded(int media_keys_id,
- const std::string& session_id) {
- ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
- if (media_keys)
- media_keys->OnKeyAdded(session_id);
-}
-
-void WebMediaPlayerProxyAndroid::OnKeyError(
- int media_keys_id,
- const std::string& session_id,
- media::MediaKeys::KeyError error_code,
- int system_code) {
- ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
- if (media_keys)
- media_keys->OnKeyError(session_id, error_code, system_code);
-}
-
-void WebMediaPlayerProxyAndroid::OnKeyMessage(
- int media_keys_id,
- const std::string& session_id,
- const std::vector<uint8>& message,
- const std::string& destination_url) {
- ProxyMediaKeys* media_keys = GetMediaKeys(media_keys_id);
- if (media_keys)
- media_keys->OnKeyMessage(session_id, message, destination_url);
-}
-
-} // namespace content
diff --git a/content/renderer/media/android/webmediaplayer_proxy_android.h b/content/renderer/media/android/webmediaplayer_proxy_android.h
deleted file mode 100644
index 7b2ce53..0000000
--- a/content/renderer/media/android/webmediaplayer_proxy_android.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_PROXY_ANDROID_H_
-#define CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_PROXY_ANDROID_H_
-
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/time/time.h"
-#include "content/common/media/media_player_messages_enums_android.h"
-#include "content/public/renderer/render_view_observer.h"
-#include "media/base/android/media_player_android.h"
-#include "media/base/media_keys.h"
-#include "url/gurl.h"
-
-#if defined(GOOGLE_TV)
-#include "ui/gfx/rect_f.h"
-#endif
-
-namespace content {
-
-class ProxyMediaKeys;
-class RendererMediaPlayerManager;
-class WebMediaPlayerAndroid;
-
-// This class manages IPC communication between WebMediaPlayerAndroid and the
-// MediaPlayerManagerAndroid in the browser process.
-class WebMediaPlayerProxyAndroid : public RenderViewObserver {
- public:
- // Construct a WebMediaPlayerProxyAndroid object for the |render_view|.
- // |manager| is passed to this class so that it can find the right
- // WebMediaPlayerAndroid using player IDs.
- WebMediaPlayerProxyAndroid(
- RenderView* render_view,
- RendererMediaPlayerManager* manager);
- virtual ~WebMediaPlayerProxyAndroid();
-
- // RenderViewObserver overrides.
- virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE;
-
- // Initializes a MediaPlayerAndroid object in browser process.
- void Initialize(MediaPlayerHostMsg_Initialize_Type type,
- int player_id,
- const GURL& url,
- const GURL& first_party_for_cookies,
- int demuxer_client_id);
-
- // Starts the player.
- void Start(int player_id);
-
- // Pauses the player.
- // is_media_related_action should be true if this pause is coming from an
- // an action that explicitly pauses the video (user pressing pause, JS, etc.)
- // Otherwise it should be false if Pause is being called due to other reasons
- // (cleanup, freeing resources, etc.)
- void Pause(int player_id, bool is_media_related_action);
-
- // Performs seek on the player.
- void Seek(int player_id, const base::TimeDelta& time);
-
- // Set the player volume.
- void SetVolume(int player_id, double volume);
-
- // Release resources for the player.
- void ReleaseResources(int player_id);
-
- // Destroy the player in the browser process
- void DestroyPlayer(int player_id);
-
- // Request the player to enter fullscreen.
- void EnterFullscreen(int player_id);
-
- // Request the player to exit fullscreen.
- void ExitFullscreen(int player_id);
-
-#if defined(GOOGLE_TV)
- // Request an external surface for out-of-band compositing.
- void RequestExternalSurface(int player_id, const gfx::RectF& geometry);
-
- // RenderViewObserver overrides.
- virtual void DidCommitCompositorFrame() OVERRIDE;
-#endif
-
- // Encrypted media related methods.
- void InitializeCDM(int media_keys_id,
- ProxyMediaKeys* media_keys,
- const std::vector<uint8>& uuid,
- const GURL& frame_url);
- void GenerateKeyRequest(int media_keys_id,
- const std::string& type,
- const std::vector<uint8>& init_data);
- void AddKey(int media_keys_id,
- const std::vector<uint8>& key,
- const std::vector<uint8>& init_data,
- const std::string& session_id);
- void CancelKeyRequest(int media_keys_id, const std::string& session_id);
-
- private:
- WebMediaPlayerAndroid* GetWebMediaPlayer(int player_id);
- ProxyMediaKeys* GetMediaKeys(int media_keys_id);
-
- // Message handlers.
- void OnMediaMetadataChanged(int player_id,
- base::TimeDelta duration,
- int width,
- int height,
- bool success);
- void OnMediaPlaybackCompleted(int player_id);
- void OnMediaBufferingUpdate(int player_id, int percent);
- void OnSeekRequest(int player_id, const base::TimeDelta& time_to_seek);
- void OnSeekCompleted(int player_id, const base::TimeDelta& current_time);
- void OnMediaError(int player_id, int error);
- void OnVideoSizeChanged(int player_id, int width, int height);
- void OnTimeUpdate(int player_id, base::TimeDelta current_time);
- void OnMediaPlayerReleased(int player_id);
- void OnConnectedToRemoteDevice(int player_id);
- void OnDisconnectedFromRemoteDevice(int player_id);
- void OnDidExitFullscreen(int player_id);
- void OnDidEnterFullscreen(int player_id);
- void OnPlayerPlay(int player_id);
- void OnPlayerPause(int player_id);
- void OnKeyAdded(int media_keys_id, const std::string& session_id);
- void OnKeyError(int media_keys_id,
- const std::string& session_id,
- media::MediaKeys::KeyError error_code,
- int system_code);
- void OnKeyMessage(int media_keys_id,
- const std::string& session_id,
- const std::vector<uint8>& message,
- const std::string& destination_url);
-
- RendererMediaPlayerManager* manager_;
-
- DISALLOW_IMPLICIT_CONSTRUCTORS(WebMediaPlayerProxyAndroid);
-};
-
-} // namespace content
-
-#endif // CONTENT_RENDERER_MEDIA_ANDROID_WEBMEDIAPLAYER_PROXY_ANDROID_H_
diff --git a/content/renderer/media/crypto/content_decryption_module_factory.cc b/content/renderer/media/crypto/content_decryption_module_factory.cc
index c259f1c..34f0525 100644
--- a/content/renderer/media/crypto/content_decryption_module_factory.cc
+++ b/content/renderer/media/crypto/content_decryption_module_factory.cc
@@ -17,7 +17,7 @@
#include "third_party/WebKit/public/web/WebMediaPlayerClient.h"
#elif defined(OS_ANDROID)
#include "content/renderer/media/android/proxy_media_keys.h"
-#include "content/renderer/media/android/webmediaplayer_proxy_android.h"
+#include "content/renderer/media/android/renderer_media_player_manager.h"
#endif // defined(ENABLE_PEPPER_CDMS)
namespace content {
@@ -94,7 +94,7 @@ scoped_ptr<media::MediaKeys> ContentDecryptionModuleFactory::Create(
WebKit::WebFrame* web_frame,
const base::Closure& destroy_plugin_cb,
#elif defined(OS_ANDROID)
- WebMediaPlayerProxyAndroid* proxy,
+ RendererMediaPlayerManager* manager,
int media_keys_id,
const GURL& frame_url,
#endif // defined(ENABLE_PEPPER_CDMS)
@@ -117,7 +117,7 @@ scoped_ptr<media::MediaKeys> ContentDecryptionModuleFactory::Create(
destroy_plugin_cb, web_media_player_client, web_frame);
#elif defined(OS_ANDROID)
scoped_ptr<ProxyMediaKeys> proxy_media_keys(new ProxyMediaKeys(
- proxy, media_keys_id, key_added_cb, key_error_cb, key_message_cb));
+ manager, media_keys_id, key_added_cb, key_error_cb, key_message_cb));
proxy_media_keys->InitializeCDM(key_system, frame_url);
return proxy_media_keys.PassAs<media::MediaKeys>();
#else
diff --git a/content/renderer/media/crypto/content_decryption_module_factory.h b/content/renderer/media/crypto/content_decryption_module_factory.h
index 01ab731..3d32832 100644
--- a/content/renderer/media/crypto/content_decryption_module_factory.h
+++ b/content/renderer/media/crypto/content_decryption_module_factory.h
@@ -21,7 +21,7 @@ class WebMediaPlayerClient;
namespace content {
-class WebMediaPlayerProxyAndroid;
+class RendererMediaPlayerManager;
class ContentDecryptionModuleFactory {
public:
@@ -33,7 +33,7 @@ class ContentDecryptionModuleFactory {
WebKit::WebFrame* web_frame,
const base::Closure& destroy_plugin_cb,
#elif defined(OS_ANDROID)
- WebMediaPlayerProxyAndroid* proxy,
+ RendererMediaPlayerManager* manager,
int media_keys_id,
const GURL& frame_url,
#endif // defined(ENABLE_PEPPER_CDMS)
diff --git a/content/renderer/media/crypto/proxy_decryptor.cc b/content/renderer/media/crypto/proxy_decryptor.cc
index 47c4fdd..d0b7084 100644
--- a/content/renderer/media/crypto/proxy_decryptor.cc
+++ b/content/renderer/media/crypto/proxy_decryptor.cc
@@ -8,6 +8,9 @@
#include "base/callback_helpers.h"
#include "base/logging.h"
#include "content/renderer/media/crypto/content_decryption_module_factory.h"
+#if defined(OS_ANDROID)
+#include "content/renderer/media/android/renderer_media_player_manager.h"
+#endif // defined(OS_ANDROID)
namespace content {
@@ -23,7 +26,7 @@ ProxyDecryptor::ProxyDecryptor(
WebKit::WebMediaPlayerClient* web_media_player_client,
WebKit::WebFrame* web_frame,
#elif defined(OS_ANDROID)
- WebMediaPlayerProxyAndroid* proxy,
+ RendererMediaPlayerManager* manager,
int media_keys_id,
#endif // defined(ENABLE_PEPPER_CDMS)
const media::KeyAddedCB& key_added_cb,
@@ -34,7 +37,7 @@ ProxyDecryptor::ProxyDecryptor(
web_media_player_client_(web_media_player_client),
web_frame_(web_frame),
#elif defined(OS_ANDROID)
- proxy_(proxy),
+ manager_(manager),
media_keys_id_(media_keys_id),
#endif // defined(ENABLE_PEPPER_CDMS)
key_added_cb_(key_added_cb),
@@ -131,7 +134,7 @@ scoped_ptr<media::MediaKeys> ProxyDecryptor::CreateMediaKeys(
base::Bind(&ProxyDecryptor::DestroyHelperPlugin,
weak_ptr_factory_.GetWeakPtr()),
#elif defined(OS_ANDROID)
- proxy_,
+ manager_,
media_keys_id_,
frame_url,
#endif // defined(ENABLE_PEPPER_CDMS)
diff --git a/content/renderer/media/crypto/proxy_decryptor.h b/content/renderer/media/crypto/proxy_decryptor.h
index 0202721..336819f 100644
--- a/content/renderer/media/crypto/proxy_decryptor.h
+++ b/content/renderer/media/crypto/proxy_decryptor.h
@@ -26,7 +26,9 @@ class WebMediaPlayerClient;
namespace content {
-class WebMediaPlayerProxyAndroid;
+#if defined(OS_ANDROID)
+class RendererMediaPlayerManager;
+#endif // defined(OS_ANDROID)
// ProxyDecryptor is for EME v0.1b only. It should not be used for the WD API.
// A decryptor proxy that creates a real decryptor object on demand and
@@ -41,7 +43,7 @@ class ProxyDecryptor : public media::MediaKeys {
WebKit::WebMediaPlayerClient* web_media_player_client,
WebKit::WebFrame* web_frame,
#elif defined(OS_ANDROID)
- WebMediaPlayerProxyAndroid* proxy,
+ RendererMediaPlayerManager* manager,
int media_keys_id,
#endif // defined(ENABLE_PEPPER_CDMS)
const media::KeyAddedCB& key_added_cb,
@@ -92,7 +94,7 @@ class ProxyDecryptor : public media::MediaKeys {
WebKit::WebMediaPlayerClient* web_media_player_client_;
WebKit::WebFrame* web_frame_;
#elif defined(OS_ANDROID)
- WebMediaPlayerProxyAndroid* proxy_;
+ RendererMediaPlayerManager* manager_;
int media_keys_id_;
#endif // defined(ENABLE_PEPPER_CDMS)
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 8fcfd89..022fcf3 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -220,7 +220,6 @@
#include "content/renderer/media/android/renderer_media_player_manager.h"
#include "content/renderer/media/android/stream_texture_factory_android_impl.h"
#include "content/renderer/media/android/webmediaplayer_android.h"
-#include "content/renderer/media/android/webmediaplayer_proxy_android.h"
#include "skia/ext/platform_canvas.h"
#include "third_party/WebKit/public/platform/WebFloatPoint.h"
#include "third_party/WebKit/public/platform/WebFloatRect.h"
@@ -865,7 +864,7 @@ RenderViewImpl::RenderViewImpl(RenderViewImplParams* params)
#if defined(OS_ANDROID)
body_background_color_(SK_ColorWHITE),
expected_content_intent_id_(0),
- media_player_proxy_(NULL),
+ media_player_manager_(NULL),
#endif
#if defined(OS_WIN)
focused_plugin_id_(-1),
@@ -985,7 +984,7 @@ void RenderViewImpl::Initialize(RenderViewImplParams* params) {
new SharedWorkerRepository(this);
#if defined(OS_ANDROID)
- media_player_manager_.reset(new RendererMediaPlayerManager());
+ media_player_manager_ = new RendererMediaPlayerManager(this);
new JavaBridgeDispatcher(this);
#endif
@@ -3120,18 +3119,12 @@ WebMediaPlayer* RenderViewImpl::createMediaPlayer(
context_provider->Context3d(), gpu_channel_host, routing_id_));
}
- if (!media_player_proxy_) {
- media_player_proxy_ = new WebMediaPlayerProxyAndroid(
- this, media_player_manager_.get());
- }
-
scoped_ptr<WebMediaPlayerAndroid> web_media_player_android(
new WebMediaPlayerAndroid(
frame,
client,
AsWeakPtr(),
- media_player_manager_.get(),
- media_player_proxy_,
+ media_player_manager_,
stream_texture_factory.release(),
RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy(),
new RenderMediaLog()));
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 53b291f..ccfd1b5 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -236,12 +236,6 @@ class CONTENT_EXPORT RenderViewImpl
RendererWebCookieJarImpl* cookie_jar() { return &cookie_jar_; }
-#if defined(OS_ANDROID)
- RendererMediaPlayerManager* media_player_manager() {
- return media_player_manager_.get();
- }
-#endif
-
// Lazily initialize this view's BrowserPluginManager and return it.
BrowserPluginManager* GetBrowserPluginManager();
@@ -1431,12 +1425,9 @@ class CONTENT_EXPORT RenderViewImpl
typedef std::vector< linked_ptr<ContentDetector> > ContentDetectorList;
ContentDetectorList content_detectors_;
- // Proxy class for WebMediaPlayer to communicate with the real media player
- // objects in browser process.
- WebMediaPlayerProxyAndroid* media_player_proxy_;
-
- // The media player manager for managing all the media players on this view.
- scoped_ptr<RendererMediaPlayerManager> media_player_manager_;
+ // The media player manager for managing all the media players on this view
+ // for communicating with the real media player objects in browser process.
+ RendererMediaPlayerManager* media_player_manager_;
// A date/time picker object for date and time related input elements.
scoped_ptr<RendererDateTimePicker> date_time_picker_client_;