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

Commit aaabf2b4 authored by jackqdyulei's avatar jackqdyulei
Browse files

Refactor PowerWhitelistBackend

Extract method to check default active apps

Fixes: 118910079
Test: RunSettingsLibRoboTests
Change-Id: I7ff771d23d83d21e041a208619bbec885039c7a5
parent 1279c3ff
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -75,20 +75,32 @@ public class PowerWhitelistBackend {
            return true;
        }

        if (isDefaultActiveApp(pkg)) {
            return true;
        }

        return false;
    }

    /**
     * Check if it is default active app in multiple area(i.e. SMS, Dialer, Device admin..)
     */
    public boolean isDefaultActiveApp(String pkg) {
        // Additionally, check if pkg is default dialer/sms. They are considered essential apps and
        // should be automatically whitelisted (otherwise user may be able to set restriction on
        // them, leading to bad device behavior.)
        if (!mAppContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
            return false;
        }

        final boolean hasTelephony = mAppContext.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_TELEPHONY);
        final ComponentName defaultSms = SmsApplication.getDefaultSmsApplication(mAppContext,
                true /* updateIfNeeded */);
        if (defaultSms != null && TextUtils.equals(pkg, defaultSms.getPackageName())) {
        if (hasTelephony && defaultSms != null && TextUtils.equals(pkg,
                defaultSms.getPackageName())) {
            return true;
        }

        final String defaultDialer = DefaultDialerManager.getDefaultDialerApplication(mAppContext);
        if (TextUtils.equals(pkg, defaultDialer)) {
        if (hasTelephony && TextUtils.equals(pkg, defaultDialer)) {
            return true;
        }

+3 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ public class PowerWhitelistBackendTest {
        ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(testSms, "receiver"));

        assertThat(mPowerWhitelistBackend.isWhitelisted(testSms)).isTrue();
        assertThat(mPowerWhitelistBackend.isDefaultActiveApp(testSms)).isTrue();
    }

    @Test
@@ -126,6 +127,7 @@ public class PowerWhitelistBackendTest {
        ShadowDefaultDialerManager.setDefaultDialerApplication(testDialer);

        assertThat(mPowerWhitelistBackend.isWhitelisted(testDialer)).isTrue();
        assertThat(mPowerWhitelistBackend.isDefaultActiveApp(testDialer)).isTrue();
    }

    @Test
@@ -133,6 +135,7 @@ public class PowerWhitelistBackendTest {
        doReturn(true).when(mDevicePolicyManager).packageHasActiveAdmins(PACKAGE_ONE);

        assertThat(mPowerWhitelistBackend.isWhitelisted(PACKAGE_ONE)).isTrue();
        assertThat(mPowerWhitelistBackend.isDefaultActiveApp(PACKAGE_ONE)).isTrue();
    }

    @Test