diff options
author | davve <davve@opera.com> | 2016-03-11 06:55:07 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-11 14:56:43 +0000 |
commit | 541ee5c14eb321ab188cce3d077649cc216404b8 (patch) | |
tree | 4b7dfc88dbb01960f28f6a9579b403fc77a0336f /media/base | |
parent | 43e79f033e4981cc924614529678f74db1ca435a (diff) | |
download | chromium_src-541ee5c14eb321ab188cce3d077649cc216404b8.zip chromium_src-541ee5c14eb321ab188cce3d077649cc216404b8.tar.gz chromium_src-541ee5c14eb321ab188cce3d077649cc216404b8.tar.bz2 |
Propagate media session id into MediaPlayerAndroid
The media session id will be used to implicitly activate a user defined media session.
BUG=497735, 581728
Review URL: https://codereview.chromium.org/1640123004
Cr-Commit-Position: refs/heads/master@{#380632}
Diffstat (limited to 'media/base')
-rw-r--r-- | media/base/android/media_codec_player.cc | 6 | ||||
-rw-r--r-- | media/base/android/media_codec_player.h | 3 | ||||
-rw-r--r-- | media/base/android/media_codec_player_unittest.cc | 2 | ||||
-rw-r--r-- | media/base/android/media_player_android.cc | 4 | ||||
-rw-r--r-- | media/base/android/media_player_android.h | 21 | ||||
-rw-r--r-- | media/base/android/media_player_bridge.cc | 6 | ||||
-rw-r--r-- | media/base/android/media_player_bridge.h | 3 | ||||
-rw-r--r-- | media/base/android/media_player_bridge_unittest.cc | 3 | ||||
-rw-r--r-- | media/base/android/media_source_player.cc | 6 | ||||
-rw-r--r-- | media/base/android/media_source_player.h | 3 | ||||
-rw-r--r-- | media/base/android/media_source_player_unittest.cc | 6 |
11 files changed, 48 insertions, 15 deletions
diff --git a/media/base/android/media_codec_player.cc b/media/base/android/media_codec_player.cc index 7eb9644..b5c3b1b 100644 --- a/media/base/android/media_codec_player.cc +++ b/media/base/android/media_codec_player.cc @@ -41,11 +41,13 @@ MediaCodecPlayer::MediaCodecPlayer( base::WeakPtr<MediaPlayerManager> manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, scoped_ptr<DemuxerAndroid> demuxer, - const GURL& frame_url) + const GURL& frame_url, + int media_session_id) : MediaPlayerAndroid(player_id, manager.get(), on_decoder_resources_released_cb, - frame_url), + frame_url, + media_session_id), ui_task_runner_(base::ThreadTaskRunnerHandle::Get()), demuxer_(std::move(demuxer)), state_(kStatePaused), diff --git a/media/base/android/media_codec_player.h b/media/base/android/media_codec_player.h index 30a4baf..83b4164 100644 --- a/media/base/android/media_codec_player.h +++ b/media/base/android/media_codec_player.h @@ -191,7 +191,8 @@ class MEDIA_EXPORT MediaCodecPlayer : public MediaPlayerAndroid, base::WeakPtr<MediaPlayerManager> manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, scoped_ptr<DemuxerAndroid> demuxer, - const GURL& frame_url); + const GURL& frame_url, + int media_session_id); ~MediaCodecPlayer() override; // A helper method that performs the media thread part of initialization. diff --git a/media/base/android/media_codec_player_unittest.cc b/media/base/android/media_codec_player_unittest.cc index 5076e48..eb3f827 100644 --- a/media/base/android/media_codec_player_unittest.cc +++ b/media/base/android/media_codec_player_unittest.cc @@ -644,7 +644,7 @@ void MediaCodecPlayerTest::CreatePlayer() { manager_.GetWeakPtr(), base::Bind(&MockMediaPlayerManager::OnMediaResourcesRequested, base::Unretained(&manager_)), - scoped_ptr<MockDemuxerAndroid>(demuxer_), GURL()); + scoped_ptr<MockDemuxerAndroid>(demuxer_), GURL(), kDefaultMediaSessionId); DCHECK(player_); } diff --git a/media/base/android/media_player_android.cc b/media/base/android/media_player_android.cc index 8a77ab0..b8f4080 100644 --- a/media/base/android/media_player_android.cc +++ b/media/base/android/media_player_android.cc @@ -27,13 +27,15 @@ MediaPlayerAndroid::MediaPlayerAndroid( int player_id, MediaPlayerManager* manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, - const GURL& frame_url) + const GURL& frame_url, + int media_session_id) : on_decoder_resources_released_cb_(on_decoder_resources_released_cb), player_id_(player_id), volume_(kDefaultVolume), volume_multiplier_(kDefaultVolumeMultiplier), manager_(manager), frame_url_(frame_url), + media_session_id_(media_session_id), weak_factory_(this) { listener_.reset(new MediaPlayerListener(base::ThreadTaskRunnerHandle::Get(), weak_factory_.GetWeakPtr())); diff --git a/media/base/android/media_player_android.h b/media/base/android/media_player_android.h index 16982d6..d33bb14 100644 --- a/media/base/android/media_player_android.h +++ b/media/base/android/media_player_android.h @@ -23,6 +23,19 @@ namespace media { class MediaKeys; class MediaPlayerManager; +enum { + // Id used for players not participating in any media sessions + // because of undefined behavior in the specification. When all + // media session interactions have been worked out, this id should + // no longer be used. + kInvalidMediaSessionId = -1, + + // The media session for media elements that don't have an explicit + // user created media session set. Must be in-sync with + // WebMediaSession::DefaultID in blink. + kDefaultMediaSessionId = 0 +}; + // This class serves as the base class for different media player // implementations on Android. Subclasses need to provide their own // MediaPlayerAndroid::Create() implementation. @@ -108,6 +121,8 @@ class MEDIA_EXPORT MediaPlayerAndroid { GURL frame_url() { return frame_url_; } + int media_session_id() { return media_session_id_; } + // Attach/Detaches |listener_| for listening to all the media events. If // |j_media_player| is NULL, |listener_| only listens to the system media // events. Otherwise, it also listens to the events from |j_media_player|. @@ -119,7 +134,8 @@ class MEDIA_EXPORT MediaPlayerAndroid { int player_id, MediaPlayerManager* manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, - const GURL& frame_url); + const GURL& frame_url, + int media_session_id); // TODO(qinmin): Simplify the MediaPlayerListener class to only listen to // media interrupt events. And have a separate child class to listen to all @@ -173,6 +189,9 @@ class MEDIA_EXPORT MediaPlayerAndroid { // Listener object that listens to all the media player events. scoped_ptr<MediaPlayerListener> listener_; + // Media session ID assigned to this player. + int media_session_id_; + // Weak pointer passed to |listener_| for callbacks. // NOTE: Weak pointers must be invalidated before all other member variables. base::WeakPtrFactory<MediaPlayerAndroid> weak_factory_; diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc index dc9d147..50a0af3 100644 --- a/media/base/android/media_player_bridge.cc +++ b/media/base/android/media_player_bridge.cc @@ -43,11 +43,13 @@ MediaPlayerBridge::MediaPlayerBridge( MediaPlayerManager* manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, const GURL& frame_url, - bool allow_credentials) + bool allow_credentials, + int media_session_id) : MediaPlayerAndroid(player_id, manager, on_decoder_resources_released_cb, - frame_url), + frame_url, + media_session_id), prepared_(false), pending_play_(false), should_seek_on_prepare_(false), diff --git a/media/base/android/media_player_bridge.h b/media/base/android/media_player_bridge.h index 0652bc1..21dc900 100644 --- a/media/base/android/media_player_bridge.h +++ b/media/base/android/media_player_bridge.h @@ -52,7 +52,8 @@ class MEDIA_EXPORT MediaPlayerBridge : public MediaPlayerAndroid { MediaPlayerManager* manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, const GURL& frame_url, - bool allow_credentials); + bool allow_credentials, + int media_session_id); ~MediaPlayerBridge() override; // Initialize this object and extract the metadata from the media. diff --git a/media/base/android/media_player_bridge_unittest.cc b/media/base/android/media_player_bridge_unittest.cc index c2b2447..d4db5ba 100644 --- a/media/base/android/media_player_bridge_unittest.cc +++ b/media/base/android/media_player_bridge_unittest.cc @@ -58,7 +58,8 @@ class MediaPlayerBridgeTest : public testing::Test { base::Bind(&MockMediaPlayerManager::OnMediaResourcesRequested, base::Unretained(&manager_)), GURL(), - false) {} + false, + kDefaultMediaSessionId) {} void SetCanSeekForward(bool can_seek_forward) { bridge_.can_seek_forward_ = can_seek_forward; diff --git a/media/base/android/media_source_player.cc b/media/base/android/media_source_player.cc index 0eb80391..30636f6 100644 --- a/media/base/android/media_source_player.cc +++ b/media/base/android/media_source_player.cc @@ -32,11 +32,13 @@ MediaSourcePlayer::MediaSourcePlayer( MediaPlayerManager* manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, scoped_ptr<DemuxerAndroid> demuxer, - const GURL& frame_url) + const GURL& frame_url, + int media_session_id) : MediaPlayerAndroid(player_id, manager, on_decoder_resources_released_cb, - frame_url), + frame_url, + media_session_id), demuxer_(std::move(demuxer)), pending_event_(NO_EVENT_PENDING), playing_(false), diff --git a/media/base/android/media_source_player.h b/media/base/android/media_source_player.h index c1cc238..d6b26d7 100644 --- a/media/base/android/media_source_player.h +++ b/media/base/android/media_source_player.h @@ -45,7 +45,8 @@ class MEDIA_EXPORT MediaSourcePlayer : public MediaPlayerAndroid, MediaPlayerManager* manager, const OnDecoderResourcesReleasedCB& on_decoder_resources_released_cb, scoped_ptr<DemuxerAndroid> demuxer, - const GURL& frame_url); + const GURL& frame_url, + int media_session_id); ~MediaSourcePlayer() override; // MediaPlayerAndroid implementation. diff --git a/media/base/android/media_source_player_unittest.cc b/media/base/android/media_source_player_unittest.cc index 0ce01abf..36fc679 100644 --- a/media/base/android/media_source_player_unittest.cc +++ b/media/base/android/media_source_player_unittest.cc @@ -162,11 +162,13 @@ class MediaSourcePlayerTest : public testing::Test { MediaSourcePlayerTest() : manager_(&message_loop_), demuxer_(new MockDemuxerAndroid(&message_loop_)), - player_(0, &manager_, + player_(0, + &manager_, base::Bind(&MockMediaPlayerManager::OnDecorderResourcesReleased, base::Unretained(&manager_)), scoped_ptr<DemuxerAndroid>(demuxer_), - GURL()), + GURL(), + kDefaultMediaSessionId), decoder_callback_hook_executed_(false), surface_texture_a_is_next_(true) {} |