| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/media/session/media_session_impl.h" | 5 #include "content/browser/media/session/media_session_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include "content/browser/media/session/audio_focus_delegate.h" | 8 #include "content/browser/media/session/audio_focus_delegate.h" |
| 9 #include "content/browser/media/session/media_session_controller.h" | 9 #include "content/browser/media/session/media_session_controller.h" |
| 10 #include "content/browser/media/session/media_session_player_observer.h" | 10 #include "content/browser/media/session/media_session_player_observer.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 // TODO(zqzhang): refactor MediaSessionImpl, maybe move the interface used to | 103 // TODO(zqzhang): refactor MediaSessionImpl, maybe move the interface used to |
| 104 // talk with AudioFocusManager out to a seperate class. The AudioFocusManager | 104 // talk with AudioFocusManager out to a seperate class. The AudioFocusManager |
| 105 // unit tests then could mock the interface and abandon audio focus when | 105 // unit tests then could mock the interface and abandon audio focus when |
| 106 // WebContents is destroyed. See https://crbug.com/651069 | 106 // WebContents is destroyed. See https://crbug.com/651069 |
| 107 normal_players_.clear(); | 107 normal_players_.clear(); |
| 108 pepper_players_.clear(); | 108 pepper_players_.clear(); |
| 109 one_shot_players_.clear(); | 109 one_shot_players_.clear(); |
| 110 AbandonSystemAudioFocusIfNeeded(); | 110 AbandonSystemAudioFocusIfNeeded(); |
| 111 } | 111 } |
| 112 | 112 |
| 113 void MediaSessionImpl::RenderFrameDeleted(RenderFrameHost* rfh) { |
| 114 if (services_.count(rfh)) |
| 115 OnServiceDestroyed(services_[rfh]); |
| 116 } |
| 117 |
| 113 void MediaSessionImpl::AddObserver(MediaSessionObserver* observer) { | 118 void MediaSessionImpl::AddObserver(MediaSessionObserver* observer) { |
| 114 observers_.AddObserver(observer); | 119 observers_.AddObserver(observer); |
| 115 } | 120 } |
| 116 | 121 |
| 117 void MediaSessionImpl::RemoveObserver(MediaSessionObserver* observer) { | 122 void MediaSessionImpl::RemoveObserver(MediaSessionObserver* observer) { |
| 118 observers_.RemoveObserver(observer); | 123 observers_.RemoveObserver(observer); |
| 119 } | 124 } |
| 120 | 125 |
| 121 void MediaSessionImpl::NotifyMediaSessionMetadataChange( | 126 void MediaSessionImpl::NotifyMediaSessionMetadataChange( |
| 122 const base::Optional<MediaMetadata>& metadata) { | 127 const base::Optional<MediaMetadata>& metadata) { |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 | 572 |
| 568 one_shot_players_.insert(PlayerIdentifier(observer, player_id)); | 573 one_shot_players_.insert(PlayerIdentifier(observer, player_id)); |
| 569 NotifyAboutStateChange(); | 574 NotifyAboutStateChange(); |
| 570 | 575 |
| 571 return true; | 576 return true; |
| 572 } | 577 } |
| 573 | 578 |
| 574 // MediaSessionService-related methods | 579 // MediaSessionService-related methods |
| 575 | 580 |
| 576 void MediaSessionImpl::OnServiceCreated(MediaSessionServiceImpl* service) { | 581 void MediaSessionImpl::OnServiceCreated(MediaSessionServiceImpl* service) { |
| 577 services_[service->GetRenderFrameHost()] = service; | 582 RenderFrameHost* rfh = service->GetRenderFrameHost(); |
| 583 if (!rfh) |
| 584 return; |
| 585 |
| 586 services_[rfh] = service; |
| 578 UpdateRoutedService(); | 587 UpdateRoutedService(); |
| 579 } | 588 } |
| 580 | 589 |
| 581 void MediaSessionImpl::OnServiceDestroyed(MediaSessionServiceImpl* service) { | 590 void MediaSessionImpl::OnServiceDestroyed(MediaSessionServiceImpl* service) { |
| 582 services_.erase(service->GetRenderFrameHost()); | 591 services_.erase(service->GetRenderFrameHost()); |
| 583 if (routed_service_ == service) { | 592 if (routed_service_ == service) { |
| 584 routed_service_ = nullptr; | 593 routed_service_ = nullptr; |
| 585 UpdateRoutedService(); | 594 UpdateRoutedService(); |
| 586 } | 595 } |
| 587 } | 596 } |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 if (!IsServiceActiveForRenderFrameHost(frame)) | 709 if (!IsServiceActiveForRenderFrameHost(frame)) |
| 701 continue; | 710 continue; |
| 702 best_frame = frame; | 711 best_frame = frame; |
| 703 min_depth = depth; | 712 min_depth = depth; |
| 704 } | 713 } |
| 705 | 714 |
| 706 return best_frame ? services_[best_frame] : nullptr; | 715 return best_frame ? services_[best_frame] : nullptr; |
| 707 } | 716 } |
| 708 | 717 |
| 709 } // namespace content | 718 } // namespace content |
| OLD | NEW |