summaryrefslogtreecommitdiffstats
path: root/media/base
diff options
context:
space:
mode:
authordavve <davve@opera.com>2016-03-11 06:55:07 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-11 14:56:43 +0000
commit541ee5c14eb321ab188cce3d077649cc216404b8 (patch)
tree4b7dfc88dbb01960f28f6a9579b403fc77a0336f /media/base
parent43e79f033e4981cc924614529678f74db1ca435a (diff)
downloadchromium_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.cc6
-rw-r--r--media/base/android/media_codec_player.h3
-rw-r--r--media/base/android/media_codec_player_unittest.cc2
-rw-r--r--media/base/android/media_player_android.cc4
-rw-r--r--media/base/android/media_player_android.h21
-rw-r--r--media/base/android/media_player_bridge.cc6
-rw-r--r--media/base/android/media_player_bridge.h3
-rw-r--r--media/base/android/media_player_bridge_unittest.cc3
-rw-r--r--media/base/android/media_source_player.cc6
-rw-r--r--media/base/android/media_source_player.h3
-rw-r--r--media/base/android/media_source_player_unittest.cc6
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) {}