Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ed415bc authored by Santiago Seifert's avatar Santiago Seifert
Browse files

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
parent 3b8b2bdb
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -279,13 +279,20 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider {
        if (!mRunning) {
            return false;
        }
        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.
        boolean bindDueToManagerScan =
                mIsManagerScanning && !Flags.enablePreventionOfManagerScansWhenNoAppsScan();
        // 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 =