Loading flags/misc.aconfig +0 −11 Original line number Diff line number Diff line Loading @@ -43,17 +43,6 @@ flag { bug: "315973270" } # OWNER=rambowang TARGET=25Q2 flag { name: "support_carrier_services_for_hsum" namespace: "telephony" description: "Support Carrier Services (APIs) for HSUM." bug:"345522246" metadata { purpose: PURPOSE_BUGFIX } } # OWNER=jackyu TARGET=25Q2 flag { name: "power_down_race_fix" Loading src/java/com/android/internal/telephony/CarrierPrivilegesTracker.java +33 −63 Original line number Diff line number Diff line Loading @@ -394,13 +394,9 @@ public class CarrierPrivilegesTracker extends Handler { IntentFilter certFilter = new IntentFilter(); certFilter.addAction(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED); certFilter.addAction(TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED); if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.registerReceiverAsUser( mIntentReceiver, UserHandle.of(ActivityManager.getCurrentUser()), certFilter, /* broadcastPermission= */ null, /* scheduler= */ null); } else { mContext.registerReceiver(mIntentReceiver, certFilter); } IntentFilter packageFilter = new IntentFilter(); packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED); Loading @@ -411,14 +407,9 @@ public class CarrierPrivilegesTracker extends Handler { // For package-related broadcasts, specify the data scheme for "package" to receive the // package name along with the broadcast packageFilter.addDataScheme("package"); if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.registerReceiverAsUser( mIntentReceiver, UserHandle.of(ActivityManager.getCurrentUser()), packageFilter, /* broadcastPermission= */ null, /* scheduler= */ null); } else { mContext.registerReceiver(mIntentReceiver, packageFilter); } } @Override Loading Loading @@ -592,13 +583,10 @@ public class CarrierPrivilegesTracker extends Handler { PackageInfo pkg; try { return mFeatureFlags.supportCarrierServicesForHsum() ? mPackageManager.getPackageInfoAsUser( return mPackageManager.getPackageInfoAsUser( pkgName, INSTALLED_PACKAGES_QUERY_FLAGS, ActivityManager.getCurrentUser()) : mPackageManager.getPackageInfo( pkgName, INSTALLED_PACKAGES_QUERY_FLAGS); ActivityManager.getCurrentUser()); } catch (NameNotFoundException e) { Rlog.e(TAG, "Error getting installed package: " + pkgName, e); return null; Loading Loading @@ -698,9 +686,7 @@ public class CarrierPrivilegesTracker extends Handler { List<PackageInfo> installedPackages = mPackageManager.getInstalledPackagesAsUser( INSTALLED_PACKAGES_QUERY_FLAGS, mFeatureFlags.supportCarrierServicesForHsum() ? ActivityManager.getCurrentUser() : UserHandle.SYSTEM.getIdentifier()); ActivityManager.getCurrentUser()); for (PackageInfo pkg : installedPackages) { updateCertHashHashesForPackage(pkg); // This may be unnecessary before initialization, but invalidate the cache all the time Loading Loading @@ -904,9 +890,7 @@ public class CarrierPrivilegesTracker extends Handler { private int getPackageUid(@Nullable String pkgName) { int uid = Process.INVALID_UID; try { uid = mFeatureFlags.supportCarrierServicesForHsum() ? mPackageManager.getPackageUidAsUser(pkgName, ActivityManager.getCurrentUser()) : mPackageManager.getPackageUid(pkgName, /* flags= */0); uid = mPackageManager.getPackageUidAsUser(pkgName, ActivityManager.getCurrentUser()); } catch (NameNotFoundException e) { Rlog.e(TAG, "Unable to find uid for package " + pkgName); } Loading Loading @@ -1107,7 +1091,6 @@ public class CarrierPrivilegesTracker extends Handler { // Do the PackageManager queries before we take the lock, as these are the longest-running // pieces of this method and don't depend on the set of carrier apps. List<ResolveInfo> resolveInfos = new ArrayList<>(); if (mFeatureFlags.supportCarrierServicesForHsum()) { resolveInfos.addAll( mPackageManager.queryBroadcastReceiversAsUser( intent, /* flags= */ 0, ActivityManager.getCurrentUser())); Loading @@ -1120,12 +1103,7 @@ public class CarrierPrivilegesTracker extends Handler { resolveInfos.addAll( mPackageManager.queryIntentContentProvidersAsUser( intent, /* flags= */ 0, ActivityManager.getCurrentUser())); } else { resolveInfos.addAll(mPackageManager.queryBroadcastReceivers(intent, 0)); resolveInfos.addAll(mPackageManager.queryIntentActivities(intent, 0)); resolveInfos.addAll(mPackageManager.queryIntentServices(intent, 0)); resolveInfos.addAll(mPackageManager.queryIntentContentProviders(intent, 0)); } // Now actually check which of the resolved packages have carrier privileges. mPrivilegedPackageInfoLock.readLock().lock(); Loading Loading @@ -1160,14 +1138,10 @@ public class CarrierPrivilegesTracker extends Handler { @NonNull private Pair<String, Integer> getCarrierService(@NonNull Set<String> simPrivilegedPackages) { List<ResolveInfo> carrierServiceResolveInfos = mFeatureFlags.supportCarrierServicesForHsum() ? mPackageManager.queryIntentServicesAsUser( mPackageManager.queryIntentServicesAsUser( new Intent(CarrierService.CARRIER_SERVICE_INTERFACE), /* flags= */ 0, ActivityManager.getCurrentUser()) : mPackageManager.queryIntentServices( new Intent(CarrierService.CARRIER_SERVICE_INTERFACE), /* flags= */ 0); ActivityManager.getCurrentUser()); String carrierServicePackageName = null; for (ResolveInfo resolveInfo : carrierServiceResolveInfos) { String packageName = getPackageName(resolveInfo); Loading @@ -1188,13 +1162,9 @@ public class CarrierPrivilegesTracker extends Handler { private @PackageManager.EnabledState int getApplicationEnabledSetting( @NonNull String packageName) { if (mFeatureFlags.supportCarrierServicesForHsum()) { return mContext.createContextAsUser( UserHandle.of(ActivityManager.getCurrentUser()), /* flags= */ 0) .getPackageManager() .getApplicationEnabledSetting(packageName); } else { return mPackageManager.getApplicationEnabledSetting(packageName); } } } src/java/com/android/internal/telephony/CarrierServiceBindHelper.java +2 −6 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.os.Handler; import android.os.HandlerExecutor; import android.os.IBinder; import android.os.Message; import android.os.Process; import android.os.SystemClock; import android.os.UserHandle; import android.service.carrier.CarrierService; Loading Loading @@ -164,10 +163,7 @@ public class CarrierServiceBindHelper { public CarrierServiceBindHelper(Context context) { mContext = context.createContextAsUser( Flags.supportCarrierServicesForHsum() ? UserHandle.of(ActivityManager.getCurrentUser()) : Process.myUserHandle(), 0); context.createContextAsUser(UserHandle.of(ActivityManager.getCurrentUser()), 0); updateBindingsAndSimStates(); Loading @@ -178,7 +174,7 @@ public class CarrierServiceBindHelper { context, mHandler.getLooper(), UserHandle.ALL); try { Context contextAsUser = mContext.createPackageContextAsUser(mContext.getPackageName(), 0, Flags.supportCarrierServicesForHsum() ? UserHandle.CURRENT : UserHandle.SYSTEM); 0, UserHandle.CURRENT); contextAsUser.registerReceiver(mUserUnlockedReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED), null /* broadcastPermission */, mHandler); Loading tests/telephonytests/src/com/android/internal/telephony/CarrierPrivilegesTrackerTest.java +69 −207 Original line number Diff line number Diff line Loading @@ -190,15 +190,9 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { pkg.packageName = pkgCertInfo.pkgName; pkg.signatures = new Signature[] {new Signature(pkgCertInfo.cert)}; if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.getPackageInfoAsUser( eq(pkgCertInfo.pkgName), eq(PM_FLAGS), anyInt())) .thenReturn(pkg); } else { when(mPackageManager.getPackageInfo( eq(pkgCertInfo.pkgName), eq(PM_FLAGS))) .thenReturn(pkg); } when(mPackageManager.getPackageUidAsUser( eq(pkgCertInfo.pkgName), eq(pkgCertInfo.userInfo.id))) .thenReturn(pkgCertInfo.uid); Loading Loading @@ -597,14 +591,9 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo pkg1ResolveInfo = new ResolveInfoBuilder().setActivity(PACKAGE_1).build(); ResolveInfo pkg2ResolveInfo = new ResolveInfoBuilder().setActivity(PACKAGE_2).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryBroadcastReceiversAsUser(any(), anyInt(), anyInt())).thenReturn( List.of(pkg1ResolveInfo, pkg2ResolveInfo)); } else { when(mPackageManager.queryBroadcastReceivers(any(), anyInt())).thenReturn( List.of(pkg1ResolveInfo, pkg2ResolveInfo)); } // SIM is READY sendSimCardStateChangedIntent(PHONE_ID, SIM_STATE_READY); Loading Loading @@ -736,13 +725,8 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { // Update PACKAGE_1 to have no signatures PackageInfo pkg = new PackageInfo(); pkg.packageName = PACKAGE_1; if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.getPackageInfoAsUser(eq(PACKAGE_1), eq(PM_FLAGS), anyInt())) .thenReturn(pkg); } else { when(mPackageManager.getPackageInfo(eq(PACKAGE_1), eq(PM_FLAGS))) .thenReturn(pkg); } sendPackageChangedIntent(Intent.ACTION_PACKAGE_ADDED, PACKAGE_1); mTestableLooper.processAllMessages(); Loading Loading @@ -813,35 +797,19 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { setupInstalledPackages( new PackageCertInfo(PACKAGE_1, CERT_1, USER_1, UID_1), new PackageCertInfo(PACKAGE_2, CERT_2, USER_1, UID_2)); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } else { when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } ResolveInfo resolveInfoPkg1 = new ResolveInfoBuilder().setService(PACKAGE_1).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(resolveInfoPkg1)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of(resolveInfoPkg1)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); // Package_1 is disabled when(mPackageManager.getApplicationEnabledSetting(eq(PACKAGE_1))).thenReturn( PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of()).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of()).when( mPackageManager).queryIntentServices(any(), anyInt()); } sendPackageChangedIntent(Intent.ACTION_PACKAGE_CHANGED, PACKAGE_1); mTestableLooper.processAllMessages(); Loading @@ -852,13 +820,8 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { // Package_1 is re-enabled when(mPackageManager.getApplicationEnabledSetting(eq(PACKAGE_1))).thenReturn( PackageManager.COMPONENT_ENABLED_STATE_ENABLED); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(resolveInfoPkg1)).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of(resolveInfoPkg1)).when( mPackageManager).queryIntentServices(any(), anyInt()); } sendPackageChangedIntent(Intent.ACTION_PACKAGE_CHANGED, PACKAGE_1); mTestableLooper.processAllMessages(); Loading Loading @@ -938,45 +901,25 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo privilegeBroadcast = new ResolveInfoBuilder().setActivity(PACKAGE_1).build(); ResolveInfo noPrivilegeBroadcast = new ResolveInfoBuilder().setActivity(PACKAGE_2).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryBroadcastReceiversAsUser(any(), anyInt(), anyInt())).thenReturn( List.of(privilegeBroadcast, noPrivilegeBroadcast)); } else { when(mPackageManager.queryBroadcastReceivers(any(), anyInt())).thenReturn( List.of(privilegeBroadcast, noPrivilegeBroadcast)); } ResolveInfo privilegeActivity = new ResolveInfoBuilder().setActivity(PACKAGE_3).build(); ResolveInfo noPrivilegeActivity = new ResolveInfoBuilder().setActivity(PACKAGE_4).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryIntentActivitiesAsUser(any(), anyInt(), anyInt())).thenReturn( List.of(privilegeActivity, noPrivilegeActivity)); } else { when(mPackageManager.queryIntentActivities(any(), anyInt())).thenReturn( List.of(privilegeActivity, noPrivilegeActivity)); } ResolveInfo privilegeService = new ResolveInfoBuilder().setService(PACKAGE_5).build(); ResolveInfo noPrivilegeService = new ResolveInfoBuilder().setService(PACKAGE_6).build(); // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServices(any(), anyInt()); } ResolveInfo privilegeProvider = new ResolveInfoBuilder().setProvider(PACKAGE_7).build(); ResolveInfo noPrivilegeProvider = new ResolveInfoBuilder().setProvider(PACKAGE_8).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryIntentContentProvidersAsUser(any(), anyInt(), anyInt())) .thenReturn(List.of(privilegeProvider, noPrivilegeProvider)); } else { when(mPackageManager.queryIntentContentProviders(any(), anyInt())).thenReturn( List.of(privilegeProvider, noPrivilegeProvider)); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); Intent intent = new Intent(CarrierService.CARRIER_SERVICE_INTERFACE); Loading Loading @@ -1005,19 +948,11 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo privilegeService = new ResolveInfoBuilder().setService(PACKAGE_1).build(); ResolveInfo noPrivilegeService = new ResolveInfoBuilder().setService(PACKAGE_2).build(); // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUid(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } // Get CS package name for the first time mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); Loading @@ -1026,11 +961,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { mTestableLooper.processAllMessages(); // Package manager should be queried from if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager).queryIntentServices(any(), anyInt()); } assertEquals(PACKAGE_1, carrierServicePackageName); assertEquals(UID_1, carrierServiceUid); Loading @@ -1041,11 +972,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { mTestableLooper.processAllMessages(); // It should return the same result, but didn't query package manager if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager, never()).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager, never()).queryIntentServices(any(), anyInt()); } assertEquals(PACKAGE_1, carrierServicePackageName); assertEquals(UID_1, carrierServiceUid); } Loading @@ -1065,21 +992,12 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo service1 = new ResolveInfoBuilder().setService(PACKAGE_1).build(); ResolveInfo service2 = new ResolveInfoBuilder().setService(PACKAGE_2).build(); // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUid(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } // Verify that neither carrier service (no privileges, or carrier-config based privileges) // are accepted. Loading @@ -1088,11 +1006,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { int carrierServiceUid = mCarrierPrivilegesTracker.getCarrierServicePackageUid(); mTestableLooper.processAllMessages(); if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager).queryIntentServices(any(), anyInt()); } assertNull(carrierServicePackageName); assertEquals(Process.INVALID_UID, carrierServiceUid); } Loading @@ -1108,19 +1022,11 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { new PackageCertInfo(PACKAGE_3, CERT_1, USER_1, UID_1)); // No CarrierService declared at all // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of()).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } else { doReturn(List.of()).when( mPackageManager).queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUid(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); String carrierServicePackageName = mCarrierPrivilegesTracker.getCarrierServicePackageName(); Loading @@ -1129,11 +1035,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { assertNull(carrierServicePackageName); assertEquals(Process.INVALID_UID, carrierServiceUid); if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager).queryIntentServices(any(), anyInt()); } } @Test Loading @@ -1142,17 +1044,10 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { setupInstalledPackages(new PackageCertInfo(PACKAGE_1, CERT_1, USER_1, UID_1)); ResolveInfo carrierService = new ResolveInfoBuilder().setService(PACKAGE_1).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } // Set override, and verify the carrier service package was not set due to a lack of a // matching cert. Loading @@ -1175,19 +1070,11 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo service1 = new ResolveInfoBuilder().setService(PACKAGE_1).build(); ResolveInfo service2 = new ResolveInfoBuilder().setService(PACKAGE_2).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } else { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); Loading Loading @@ -1220,17 +1107,10 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { setupInstalledPackages(new PackageCertInfo(PACKAGE_1, CERT_1, USER_1, UID_1)); ResolveInfo carrierService = new ResolveInfoBuilder().setService(PACKAGE_1).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } // Set override, and expect that an invalid package name would not be selected as the // carrier config service. Loading @@ -1248,40 +1128,22 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { } private void sendSimCardStateChangedIntent(int phoneId, int simState) { if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.sendBroadcastAsUser( new Intent(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId), UserHandle.ALL); } else { mContext.sendBroadcast( new Intent(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId)); } } private void sendSimApplicationStateChangedIntent(int phoneId, int simState) { if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.sendBroadcastAsUser( new Intent(TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId), UserHandle.ALL); } else { mContext.sendBroadcast( new Intent(TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId)); } } private void sendPackageChangedIntent(String action, String pkgName) { if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.sendBroadcastAsUser( new Intent(action, new Uri.Builder().path(pkgName).build()), UserHandle.ALL); } else { mContext.sendBroadcast(new Intent(action, new Uri.Builder().path(pkgName).build())); } } /** Returns the SHA-1 hash (as a hex String) for the given hex String. */ Loading Loading
flags/misc.aconfig +0 −11 Original line number Diff line number Diff line Loading @@ -43,17 +43,6 @@ flag { bug: "315973270" } # OWNER=rambowang TARGET=25Q2 flag { name: "support_carrier_services_for_hsum" namespace: "telephony" description: "Support Carrier Services (APIs) for HSUM." bug:"345522246" metadata { purpose: PURPOSE_BUGFIX } } # OWNER=jackyu TARGET=25Q2 flag { name: "power_down_race_fix" Loading
src/java/com/android/internal/telephony/CarrierPrivilegesTracker.java +33 −63 Original line number Diff line number Diff line Loading @@ -394,13 +394,9 @@ public class CarrierPrivilegesTracker extends Handler { IntentFilter certFilter = new IntentFilter(); certFilter.addAction(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED); certFilter.addAction(TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED); if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.registerReceiverAsUser( mIntentReceiver, UserHandle.of(ActivityManager.getCurrentUser()), certFilter, /* broadcastPermission= */ null, /* scheduler= */ null); } else { mContext.registerReceiver(mIntentReceiver, certFilter); } IntentFilter packageFilter = new IntentFilter(); packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED); Loading @@ -411,14 +407,9 @@ public class CarrierPrivilegesTracker extends Handler { // For package-related broadcasts, specify the data scheme for "package" to receive the // package name along with the broadcast packageFilter.addDataScheme("package"); if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.registerReceiverAsUser( mIntentReceiver, UserHandle.of(ActivityManager.getCurrentUser()), packageFilter, /* broadcastPermission= */ null, /* scheduler= */ null); } else { mContext.registerReceiver(mIntentReceiver, packageFilter); } } @Override Loading Loading @@ -592,13 +583,10 @@ public class CarrierPrivilegesTracker extends Handler { PackageInfo pkg; try { return mFeatureFlags.supportCarrierServicesForHsum() ? mPackageManager.getPackageInfoAsUser( return mPackageManager.getPackageInfoAsUser( pkgName, INSTALLED_PACKAGES_QUERY_FLAGS, ActivityManager.getCurrentUser()) : mPackageManager.getPackageInfo( pkgName, INSTALLED_PACKAGES_QUERY_FLAGS); ActivityManager.getCurrentUser()); } catch (NameNotFoundException e) { Rlog.e(TAG, "Error getting installed package: " + pkgName, e); return null; Loading Loading @@ -698,9 +686,7 @@ public class CarrierPrivilegesTracker extends Handler { List<PackageInfo> installedPackages = mPackageManager.getInstalledPackagesAsUser( INSTALLED_PACKAGES_QUERY_FLAGS, mFeatureFlags.supportCarrierServicesForHsum() ? ActivityManager.getCurrentUser() : UserHandle.SYSTEM.getIdentifier()); ActivityManager.getCurrentUser()); for (PackageInfo pkg : installedPackages) { updateCertHashHashesForPackage(pkg); // This may be unnecessary before initialization, but invalidate the cache all the time Loading Loading @@ -904,9 +890,7 @@ public class CarrierPrivilegesTracker extends Handler { private int getPackageUid(@Nullable String pkgName) { int uid = Process.INVALID_UID; try { uid = mFeatureFlags.supportCarrierServicesForHsum() ? mPackageManager.getPackageUidAsUser(pkgName, ActivityManager.getCurrentUser()) : mPackageManager.getPackageUid(pkgName, /* flags= */0); uid = mPackageManager.getPackageUidAsUser(pkgName, ActivityManager.getCurrentUser()); } catch (NameNotFoundException e) { Rlog.e(TAG, "Unable to find uid for package " + pkgName); } Loading Loading @@ -1107,7 +1091,6 @@ public class CarrierPrivilegesTracker extends Handler { // Do the PackageManager queries before we take the lock, as these are the longest-running // pieces of this method and don't depend on the set of carrier apps. List<ResolveInfo> resolveInfos = new ArrayList<>(); if (mFeatureFlags.supportCarrierServicesForHsum()) { resolveInfos.addAll( mPackageManager.queryBroadcastReceiversAsUser( intent, /* flags= */ 0, ActivityManager.getCurrentUser())); Loading @@ -1120,12 +1103,7 @@ public class CarrierPrivilegesTracker extends Handler { resolveInfos.addAll( mPackageManager.queryIntentContentProvidersAsUser( intent, /* flags= */ 0, ActivityManager.getCurrentUser())); } else { resolveInfos.addAll(mPackageManager.queryBroadcastReceivers(intent, 0)); resolveInfos.addAll(mPackageManager.queryIntentActivities(intent, 0)); resolveInfos.addAll(mPackageManager.queryIntentServices(intent, 0)); resolveInfos.addAll(mPackageManager.queryIntentContentProviders(intent, 0)); } // Now actually check which of the resolved packages have carrier privileges. mPrivilegedPackageInfoLock.readLock().lock(); Loading Loading @@ -1160,14 +1138,10 @@ public class CarrierPrivilegesTracker extends Handler { @NonNull private Pair<String, Integer> getCarrierService(@NonNull Set<String> simPrivilegedPackages) { List<ResolveInfo> carrierServiceResolveInfos = mFeatureFlags.supportCarrierServicesForHsum() ? mPackageManager.queryIntentServicesAsUser( mPackageManager.queryIntentServicesAsUser( new Intent(CarrierService.CARRIER_SERVICE_INTERFACE), /* flags= */ 0, ActivityManager.getCurrentUser()) : mPackageManager.queryIntentServices( new Intent(CarrierService.CARRIER_SERVICE_INTERFACE), /* flags= */ 0); ActivityManager.getCurrentUser()); String carrierServicePackageName = null; for (ResolveInfo resolveInfo : carrierServiceResolveInfos) { String packageName = getPackageName(resolveInfo); Loading @@ -1188,13 +1162,9 @@ public class CarrierPrivilegesTracker extends Handler { private @PackageManager.EnabledState int getApplicationEnabledSetting( @NonNull String packageName) { if (mFeatureFlags.supportCarrierServicesForHsum()) { return mContext.createContextAsUser( UserHandle.of(ActivityManager.getCurrentUser()), /* flags= */ 0) .getPackageManager() .getApplicationEnabledSetting(packageName); } else { return mPackageManager.getApplicationEnabledSetting(packageName); } } }
src/java/com/android/internal/telephony/CarrierServiceBindHelper.java +2 −6 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.os.Handler; import android.os.HandlerExecutor; import android.os.IBinder; import android.os.Message; import android.os.Process; import android.os.SystemClock; import android.os.UserHandle; import android.service.carrier.CarrierService; Loading Loading @@ -164,10 +163,7 @@ public class CarrierServiceBindHelper { public CarrierServiceBindHelper(Context context) { mContext = context.createContextAsUser( Flags.supportCarrierServicesForHsum() ? UserHandle.of(ActivityManager.getCurrentUser()) : Process.myUserHandle(), 0); context.createContextAsUser(UserHandle.of(ActivityManager.getCurrentUser()), 0); updateBindingsAndSimStates(); Loading @@ -178,7 +174,7 @@ public class CarrierServiceBindHelper { context, mHandler.getLooper(), UserHandle.ALL); try { Context contextAsUser = mContext.createPackageContextAsUser(mContext.getPackageName(), 0, Flags.supportCarrierServicesForHsum() ? UserHandle.CURRENT : UserHandle.SYSTEM); 0, UserHandle.CURRENT); contextAsUser.registerReceiver(mUserUnlockedReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED), null /* broadcastPermission */, mHandler); Loading
tests/telephonytests/src/com/android/internal/telephony/CarrierPrivilegesTrackerTest.java +69 −207 Original line number Diff line number Diff line Loading @@ -190,15 +190,9 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { pkg.packageName = pkgCertInfo.pkgName; pkg.signatures = new Signature[] {new Signature(pkgCertInfo.cert)}; if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.getPackageInfoAsUser( eq(pkgCertInfo.pkgName), eq(PM_FLAGS), anyInt())) .thenReturn(pkg); } else { when(mPackageManager.getPackageInfo( eq(pkgCertInfo.pkgName), eq(PM_FLAGS))) .thenReturn(pkg); } when(mPackageManager.getPackageUidAsUser( eq(pkgCertInfo.pkgName), eq(pkgCertInfo.userInfo.id))) .thenReturn(pkgCertInfo.uid); Loading Loading @@ -597,14 +591,9 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo pkg1ResolveInfo = new ResolveInfoBuilder().setActivity(PACKAGE_1).build(); ResolveInfo pkg2ResolveInfo = new ResolveInfoBuilder().setActivity(PACKAGE_2).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryBroadcastReceiversAsUser(any(), anyInt(), anyInt())).thenReturn( List.of(pkg1ResolveInfo, pkg2ResolveInfo)); } else { when(mPackageManager.queryBroadcastReceivers(any(), anyInt())).thenReturn( List.of(pkg1ResolveInfo, pkg2ResolveInfo)); } // SIM is READY sendSimCardStateChangedIntent(PHONE_ID, SIM_STATE_READY); Loading Loading @@ -736,13 +725,8 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { // Update PACKAGE_1 to have no signatures PackageInfo pkg = new PackageInfo(); pkg.packageName = PACKAGE_1; if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.getPackageInfoAsUser(eq(PACKAGE_1), eq(PM_FLAGS), anyInt())) .thenReturn(pkg); } else { when(mPackageManager.getPackageInfo(eq(PACKAGE_1), eq(PM_FLAGS))) .thenReturn(pkg); } sendPackageChangedIntent(Intent.ACTION_PACKAGE_ADDED, PACKAGE_1); mTestableLooper.processAllMessages(); Loading Loading @@ -813,35 +797,19 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { setupInstalledPackages( new PackageCertInfo(PACKAGE_1, CERT_1, USER_1, UID_1), new PackageCertInfo(PACKAGE_2, CERT_2, USER_1, UID_2)); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } else { when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } ResolveInfo resolveInfoPkg1 = new ResolveInfoBuilder().setService(PACKAGE_1).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(resolveInfoPkg1)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of(resolveInfoPkg1)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); // Package_1 is disabled when(mPackageManager.getApplicationEnabledSetting(eq(PACKAGE_1))).thenReturn( PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of()).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of()).when( mPackageManager).queryIntentServices(any(), anyInt()); } sendPackageChangedIntent(Intent.ACTION_PACKAGE_CHANGED, PACKAGE_1); mTestableLooper.processAllMessages(); Loading @@ -852,13 +820,8 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { // Package_1 is re-enabled when(mPackageManager.getApplicationEnabledSetting(eq(PACKAGE_1))).thenReturn( PackageManager.COMPONENT_ENABLED_STATE_ENABLED); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(resolveInfoPkg1)).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of(resolveInfoPkg1)).when( mPackageManager).queryIntentServices(any(), anyInt()); } sendPackageChangedIntent(Intent.ACTION_PACKAGE_CHANGED, PACKAGE_1); mTestableLooper.processAllMessages(); Loading Loading @@ -938,45 +901,25 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo privilegeBroadcast = new ResolveInfoBuilder().setActivity(PACKAGE_1).build(); ResolveInfo noPrivilegeBroadcast = new ResolveInfoBuilder().setActivity(PACKAGE_2).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryBroadcastReceiversAsUser(any(), anyInt(), anyInt())).thenReturn( List.of(privilegeBroadcast, noPrivilegeBroadcast)); } else { when(mPackageManager.queryBroadcastReceivers(any(), anyInt())).thenReturn( List.of(privilegeBroadcast, noPrivilegeBroadcast)); } ResolveInfo privilegeActivity = new ResolveInfoBuilder().setActivity(PACKAGE_3).build(); ResolveInfo noPrivilegeActivity = new ResolveInfoBuilder().setActivity(PACKAGE_4).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryIntentActivitiesAsUser(any(), anyInt(), anyInt())).thenReturn( List.of(privilegeActivity, noPrivilegeActivity)); } else { when(mPackageManager.queryIntentActivities(any(), anyInt())).thenReturn( List.of(privilegeActivity, noPrivilegeActivity)); } ResolveInfo privilegeService = new ResolveInfoBuilder().setService(PACKAGE_5).build(); ResolveInfo noPrivilegeService = new ResolveInfoBuilder().setService(PACKAGE_6).build(); // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServices(any(), anyInt()); } ResolveInfo privilegeProvider = new ResolveInfoBuilder().setProvider(PACKAGE_7).build(); ResolveInfo noPrivilegeProvider = new ResolveInfoBuilder().setProvider(PACKAGE_8).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { when(mPackageManager.queryIntentContentProvidersAsUser(any(), anyInt(), anyInt())) .thenReturn(List.of(privilegeProvider, noPrivilegeProvider)); } else { when(mPackageManager.queryIntentContentProviders(any(), anyInt())).thenReturn( List.of(privilegeProvider, noPrivilegeProvider)); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); Intent intent = new Intent(CarrierService.CARRIER_SERVICE_INTERFACE); Loading Loading @@ -1005,19 +948,11 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo privilegeService = new ResolveInfoBuilder().setService(PACKAGE_1).build(); ResolveInfo noPrivilegeService = new ResolveInfoBuilder().setService(PACKAGE_2).build(); // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(privilegeService, noPrivilegeService)).when( mPackageManager).queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUid(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } // Get CS package name for the first time mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); Loading @@ -1026,11 +961,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { mTestableLooper.processAllMessages(); // Package manager should be queried from if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager).queryIntentServices(any(), anyInt()); } assertEquals(PACKAGE_1, carrierServicePackageName); assertEquals(UID_1, carrierServiceUid); Loading @@ -1041,11 +972,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { mTestableLooper.processAllMessages(); // It should return the same result, but didn't query package manager if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager, never()).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager, never()).queryIntentServices(any(), anyInt()); } assertEquals(PACKAGE_1, carrierServicePackageName); assertEquals(UID_1, carrierServiceUid); } Loading @@ -1065,21 +992,12 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo service1 = new ResolveInfoBuilder().setService(PACKAGE_1).build(); ResolveInfo service2 = new ResolveInfoBuilder().setService(PACKAGE_2).build(); // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUid(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } // Verify that neither carrier service (no privileges, or carrier-config based privileges) // are accepted. Loading @@ -1088,11 +1006,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { int carrierServiceUid = mCarrierPrivilegesTracker.getCarrierServicePackageUid(); mTestableLooper.processAllMessages(); if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager).queryIntentServices(any(), anyInt()); } assertNull(carrierServicePackageName); assertEquals(Process.INVALID_UID, carrierServiceUid); } Loading @@ -1108,19 +1022,11 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { new PackageCertInfo(PACKAGE_3, CERT_1, USER_1, UID_1)); // No CarrierService declared at all // Use doReturn instead of when/thenReturn which has NPE with unknown reason if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of()).when( mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } else { doReturn(List.of()).when( mPackageManager).queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); when(mPackageManager.getPackageUid(eq(PACKAGE_3), anyInt())).thenReturn(UID_1); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); String carrierServicePackageName = mCarrierPrivilegesTracker.getCarrierServicePackageName(); Loading @@ -1129,11 +1035,7 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { assertNull(carrierServicePackageName); assertEquals(Process.INVALID_UID, carrierServiceUid); if (mFeatureFlags.supportCarrierServicesForHsum()) { verify(mPackageManager).queryIntentServicesAsUser(any(), anyInt(), anyInt()); } else { verify(mPackageManager).queryIntentServices(any(), anyInt()); } } @Test Loading @@ -1142,17 +1044,10 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { setupInstalledPackages(new PackageCertInfo(PACKAGE_1, CERT_1, USER_1, UID_1)); ResolveInfo carrierService = new ResolveInfoBuilder().setService(PACKAGE_1).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } // Set override, and verify the carrier service package was not set due to a lack of a // matching cert. Loading @@ -1175,19 +1070,11 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { ResolveInfo service1 = new ResolveInfoBuilder().setService(PACKAGE_1).build(); ResolveInfo service2 = new ResolveInfoBuilder().setService(PACKAGE_2).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } else { doReturn(List.of(service1, service2)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); when(mPackageManager.getPackageUid(eq(PACKAGE_2), anyInt())).thenReturn(UID_2); } mCarrierPrivilegesTracker = createCarrierPrivilegesTracker(); Loading Loading @@ -1220,17 +1107,10 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { setupInstalledPackages(new PackageCertInfo(PACKAGE_1, CERT_1, USER_1, UID_1)); ResolveInfo carrierService = new ResolveInfoBuilder().setService(PACKAGE_1).build(); if (mFeatureFlags.supportCarrierServicesForHsum()) { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServicesAsUser(any(), anyInt(), anyInt()); when(mPackageManager.getPackageUidAsUser(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } else { doReturn(List.of(carrierService)) .when(mPackageManager) .queryIntentServices(any(), anyInt()); when(mPackageManager.getPackageUid(eq(PACKAGE_1), anyInt())).thenReturn(UID_1); } // Set override, and expect that an invalid package name would not be selected as the // carrier config service. Loading @@ -1248,40 +1128,22 @@ public class CarrierPrivilegesTrackerTest extends TelephonyTest { } private void sendSimCardStateChangedIntent(int phoneId, int simState) { if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.sendBroadcastAsUser( new Intent(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId), UserHandle.ALL); } else { mContext.sendBroadcast( new Intent(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId)); } } private void sendSimApplicationStateChangedIntent(int phoneId, int simState) { if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.sendBroadcastAsUser( new Intent(TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId), UserHandle.ALL); } else { mContext.sendBroadcast( new Intent(TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED) .putExtra(EXTRA_SIM_STATE, simState) .putExtra(PhoneConstants.PHONE_KEY, phoneId)); } } private void sendPackageChangedIntent(String action, String pkgName) { if (mFeatureFlags.supportCarrierServicesForHsum()) { mContext.sendBroadcastAsUser( new Intent(action, new Uri.Builder().path(pkgName).build()), UserHandle.ALL); } else { mContext.sendBroadcast(new Intent(action, new Uri.Builder().path(pkgName).build())); } } /** Returns the SHA-1 hash (as a hex String) for the given hex String. */ Loading