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

Commit da20ead3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix Battery optimization takes long time"

parents f7f61995 19c2bbcc
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ public class PowerWhitelistBackend {
    private final ArraySet<String> mWhitelistedApps = new ArraySet<>();
    private final ArraySet<String> mSysWhitelistedApps = new ArraySet<>();
    private final ArraySet<String> mSysWhitelistedAppsExceptIdle = new ArraySet<>();
    private final ArraySet<String> mDefaultActiveApps = new ArraySet<>();

    public PowerWhitelistBackend(Context context) {
        this(context, IDeviceIdleController.Stub.asInterface(
@@ -90,17 +91,7 @@ public class PowerWhitelistBackend {
        // should be automatically whitelisted (otherwise user may be able to set restriction on
        // them, leading to bad device behavior.)

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

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

@@ -166,6 +157,7 @@ public class PowerWhitelistBackend {
        mSysWhitelistedApps.clear();
        mSysWhitelistedAppsExceptIdle.clear();
        mWhitelistedApps.clear();
        mDefaultActiveApps.clear();
        if (mDeviceIdleService == null) {
            return;
        }
@@ -183,6 +175,21 @@ public class PowerWhitelistBackend {
            for (String app : sysWhitelistedAppsExceptIdle) {
                mSysWhitelistedAppsExceptIdle.add(app);
            }
            final boolean hasTelephony = mAppContext.getPackageManager().hasSystemFeature(
                    PackageManager.FEATURE_TELEPHONY);
            final ComponentName defaultSms = SmsApplication.getDefaultSmsApplication(mAppContext,
                    true /* updateIfNeeded */);
            final String defaultDialer = DefaultDialerManager.getDefaultDialerApplication(
                    mAppContext);

            if (hasTelephony) {
                if (defaultSms != null) {
                    mDefaultActiveApps.add(defaultSms.getPackageName());
                }
                if (!TextUtils.isEmpty(defaultDialer)) {
                    mDefaultActiveApps.add(defaultDialer);
                }
            }
        } catch (RemoteException e) {
            Log.w(TAG, "Unable to reach IDeviceIdleController", e);
        }
+4 −0
Original line number Diff line number Diff line
@@ -117,6 +117,8 @@ public class PowerWhitelistBackendTest {
        final String testSms = "com.android.test.defaultsms";
        ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(testSms, "receiver"));

        mPowerWhitelistBackend.refreshList();

        assertThat(mPowerWhitelistBackend.isWhitelisted(testSms)).isTrue();
        assertThat(mPowerWhitelistBackend.isDefaultActiveApp(testSms)).isTrue();
    }
@@ -126,6 +128,8 @@ public class PowerWhitelistBackendTest {
        final String testDialer = "com.android.test.defaultdialer";
        ShadowDefaultDialerManager.setDefaultDialerApplication(testDialer);

        mPowerWhitelistBackend.refreshList();

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