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

Side by Side Diff: content/browser/media/session/media_session_impl.cc

Issue 2585243002: [MediaSession] A fix for MediaSessionService routing (Closed)
Patch Set: fixed compile warning Created 4 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | content/browser/media/session/media_session_impl_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 one_shot_players_.insert(PlayerIdentifier(observer, player_id)); 568 one_shot_players_.insert(PlayerIdentifier(observer, player_id));
569 NotifyAboutStateChange(); 569 NotifyAboutStateChange();
570 570
571 return true; 571 return true;
572 } 572 }
573 573
574 // MediaSessionService-related methods 574 // MediaSessionService-related methods
575 575
576 void MediaSessionImpl::OnServiceCreated(MediaSessionServiceImpl* service) { 576 void MediaSessionImpl::OnServiceCreated(MediaSessionServiceImpl* service) {
577 services_[service->GetRenderFrameHost()] = service; 577 services_[service->GetRenderFrameHost()] = service;
578 UpdateRoutedService();
578 } 579 }
579 580
580 void MediaSessionImpl::OnServiceDestroyed(MediaSessionServiceImpl* service) { 581 void MediaSessionImpl::OnServiceDestroyed(MediaSessionServiceImpl* service) {
581 services_.erase(service->GetRenderFrameHost()); 582 services_.erase(service->GetRenderFrameHost());
582 if (routed_service_ == service) { 583 if (routed_service_ == service) {
583 routed_service_ = nullptr; 584 routed_service_ = nullptr;
584 UpdateRoutedService(); 585 UpdateRoutedService();
585 } 586 }
586 } 587 }
587 588
(...skipping 22 matching lines...) Expand all
610 611
611 void MediaSessionImpl::DidReceiveAction( 612 void MediaSessionImpl::DidReceiveAction(
612 blink::mojom::MediaSessionAction action) { 613 blink::mojom::MediaSessionAction action) {
613 if (!routed_service_) 614 if (!routed_service_)
614 return; 615 return;
615 616
616 routed_service_->GetClient()->DidReceiveAction(action); 617 routed_service_->GetClient()->DidReceiveAction(action);
617 } 618 }
618 619
619 bool MediaSessionImpl::IsServiceActiveForRenderFrameHost(RenderFrameHost* rfh) { 620 bool MediaSessionImpl::IsServiceActiveForRenderFrameHost(RenderFrameHost* rfh) {
620 if (!services_.count(rfh)) 621 return services_.find(rfh) != services_.end();
621 return false;
622
623 return services_[rfh]->metadata().has_value() ||
624 !services_[rfh]->actions().empty();
625 } 622 }
626 623
627 void MediaSessionImpl::UpdateRoutedService() { 624 void MediaSessionImpl::UpdateRoutedService() {
628 MediaSessionServiceImpl* new_service = ComputeServiceForRouting(); 625 MediaSessionServiceImpl* new_service = ComputeServiceForRouting();
629 if (new_service == routed_service_) 626 if (new_service == routed_service_)
630 return; 627 return;
631 628
632 routed_service_ = new_service; 629 routed_service_ = new_service;
633 if (routed_service_) { 630 if (routed_service_) {
634 NotifyMediaSessionMetadataChange(routed_service_->metadata()); 631 NotifyMediaSessionMetadataChange(routed_service_->metadata());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 if (!IsServiceActiveForRenderFrameHost(frame)) 672 if (!IsServiceActiveForRenderFrameHost(frame))
676 continue; 673 continue;
677 best_frame = frame; 674 best_frame = frame;
678 min_depth = depth; 675 min_depth = depth;
679 } 676 }
680 677
681 return best_frame ? services_[best_frame] : nullptr; 678 return best_frame ? services_[best_frame] : nullptr;
682 } 679 }
683 680
684 } // namespace content 681 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/media/session/media_session_impl_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698