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 |