Loading packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java +17 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,7 @@ public class PowerWhitelistBackendTest { ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(testSms, "receiver")); assertThat(mPowerWhitelistBackend.isWhitelisted(testSms)).isTrue(); assertThat(mPowerWhitelistBackend.isDefaultActiveApp(testSms)).isTrue(); } @Test Loading @@ -126,6 +127,7 @@ public class PowerWhitelistBackendTest { ShadowDefaultDialerManager.setDefaultDialerApplication(testDialer); assertThat(mPowerWhitelistBackend.isWhitelisted(testDialer)).isTrue(); assertThat(mPowerWhitelistBackend.isDefaultActiveApp(testDialer)).isTrue(); } @Test Loading @@ -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 Loading Loading
packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java +17 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,7 @@ public class PowerWhitelistBackendTest { ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(testSms, "receiver")); assertThat(mPowerWhitelistBackend.isWhitelisted(testSms)).isTrue(); assertThat(mPowerWhitelistBackend.isDefaultActiveApp(testSms)).isTrue(); } @Test Loading @@ -126,6 +127,7 @@ public class PowerWhitelistBackendTest { ShadowDefaultDialerManager.setDefaultDialerApplication(testDialer); assertThat(mPowerWhitelistBackend.isWhitelisted(testDialer)).isTrue(); assertThat(mPowerWhitelistBackend.isDefaultActiveApp(testDialer)).isTrue(); } @Test Loading @@ -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 Loading