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(
int player_id, const GURL& url,
bool is_media_source,
const GURL& first_party_for_cookies) {
for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
it != players_.end(); ++it) {
if ((*it)->player_id() == player_id) {
players_.erase(it);
break;
}
}
RemovePlayer(player_id);
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,
host->GetBrowserContext()->IsOffTheRecord(), this));
}
......@@ -201,13 +195,7 @@ void MediaPlayerManagerImpl::OnReleaseResources(int player_id) {
}
void MediaPlayerManagerImpl::OnDestroyPlayer(int player_id) {
for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
it != players_.end(); ++it) {
if ((*it)->player_id() == player_id) {
players_.erase(it);
break;
}
}
RemovePlayer(player_id);
if (fullscreen_player_id_ == player_id)
fullscreen_player_id_ = -1;
}
......@@ -391,4 +379,19 @@ void MediaPlayerManagerImpl::ReleaseMediaResources(
// 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
......@@ -38,11 +38,11 @@ class MediaPlayerManagerImpl
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
// Fullscreen video playback controls.
void FullscreenPlayerPlay();
void FullscreenPlayerPause();
void FullscreenPlayerSeek(int msec);
void ExitFullscreen(bool release_media_player);
void SetVideoSurface(jobject surface);
virtual void FullscreenPlayerPlay();
virtual void FullscreenPlayerPause();
virtual void FullscreenPlayerSeek(int msec);
virtual void ExitFullscreen(bool release_media_player);
virtual void SetVideoSurface(jobject surface);
// media::MediaPlayerManager overrides.
virtual void OnTimeUpdate(
......@@ -89,31 +89,39 @@ class MediaPlayerManagerImpl
// method of MediaPlayerManager or the derived classes constructors.
explicit MediaPlayerManagerImpl(RenderViewHost* render_view_host);
private:
// Message handlers.
void OnEnterFullscreen(int player_id);
void OnExitFullscreen(int player_id);
void OnInitialize(int player_id, const GURL& url,
bool is_media_source,
const GURL& first_party_for_cookies);
void OnStart(int player_id);
void OnSeek(int player_id, base::TimeDelta time);
void OnPause(int player_id);
void OnReleaseResources(int player_id);
void OnDestroyPlayer(int player_id);
void OnDemuxerReady(
virtual void OnEnterFullscreen(int player_id);
virtual void OnExitFullscreen(int player_id);
virtual void OnInitialize(
int player_id,
const GURL& url,
bool is_media_source,
const GURL& first_party_for_cookies);
virtual void OnStart(int player_id);
virtual void OnSeek(int player_id, base::TimeDelta time);
virtual void OnPause(int player_id);
virtual void OnReleaseResources(int player_id);
virtual void OnDestroyPlayer(int player_id);
virtual void OnDemuxerReady(
int player_id,
const media::MediaPlayerHostMsg_DemuxerReady_Params& params);
void OnReadFromDemuxerAck(
virtual void OnReadFromDemuxerAck(
int player_id,
const media::MediaPlayerHostMsg_ReadFromDemuxerAck_Params& params);
void OnMediaSeekRequestAck(int player_id);
#if defined(GOOGLE_TV)
void OnNotifyExternalSurface(
virtual void OnNotifyExternalSurface(
int player_id, bool is_request, const gfx::RectF& rect);
#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.
ScopedVector<media::MediaPlayerAndroid> players_;
......
......@@ -76,4 +76,12 @@ void MediaPlayerAndroid::OnSeekRequestAck() {
NOTREACHED() << "Unexpected ipc received";
}
GURL MediaPlayerAndroid::GetUrl() {
return GURL();
}
GURL MediaPlayerAndroid::GetFirstPartyForCookies() {
return GURL();
}
} // namespace media
......@@ -75,6 +75,8 @@ class MEDIA_EXPORT MediaPlayerAndroid {
virtual bool CanPause() = 0;
virtual bool CanSeekForward() = 0;
virtual bool CanSeekBackward() = 0;
virtual GURL GetUrl();
virtual GURL GetFirstPartyForCookies();
// Methods for DeumxerStreamPlayer.
// Informs DemuxerStreamPlayer that the demuxer is ready.
......
......@@ -417,4 +417,12 @@ bool MediaPlayerBridge::IsPlayerReady() {
return prepared_;
}
GURL MediaPlayerBridge::GetUrl() {
return url_;
}
GURL MediaPlayerBridge::GetFirstPartyForCookies() {
return first_party_for_cookies_;
}
} // namespace media
......@@ -65,6 +65,8 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid {
virtual bool CanSeekForward() OVERRIDE;
virtual bool CanSeekBackward() OVERRIDE;
virtual bool IsPlayerReady() OVERRIDE;
virtual GURL GetUrl() OVERRIDE;
virtual GURL GetFirstPartyForCookies() OVERRIDE;
protected:
void SetMediaPlayer(jobject j_media_player);
......@@ -83,10 +85,10 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid {
virtual void Prepare();
void OnMediaPrepared();
private:
// Create the actual android media player.
void CreateMediaPlayer();
virtual void CreateMediaPlayer();
private:
// Set the data source for the media player.
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