Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5ce7ea3 authored by Jeff Davidson's avatar Jeff Davidson Committed by Android (Google) Code Review
Browse files

Merge "Always regrant default permissions even if app is enabled." into mnc-dev

parents 1d7647ae 314fa4be
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -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 "
+11 −1
Original line number Diff line number Diff line
@@ -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);
    }

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

@@ -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. */
@@ -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;
@@ -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. */
@@ -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. */
@@ -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. */
@@ -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. */
@@ -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. */
@@ -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());
    }
}