Chromium Code Reviews| Index: content/browser/media/session/pepper_playback_observer.cc |
| diff --git a/content/browser/media/session/pepper_playback_observer.cc b/content/browser/media/session/pepper_playback_observer.cc |
| index 593d3d727788cbe6e11d9ef6fddc44479fed0e47..8c6333b47b302a385e831b01eaea63643c9e865b 100644 |
| --- a/content/browser/media/session/pepper_playback_observer.cc |
| +++ b/content/browser/media/session/pepper_playback_observer.cc |
| @@ -4,10 +4,11 @@ |
| #include "content/browser/media/session/pepper_playback_observer.h" |
| -#include "base/feature_list.h" |
| +#include "base/command_line.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "content/browser/media/session/media_session_impl.h" |
| #include "content/browser/media/session/pepper_player_delegate.h" |
| +#include "content/browser/web_contents/web_contents_impl.h" |
|
whywhat
2016/12/06 01:37:31
nit: Is this header necessary? Seems like the only
Zhiqiang Zhang (Slow)
2016/12/06 12:05:56
Actually we only need to store WebContents* in Pep
|
| #include "content/common/frame_messages.h" |
| #include "ipc/ipc_message_macros.h" |
| #include "media/base/media_content_type.h" |
| @@ -41,41 +42,51 @@ PepperPlaybackObserver::~PepperPlaybackObserver() { |
| } |
| } |
| -void PepperPlaybackObserver::PepperInstanceCreated(int32_t pp_instance) { |
| - players_played_sound_map_[pp_instance] = false; |
| +void PepperPlaybackObserver::PepperInstanceCreated( |
| + RenderFrameHost* render_frame_host, int32_t pp_instance) { |
| + PlayerId id(render_frame_host, pp_instance); |
| + players_played_sound_map_[id] = false; |
| } |
| -void PepperPlaybackObserver::PepperInstanceDeleted(int32_t pp_instance) { |
| +void PepperPlaybackObserver::PepperInstanceDeleted( |
| + RenderFrameHost* render_frame_host, int32_t pp_instance) { |
| + PlayerId id(render_frame_host, pp_instance); |
| UMA_HISTOGRAM_BOOLEAN("Media.Pepper.PlayedSound", |
| - players_played_sound_map_[pp_instance]); |
| - players_played_sound_map_.erase(pp_instance); |
| + players_played_sound_map_[id]); |
| + players_played_sound_map_.erase(id); |
| - PepperStopsPlayback(pp_instance); |
| + PepperStopsPlayback(render_frame_host, pp_instance); |
| } |
| -void PepperPlaybackObserver::PepperStartsPlayback(int32_t pp_instance) { |
| - players_played_sound_map_[pp_instance] = true; |
| +void PepperPlaybackObserver::PepperStartsPlayback( |
| + RenderFrameHost* render_frame_host, int32_t pp_instance) { |
| + PlayerId id(render_frame_host, pp_instance); |
| - if (players_map_.count(pp_instance)) |
| + players_played_sound_map_[id] = true; |
| + |
| + if (players_map_.count(id)) |
| return; |
| - players_map_[pp_instance].reset(new PepperPlayerDelegate( |
| - contents_, pp_instance)); |
| + players_map_[id].reset(new PepperPlayerDelegate( |
| + render_frame_host, pp_instance)); |
| MediaSessionImpl::Get(contents_)->AddPlayer( |
| - players_map_[pp_instance].get(), PepperPlayerDelegate::kPlayerId, |
| + players_map_[id].get(), PepperPlayerDelegate::kPlayerId, |
| ShouldDuckFlash() ? media::MediaContentType::Pepper |
| : media::MediaContentType::OneShot); |
| } |
| -void PepperPlaybackObserver::PepperStopsPlayback(int32_t pp_instance) { |
| - if (!players_map_.count(pp_instance)) |
| +void PepperPlaybackObserver::PepperStopsPlayback( |
| + RenderFrameHost* render_frame_host, int32_t pp_instance) { |
| + PlayerId id(render_frame_host, pp_instance); |
| + |
| + if (!players_map_.count(id)) |
| return; |
| MediaSessionImpl::Get(contents_)->RemovePlayer( |
| - players_map_[pp_instance].get(), PepperPlayerDelegate::kPlayerId); |
| + players_map_[id].get(), PepperPlayerDelegate::kPlayerId); |
| - players_map_.erase(pp_instance); |
| + players_map_.erase(id); |
| } |
| } // namespace content |