Loading src/java/com/android/internal/telephony/CarrierAppUtils.java +16 −9 Original line number Diff line number Diff line Loading @@ -86,15 +86,22 @@ public final class CarrierAppUtils { boolean hasPrivileges = telephonyManager.checkCarrierPrivilegesForPackageAnyPhone(packageName) == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; if (hasPrivileges && (ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT if (hasPrivileges) { if (ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT || ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED)) { Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); anyAppsEnabled = true; packageManager.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, userId, callingPackage); } else if (ai.enabledSetting == 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; } } else if (!hasPrivileges && ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { Slog.i(TAG, "Update state(" + packageName + "): DISABLED_UNTIL_USED for user " Loading tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java +11 −1 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ 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.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -73,6 +74,7 @@ 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.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -92,6 +94,7 @@ 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()); } /** Configured app has privileges, but was disabled - should do nothing. */ Loading @@ -109,9 +112,10 @@ 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()); } /** Configured app has privileges, and is already enabled - should do nothing. */ /** Configured app has privileges, and is already enabled - should only grant permissions. */ public void testDisableCarrierAppsUntilPrivileged_HasPrivileges_Enabled() throws Exception { ApplicationInfo appInfo = new ApplicationInfo(); appInfo.packageName = CARRIER_APP; Loading @@ -126,6 +130,7 @@ 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); } /** Configured app has privileges, and is in the default state - should enable. */ Loading Loading @@ -180,6 +185,7 @@ 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()); } /** Configured app has no privileges, and was disabled - should do nothing. */ Loading @@ -197,6 +203,7 @@ 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()); } /** Configured app has no privileges, and is explicitly enabled - should do nothing. */ Loading @@ -214,6 +221,7 @@ 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()); } /** Configured app has no privileges, and is in the default state - should disable until use. */ Loading @@ -231,6 +239,7 @@ 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()); } /** Configured app has no privileges, and is disabled until used - should do nothing. */ Loading @@ -249,6 +258,7 @@ 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()); } } Loading
src/java/com/android/internal/telephony/CarrierAppUtils.java +16 −9 Original line number Diff line number Diff line Loading @@ -86,15 +86,22 @@ public final class CarrierAppUtils { boolean hasPrivileges = telephonyManager.checkCarrierPrivilegesForPackageAnyPhone(packageName) == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; if (hasPrivileges && (ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT if (hasPrivileges) { if (ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT || ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED)) { Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); anyAppsEnabled = true; packageManager.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0, userId, callingPackage); } else if (ai.enabledSetting == 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; } } else if (!hasPrivileges && ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { Slog.i(TAG, "Update state(" + packageName + "): DISABLED_UNTIL_USED for user " Loading
tests/telephonytests/src/com/android/internal/telephony/CarrierAppUtilsTest.java +11 −1 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ 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.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -73,6 +74,7 @@ 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.verifyNoMoreInteractions(mTelephonyManager); } Loading @@ -92,6 +94,7 @@ 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()); } /** Configured app has privileges, but was disabled - should do nothing. */ Loading @@ -109,9 +112,10 @@ 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()); } /** Configured app has privileges, and is already enabled - should do nothing. */ /** Configured app has privileges, and is already enabled - should only grant permissions. */ public void testDisableCarrierAppsUntilPrivileged_HasPrivileges_Enabled() throws Exception { ApplicationInfo appInfo = new ApplicationInfo(); appInfo.packageName = CARRIER_APP; Loading @@ -126,6 +130,7 @@ 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); } /** Configured app has privileges, and is in the default state - should enable. */ Loading Loading @@ -180,6 +185,7 @@ 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()); } /** Configured app has no privileges, and was disabled - should do nothing. */ Loading @@ -197,6 +203,7 @@ 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()); } /** Configured app has no privileges, and is explicitly enabled - should do nothing. */ Loading @@ -214,6 +221,7 @@ 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()); } /** Configured app has no privileges, and is in the default state - should disable until use. */ Loading @@ -231,6 +239,7 @@ 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()); } /** Configured app has no privileges, and is disabled until used - should do nothing. */ Loading @@ -249,6 +258,7 @@ 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()); } }