From 8ed415bc8f638a07a49da9e6c11d4ce98fff4c31 Mon Sep 17 00:00:00 2001 From: Santiago Seifert Date: Tue, 10 Dec 2024 11:12:04 +0000 Subject: Bind to system media MR2RouteProviders for any manager scans This changes makes the system bind to any system media route providers, even if no route discovery preference are set. That's because system media routing doesn't require apps to declare support for routing. System media routing is transparent to the app. Note that this change is non-obviously flagged. The field that indicates whether a provider supports system media routing is flagged before it's passed to the MR2ProviderService constructor. Bug: b/362507305 Test: atest CtsMediaBetterTogetherTestCases CtsMediaHostTestCasts Flag: com.android.media.flags.enable_mirroring_in_media_router_2 Change-Id: I329fae281ea421a81f5902ceebd8e55ecde0252a --- .../server/media/MediaRoute2ProviderServiceProxy.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java index 5ee9452c6a53..d8c35358102d 100644 --- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java +++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java @@ -279,13 +279,20 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider { if (!mRunning) { return false; } + // We bind if any manager is scanning (regardless of whether an app is scanning) to give + // the opportunity for providers to publish routing sessions that were established + // directly between the app and the provider (typically via AndroidX MediaRouter). See + // b/176774510#comment20 for more information. boolean bindDueToManagerScan = mIsManagerScanning && !Flags.enablePreventionOfManagerScansWhenNoAppsScan(); - if (!getSessionInfos().isEmpty() || bindDueToManagerScan) { - // We bind if any manager is scanning (regardless of whether an app is scanning) to give - // the opportunity for providers to publish routing sessions that were established - // directly between the app and the provider (typically via AndroidX MediaRouter). See - // b/176774510#comment20 for more information. + // We also bind if this provider supports system media routing, because even if an app + // doesn't have any registered discovery preference, we should still be able to route their + // system media. + boolean bindDueToSystemMediaRoutingSupport = + mIsManagerScanning && mSupportsSystemMediaRouting; + if (!getSessionInfos().isEmpty() + || bindDueToManagerScan + || bindDueToSystemMediaRoutingSupport) { return true; } boolean anAppIsScanning = -- cgit v1.2.3-59-g8ed1b