Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1257)

Unified Diff: content/browser/media/session/media_session.cc

Issue 2274013005: Flash joining MediaSession (non-stack implementation) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@media_session_type
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/media/session/media_session.cc
diff --git a/content/browser/media/session/media_session.cc b/content/browser/media/session/media_session.cc
index 79df56701892976eb46c99079b083a886f0331b1..a5ffe5e2c0e913e3ec5c3f362c8aa7c84f045625 100644
--- a/content/browser/media/session/media_session.cc
+++ b/content/browser/media/session/media_session.cc
@@ -70,6 +70,9 @@ void MediaSession::SetMetadata(const MediaMetadata& metadata) {
bool MediaSession::AddPlayer(MediaSessionObserver* observer,
int player_id,
media::MediaContentType media_content_type) {
+ if (media_content_type == media::MediaContentType::Pepper)
+ return AddPepperPlayer(observer, player_id);
+
observer->OnSetVolumeMultiplier(player_id, volume_multiplier_);
// Determine the audio focus type required for playing the new player.
@@ -121,6 +124,13 @@ void MediaSession::RemovePlayer(MediaSessionObserver* observer,
if (it != players_.end())
players_.erase(it);
+ auto it_pepper = pepper_players_.find(PlayerIdentifier(observer, player_id));
+ if (it != pepper_players_.end()) {
+ pepper_players_.erase(it);
+ if (pepper_players_.empty())
+ delegate_->AbandonPepperAudioFocus();
+ }
+
AbandonSystemAudioFocusIfNeeded();
}
@@ -132,6 +142,15 @@ void MediaSession::RemovePlayers(MediaSessionObserver* observer) {
++it;
}
+ for (auto it = pepper_players_.begin(); it != pepper_players_.end();) {
+ if (it->observer == observer)
+ pepper_players_.erase(it++);
+ else
+ ++it;
+ if (pepper_players_.empty())
+ delegate_->AbandonPepperAudioFocus();
+ }
+
AbandonSystemAudioFocusIfNeeded();
}
@@ -371,4 +390,16 @@ void MediaSession::SetAudioFocusState(State audio_focus_state) {
}
}
+bool MediaSession::AddPepperPlayer(
+ MediaSessionObserver* observer, int player_id) {
+ pepper_players_.insert(PlayerIdentifier(observer, player_id));
+ return delegate_->RequestPepperAudioFocus();
+}
+
+void MediaSession::SetPepperVolumeMultiplier(double volume_multiplier) {
+ volume_multiplier_ = volume_multiplier;
+ for (const auto& it : pepper_players_)
+ it.observer->OnSetVolumeMultiplier(it.player_id, volume_multiplier_);
+}
+
} // namespace content
« no previous file with comments | « content/browser/media/session/media_session.h ('k') | content/browser/media/session/media_session_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698