Commit d7d7bf09 authored by avayvod@chromium.org's avatar avayvod@chromium.org

Allow some Android media player implementation to be overridden by embedders.

BUG=178307
R=qinmin@chromium.org,bulach@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15876006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203080 0039d316-1c4b-4281-b951-d872f2087c98
parent 9baab257
...@@ -129,16 +129,10 @@ void MediaPlayerManagerImpl::OnInitialize( ...@@ -129,16 +129,10 @@ void MediaPlayerManagerImpl::OnInitialize(
int player_id, const GURL& url, int player_id, const GURL& url,
bool is_media_source, bool is_media_source,
const GURL& first_party_for_cookies) { const GURL& first_party_for_cookies) {
for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin(); RemovePlayer(player_id);
it != players_.end(); ++it) {
if ((*it)->player_id() == player_id) {
players_.erase(it);
break;
}
}
RenderProcessHost* host = render_view_host()->GetProcess(); RenderProcessHost* host = render_view_host()->GetProcess();
players_.push_back(media::MediaPlayerAndroid::Create( AddPlayer(media::MediaPlayerAndroid::Create(
player_id, url, is_media_source, first_party_for_cookies, player_id, url, is_media_source, first_party_for_cookies,
host->GetBrowserContext()->IsOffTheRecord(), this)); host->GetBrowserContext()->IsOffTheRecord(), this));
} }
...@@ -201,13 +195,7 @@ void MediaPlayerManagerImpl::OnReleaseResources(int player_id) { ...@@ -201,13 +195,7 @@ void MediaPlayerManagerImpl::OnReleaseResources(int player_id) {
} }
void MediaPlayerManagerImpl::OnDestroyPlayer(int player_id) { void MediaPlayerManagerImpl::OnDestroyPlayer(int player_id) {
for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin(); RemovePlayer(player_id);
it != players_.end(); ++it) {
if ((*it)->player_id() == player_id) {
players_.erase(it);
break;
}
}
if (fullscreen_player_id_ == player_id) if (fullscreen_player_id_ == player_id)
fullscreen_player_id_ = -1; fullscreen_player_id_ = -1;
} }
...@@ -391,4 +379,19 @@ void MediaPlayerManagerImpl::ReleaseMediaResources( ...@@ -391,4 +379,19 @@ void MediaPlayerManagerImpl::ReleaseMediaResources(
// Nothing needs to be done. // Nothing needs to be done.
} }
void MediaPlayerManagerImpl::AddPlayer(MediaPlayerAndroid* player) {
DCHECK(!GetPlayer(player->player_id()));
players_.push_back(player);
}
void MediaPlayerManagerImpl::RemovePlayer(int player_id) {
for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
it != players_.end(); ++it) {
if ((*it)->player_id() == player_id) {
players_.erase(it);
break;
}
}
}
} // namespace content } // namespace content
...@@ -38,11 +38,11 @@ class MediaPlayerManagerImpl ...@@ -38,11 +38,11 @@ class MediaPlayerManagerImpl
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
// Fullscreen video playback controls. // Fullscreen video playback controls.
void FullscreenPlayerPlay(); virtual void FullscreenPlayerPlay();
void FullscreenPlayerPause(); virtual void FullscreenPlayerPause();
void FullscreenPlayerSeek(int msec); virtual void FullscreenPlayerSeek(int msec);
void ExitFullscreen(bool release_media_player); virtual void ExitFullscreen(bool release_media_player);
void SetVideoSurface(jobject surface); virtual void SetVideoSurface(jobject surface);
// media::MediaPlayerManager overrides. // media::MediaPlayerManager overrides.
virtual void OnTimeUpdate( virtual void OnTimeUpdate(
...@@ -89,31 +89,39 @@ class MediaPlayerManagerImpl ...@@ -89,31 +89,39 @@ class MediaPlayerManagerImpl
// method of MediaPlayerManager or the derived classes constructors. // method of MediaPlayerManager or the derived classes constructors.
explicit MediaPlayerManagerImpl(RenderViewHost* render_view_host); explicit MediaPlayerManagerImpl(RenderViewHost* render_view_host);
private:
// Message handlers. // Message handlers.
void OnEnterFullscreen(int player_id); virtual void OnEnterFullscreen(int player_id);
void OnExitFullscreen(int player_id); virtual void OnExitFullscreen(int player_id);
void OnInitialize(int player_id, const GURL& url, virtual void OnInitialize(
int player_id,
const GURL& url,
bool is_media_source, bool is_media_source,
const GURL& first_party_for_cookies); const GURL& first_party_for_cookies);
void OnStart(int player_id); virtual void OnStart(int player_id);
void OnSeek(int player_id, base::TimeDelta time); virtual void OnSeek(int player_id, base::TimeDelta time);
void OnPause(int player_id); virtual void OnPause(int player_id);
void OnReleaseResources(int player_id); virtual void OnReleaseResources(int player_id);
void OnDestroyPlayer(int player_id); virtual void OnDestroyPlayer(int player_id);
void OnDemuxerReady( virtual void OnDemuxerReady(
int player_id, int player_id,
const media::MediaPlayerHostMsg_DemuxerReady_Params& params); const media::MediaPlayerHostMsg_DemuxerReady_Params& params);
void OnReadFromDemuxerAck( virtual void OnReadFromDemuxerAck(
int player_id, int player_id,
const media::MediaPlayerHostMsg_ReadFromDemuxerAck_Params& params); const media::MediaPlayerHostMsg_ReadFromDemuxerAck_Params& params);
void OnMediaSeekRequestAck(int player_id); void OnMediaSeekRequestAck(int player_id);
#if defined(GOOGLE_TV) #if defined(GOOGLE_TV)
void OnNotifyExternalSurface( virtual void OnNotifyExternalSurface(
int player_id, bool is_request, const gfx::RectF& rect); int player_id, bool is_request, const gfx::RectF& rect);
#endif #endif
// Adds a given player to the list.
void AddPlayer(media::MediaPlayerAndroid* player);
// Removes the player with the specified id.
void RemovePlayer(int player_id);
private:
// An array of managed players. // An array of managed players.
ScopedVector<media::MediaPlayerAndroid> players_; ScopedVector<media::MediaPlayerAndroid> players_;
......
...@@ -76,4 +76,12 @@ void MediaPlayerAndroid::OnSeekRequestAck() { ...@@ -76,4 +76,12 @@ void MediaPlayerAndroid::OnSeekRequestAck() {
NOTREACHED() << "Unexpected ipc received"; NOTREACHED() << "Unexpected ipc received";
} }
GURL MediaPlayerAndroid::GetUrl() {
return GURL();
}
GURL MediaPlayerAndroid::GetFirstPartyForCookies() {
return GURL();
}
} // namespace media } // namespace media
...@@ -75,6 +75,8 @@ class MEDIA_EXPORT MediaPlayerAndroid { ...@@ -75,6 +75,8 @@ class MEDIA_EXPORT MediaPlayerAndroid {
virtual bool CanPause() = 0; virtual bool CanPause() = 0;
virtual bool CanSeekForward() = 0; virtual bool CanSeekForward() = 0;
virtual bool CanSeekBackward() = 0; virtual bool CanSeekBackward() = 0;
virtual GURL GetUrl();
virtual GURL GetFirstPartyForCookies();
// Methods for DeumxerStreamPlayer. // Methods for DeumxerStreamPlayer.
// Informs DemuxerStreamPlayer that the demuxer is ready. // Informs DemuxerStreamPlayer that the demuxer is ready.
......
...@@ -417,4 +417,12 @@ bool MediaPlayerBridge::IsPlayerReady() { ...@@ -417,4 +417,12 @@ bool MediaPlayerBridge::IsPlayerReady() {
return prepared_; return prepared_;
} }
GURL MediaPlayerBridge::GetUrl() {
return url_;
}
GURL MediaPlayerBridge::GetFirstPartyForCookies() {
return first_party_for_cookies_;
}
} // namespace media } // namespace media
...@@ -65,6 +65,8 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid { ...@@ -65,6 +65,8 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid {
virtual bool CanSeekForward() OVERRIDE; virtual bool CanSeekForward() OVERRIDE;
virtual bool CanSeekBackward() OVERRIDE; virtual bool CanSeekBackward() OVERRIDE;
virtual bool IsPlayerReady() OVERRIDE; virtual bool IsPlayerReady() OVERRIDE;
virtual GURL GetUrl() OVERRIDE;
virtual GURL GetFirstPartyForCookies() OVERRIDE;
protected: protected:
void SetMediaPlayer(jobject j_media_player); void SetMediaPlayer(jobject j_media_player);
...@@ -83,10 +85,10 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid { ...@@ -83,10 +85,10 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid {
virtual void Prepare(); virtual void Prepare();
void OnMediaPrepared(); void OnMediaPrepared();
private:
// Create the actual android media player. // Create the actual android media player.
void CreateMediaPlayer(); virtual void CreateMediaPlayer();
private:
// Set the data source for the media player. // Set the data source for the media player.
void SetDataSource(const std::string& url); void SetDataSource(const std::string& url);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment