Make manager scans populate active scanning packages
Without populating actively scanning packages in the composite discovery
preference, self-scan route providers will not bind to system_server
when proxy routers start scanning on behalf of the self-scan provider's
router.
This change also fixes logic error in MediaRoute2ProviderServiceProxy's
binding logic.
Test: atest ProxyMediaRouter2HostSideTest MediaRouter2HostSideTest
Bug: 319604673
Change-Id: Ia079eae911f9700ef2a838d97dc7c0a24bbf6946
Flag: com.android.media.flags.enable_prevention_of_manager_scans_when_no_apps_scan
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
index db83d4b..a7fd750 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
@@ -233,7 +233,7 @@
return false;
}
boolean bindDueToManagerScan =
- mIsManagerScanning && Flags.enablePreventionOfManagerScansWhenNoAppsScan();
+ 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
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index e50189b..869b89a 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -3411,7 +3411,14 @@
for (RouterRecord activeRouterRecord : activeRouterRecords) {
RouteDiscoveryPreference preference = activeRouterRecord.mDiscoveryPreference;
preferredFeatures.addAll(preference.getPreferredFeatures());
- if (activeRouterRecord.isActivelyScanning()) {
+
+ boolean isRouterRecordActivelyScanning =
+ Flags.enablePreventionOfManagerScansWhenNoAppsScan()
+ ? (activeRouterRecord.isActivelyScanning() || shouldForceActiveScan)
+ && !preference.getPreferredFeatures().isEmpty()
+ : activeRouterRecord.isActivelyScanning();
+
+ if (isRouterRecordActivelyScanning) {
activeScan = true;
activelyScanningPackages.add(activeRouterRecord.mPackageName);
}