Loading src/java/com/android/internal/telephony/CarrierAppUtils.java +9 −5 Original line number Diff line number Diff line Loading @@ -79,8 +79,10 @@ public final class CarrierAppUtils { if (candidates == null || candidates.isEmpty()) { return; } List<String> enabledCarrierPackages = new ArrayList<>(); try { boolean anyAppsEnabled = false; for (ApplicationInfo ai : candidates) { String packageName = ai.packageName; boolean hasPrivileges = Loading @@ -92,7 +94,7 @@ public final class CarrierAppUtils { PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); anyAppsEnabled = true; enabledCarrierPackages.add(ai.packageName); packageManager.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, userId, callingPackage); Loading @@ -100,7 +102,7 @@ public final class CarrierAppUtils { PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { // If we're already enabled, don't bother re-enabling, but treat the app as // enabled so that we re-grant default permissions in case they were lost. anyAppsEnabled = true; enabledCarrierPackages.add(ai.packageName); } } else if (!hasPrivileges && ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { Loading @@ -112,10 +114,12 @@ public final class CarrierAppUtils { } } if (anyAppsEnabled) { if (!enabledCarrierPackages.isEmpty()) { // Since we enabled at least one app, ensure we grant default permissions to those // apps. packageManager.grantDefaultPermissions(userId); String[] packageNames = new String[enabledCarrierPackages.size()]; enabledCarrierPackages.toArray(packageNames); packageManager.grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId); } } catch (RemoteException e) { Slog.w(TAG, "Could not reach PackageManager", e); Loading src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +0 −28 Original line number Diff line number Diff line Loading @@ -27,16 +27,13 @@ import android.content.ContentValues; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.IPackagesProvider; import android.os.AsyncResult; import android.os.Handler; import android.os.IRemoteCallback; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; import android.os.UserHandle; import android.preference.PreferenceManager; import android.provider.Settings; Loading Loading @@ -126,31 +123,6 @@ public class SubscriptionInfoUpdater extends Handler { } private void initializeCarrierApps() { // Let the PackageManager query carrier apps as they get certain permissions granted by // default. try { mPackageManager.setCarrierAppPackagesProvider( new IPackagesProvider.Stub() { @Override public String[] getPackages(int userId) { List<ApplicationInfo> defaultApps = CarrierAppUtils.getDefaultCarrierApps(mPackageManager, TelephonyManager.getDefault(), userId); if (defaultApps == null) { return null; } int count = defaultApps.size(); String[] packages = new String[count]; for (int i = 0; i < count; i++) { packages[i] = defaultApps.get(i).packageName; } return packages; } }); } catch (RemoteException e) { logd("Couldn't contact PackageManager: " + e.getMessage()); } // Initialize carrier apps: // -Now (on system startup) // -Whenever new carrier privilege rules might change (new SIM is loaded) Loading tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java +33 −12 Original line number Diff line number Diff line Loading @@ -60,7 +60,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps(Mockito.any(String[].class), Mockito.anyInt()); Mockito.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -74,7 +76,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); Mockito.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -94,7 +98,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has privileges, but was disabled - should do nothing. */ Loading @@ -112,7 +118,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has privileges, and is already enabled - should only grant permissions. */ Loading @@ -130,7 +138,8 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID); Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps( new String[] {appInfo.packageName}, USER_ID); } /** Configured app has privileges, and is in the default state - should enable. */ Loading @@ -148,7 +157,8 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager).setApplicationEnabledSetting( CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, USER_ID, CALLING_PACKAGE); Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID); Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps( new String[] {appInfo.packageName}, USER_ID); } /** Configured app has privileges, and is disabled until used - should enable. */ Loading @@ -167,7 +177,8 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager).setApplicationEnabledSetting( CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, USER_ID, CALLING_PACKAGE); Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID); Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps( new String[] {appInfo.packageName}, USER_ID); } /** Configured app has no privileges, and was disabled by the user - should do nothing. */ Loading @@ -185,7 +196,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and was disabled - should do nothing. */ Loading @@ -203,7 +216,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and is explicitly enabled - should do nothing. */ Loading @@ -221,7 +236,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and is in the default state - should disable until use. */ Loading @@ -239,7 +256,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager).setApplicationEnabledSetting( CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0, USER_ID, CALLING_PACKAGE); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and is disabled until used - should do nothing. */ Loading @@ -258,7 +277,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } } Loading
src/java/com/android/internal/telephony/CarrierAppUtils.java +9 −5 Original line number Diff line number Diff line Loading @@ -79,8 +79,10 @@ public final class CarrierAppUtils { if (candidates == null || candidates.isEmpty()) { return; } List<String> enabledCarrierPackages = new ArrayList<>(); try { boolean anyAppsEnabled = false; for (ApplicationInfo ai : candidates) { String packageName = ai.packageName; boolean hasPrivileges = Loading @@ -92,7 +94,7 @@ public final class CarrierAppUtils { PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); anyAppsEnabled = true; enabledCarrierPackages.add(ai.packageName); packageManager.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, userId, callingPackage); Loading @@ -100,7 +102,7 @@ public final class CarrierAppUtils { PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { // If we're already enabled, don't bother re-enabling, but treat the app as // enabled so that we re-grant default permissions in case they were lost. anyAppsEnabled = true; enabledCarrierPackages.add(ai.packageName); } } else if (!hasPrivileges && ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { Loading @@ -112,10 +114,12 @@ public final class CarrierAppUtils { } } if (anyAppsEnabled) { if (!enabledCarrierPackages.isEmpty()) { // Since we enabled at least one app, ensure we grant default permissions to those // apps. packageManager.grantDefaultPermissions(userId); String[] packageNames = new String[enabledCarrierPackages.size()]; enabledCarrierPackages.toArray(packageNames); packageManager.grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId); } } catch (RemoteException e) { Slog.w(TAG, "Could not reach PackageManager", e); Loading
src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java +0 −28 Original line number Diff line number Diff line Loading @@ -27,16 +27,13 @@ import android.content.ContentValues; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.IPackagesProvider; import android.os.AsyncResult; import android.os.Handler; import android.os.IRemoteCallback; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; import android.os.UserHandle; import android.preference.PreferenceManager; import android.provider.Settings; Loading Loading @@ -126,31 +123,6 @@ public class SubscriptionInfoUpdater extends Handler { } private void initializeCarrierApps() { // Let the PackageManager query carrier apps as they get certain permissions granted by // default. try { mPackageManager.setCarrierAppPackagesProvider( new IPackagesProvider.Stub() { @Override public String[] getPackages(int userId) { List<ApplicationInfo> defaultApps = CarrierAppUtils.getDefaultCarrierApps(mPackageManager, TelephonyManager.getDefault(), userId); if (defaultApps == null) { return null; } int count = defaultApps.size(); String[] packages = new String[count]; for (int i = 0; i < count; i++) { packages[i] = defaultApps.get(i).packageName; } return packages; } }); } catch (RemoteException e) { logd("Couldn't contact PackageManager: " + e.getMessage()); } // Initialize carrier apps: // -Now (on system startup) // -Whenever new carrier privilege rules might change (new SIM is loaded) Loading
tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java +33 −12 Original line number Diff line number Diff line Loading @@ -60,7 +60,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps(Mockito.any(String[].class), Mockito.anyInt()); Mockito.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -74,7 +76,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); Mockito.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -94,7 +98,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has privileges, but was disabled - should do nothing. */ Loading @@ -112,7 +118,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has privileges, and is already enabled - should only grant permissions. */ Loading @@ -130,7 +138,8 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID); Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps( new String[] {appInfo.packageName}, USER_ID); } /** Configured app has privileges, and is in the default state - should enable. */ Loading @@ -148,7 +157,8 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager).setApplicationEnabledSetting( CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, USER_ID, CALLING_PACKAGE); Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID); Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps( new String[] {appInfo.packageName}, USER_ID); } /** Configured app has privileges, and is disabled until used - should enable. */ Loading @@ -167,7 +177,8 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager).setApplicationEnabledSetting( CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, USER_ID, CALLING_PACKAGE); Mockito.verify(mPackageManager).grantDefaultPermissions(USER_ID); Mockito.verify(mPackageManager).grantDefaultPermissionsToEnabledCarrierApps( new String[] {appInfo.packageName}, USER_ID); } /** Configured app has no privileges, and was disabled by the user - should do nothing. */ Loading @@ -185,7 +196,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and was disabled - should do nothing. */ Loading @@ -203,7 +216,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and is explicitly enabled - should do nothing. */ Loading @@ -221,7 +236,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and is in the default state - should disable until use. */ Loading @@ -239,7 +256,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager).setApplicationEnabledSetting( CARRIER_APP, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, 0, USER_ID, CALLING_PACKAGE); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } /** Configured app has no privileges, and is disabled until used - should do nothing. */ Loading @@ -258,7 +277,9 @@ public class CarrierAppUtilsTest extends InstrumentationTestCase { Mockito.verify(mPackageManager, Mockito.never()).setApplicationEnabledSetting( Mockito.anyString(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyInt(), Mockito.anyString()); Mockito.verify(mPackageManager, Mockito.never()).grantDefaultPermissions(Mockito.anyInt()); Mockito.verify(mPackageManager, Mockito.never()) .grantDefaultPermissionsToEnabledCarrierApps( Mockito.any(String[].class), Mockito.anyInt()); } }