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);
                 }