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
This commit is contained in:
Chalard Jean 2025-07-03 14:17:02 +09:00 • committed by Junyu Lai
commit 21575cf8dd
2 changed files with 13 additions and 5 deletions

View file

@ -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;

View file

@ -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())