From 21575cf8dd3ebcc46a765154bb278baa26f9fbbd Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Thu, 3 Jul 2025 14:17:02 +0900 Subject: [PATCH] Search for the satellite opt-in flag in disabled services As it might be necessary to discover the metadata in services for technical reasons, a good way to file that data is to make a phony, disabled service for the purposes of containing this metadata. Unfortunately, the disabled components are not returned by PackageManager unless you pass MATCH_DISABLED_COMPONENTS as a flag, and we didn't know that at the time. Do match disabled components so a disabled service can be used as a holder for this. Bug: 427846736 Test: manual Test: atest ConnectivityCoverageTests:android.net.connectivity.com.android.server.connectivity.SatelliteAccessControllerTest Flag: EXEMPT bugfix Change-Id: Id32c32ab8cfb93a4270795a5bdf75edb4cb7a1f6 --- .../connectivity/SatelliteAccessController.java | 5 +++-- .../connectivity/SatelliteAccessControllerTest.kt | 13 ++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/service/src/com/android/server/connectivity/SatelliteAccessController.java b/service/src/com/android/server/connectivity/SatelliteAccessController.java index fa08cff8d0..f5a85b34f7 100644 --- a/service/src/com/android/server/connectivity/SatelliteAccessController.java +++ b/service/src/com/android/server/connectivity/SatelliteAccessController.java @@ -448,8 +448,9 @@ public class SatelliteAccessController { // Then check meta-data under service tags. final PackageInfo packageInfo = pmForUser.getPackageInfo( - packageName, PackageManager.GET_SERVICES | PackageManager.GET_META_DATA); - if (packageInfo.services != null) { + packageName, PackageManager.GET_SERVICES | PackageManager.GET_META_DATA + | PackageManager.MATCH_DISABLED_COMPONENTS); + if (packageInfo != null && packageInfo.services != null) { for (ServiceInfo serviceInfo : packageInfo.services) { if (isSatelliteDataOptimizedMetaData(serviceInfo.metaData, packageName)) { return true; diff --git a/tests/unit/java/com/android/server/connectivity/SatelliteAccessControllerTest.kt b/tests/unit/java/com/android/server/connectivity/SatelliteAccessControllerTest.kt index e683417231..7a87437891 100644 --- a/tests/unit/java/com/android/server/connectivity/SatelliteAccessControllerTest.kt +++ b/tests/unit/java/com/android/server/connectivity/SatelliteAccessControllerTest.kt @@ -396,7 +396,10 @@ class SatelliteAccessControllerTest { .getApplicationInfo(TEST_PACKAGE1, PackageManager.GET_META_DATA) doReturn(PackageInfo()).`when`(pm).getPackageInfo( eq(TEST_PACKAGE1), - eq(PackageManager.GET_SERVICES or PackageManager.GET_META_DATA) + eq( + PackageManager.GET_SERVICES or PackageManager.GET_META_DATA or + PackageManager.MATCH_DISABLED_COMPONENTS + ) ) onPackageAdded(TEST_PACKAGE1, TEST_UID1) verify(callback, never()).accept(any(), any()) @@ -428,7 +431,8 @@ class SatelliteAccessControllerTest { packageInfo.services = arrayOf(serviceInfo) doReturn(packageInfo).`when`(pm).getPackageInfo( TEST_PACKAGE1, - PackageManager.GET_SERVICES or PackageManager.GET_META_DATA + PackageManager.GET_SERVICES or PackageManager.GET_META_DATA or + PackageManager.MATCH_DISABLED_COMPONENTS ) onPackageAdded(TEST_PACKAGE1, TEST_UID1) @@ -445,7 +449,10 @@ class SatelliteAccessControllerTest { packageInfo.services = arrayOf(serviceInfo) doReturn(packageInfo).`when`(pm).getPackageInfo( eq(TEST_PACKAGE1), - eq(PackageManager.GET_SERVICES or PackageManager.GET_META_DATA) + eq( + PackageManager.GET_SERVICES or PackageManager.GET_META_DATA or + PackageManager.MATCH_DISABLED_COMPONENTS + ) ) onPackageAdded(TEST_PACKAGE1, TEST_UID1) verify(callback, never()).accept(any(), any())