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

Commit 329975f4 authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "Shorter thresholds for app standby"

parents 0f02aeb6 301e94a9
Loading
Loading
Loading
Loading
+26 −14
Original line number Diff line number Diff line
@@ -70,6 +70,10 @@ public class AppStandbyControllerTests {
    private static final long HOUR_MS = 60 * MINUTE_MS;
    private static final long DAY_MS = 24 * HOUR_MS;

    private static final long WORKING_SET_THRESHOLD = 12 * HOUR_MS;
    private static final long FREQUENT_THRESHOLD = 24 * HOUR_MS;
    private static final long RARE_THRESHOLD = 48 * HOUR_MS;

    private MyInjector mInjector;

    static class MyContextWrapper extends ContextWrapper {
@@ -171,6 +175,14 @@ public class AppStandbyControllerTests {
            return packageName != null && packageName.equals(mBoundWidgetPackage);
        }

        @Override
        String getAppIdleSettings() {
            return "screen_thresholds=0/0/0/" + HOUR_MS + ",elapsed_thresholds=0/"
                    + WORKING_SET_THRESHOLD + "/"
                    + FREQUENT_THRESHOLD + "/"
                    + RARE_THRESHOLD;
        }

        // Internal methods

        void setDisplayOn(boolean on) {
@@ -228,12 +240,12 @@ public class AppStandbyControllerTests {
        AppStandbyController controller = setupController();

        setChargingState(controller, true);
        mInjector.mElapsedRealtime = 8 * DAY_MS;
        mInjector.mElapsedRealtime = RARE_THRESHOLD + 1;
        assertFalse(controller.isAppIdleFilteredOrParoled(PACKAGE_1, USER_ID,
                mInjector.mElapsedRealtime, false));

        setChargingState(controller, false);
        mInjector.mElapsedRealtime = 16 * DAY_MS;
        mInjector.mElapsedRealtime = 2 * RARE_THRESHOLD + 2;
        controller.checkIdleStates(USER_ID);
        assertTrue(controller.isAppIdleFilteredOrParoled(PACKAGE_1, USER_ID,
                mInjector.mElapsedRealtime, false));
@@ -273,26 +285,26 @@ public class AppStandbyControllerTests {
        reportEvent(controller, USER_INTERACTION, 0);

        // ACTIVE bucket
        assertTimeout(controller, 11 * HOUR_MS, STANDBY_BUCKET_ACTIVE);
        assertTimeout(controller, WORKING_SET_THRESHOLD - 1, STANDBY_BUCKET_ACTIVE);

        // WORKING_SET bucket
        assertTimeout(controller, 25 * HOUR_MS, STANDBY_BUCKET_WORKING_SET);
        assertTimeout(controller, WORKING_SET_THRESHOLD + 1, STANDBY_BUCKET_WORKING_SET);

        // WORKING_SET bucket
        assertTimeout(controller, 47 * HOUR_MS, STANDBY_BUCKET_WORKING_SET);
        assertTimeout(controller, FREQUENT_THRESHOLD - 1, STANDBY_BUCKET_WORKING_SET);

        // FREQUENT bucket
        assertTimeout(controller, 4 * DAY_MS, STANDBY_BUCKET_FREQUENT);
        assertTimeout(controller, FREQUENT_THRESHOLD + 1, STANDBY_BUCKET_FREQUENT);

        // RARE bucket
        assertTimeout(controller, 9 * DAY_MS, STANDBY_BUCKET_RARE);
        assertTimeout(controller, RARE_THRESHOLD + 1, STANDBY_BUCKET_RARE);

        reportEvent(controller, USER_INTERACTION, 9 * DAY_MS);
        reportEvent(controller, USER_INTERACTION, RARE_THRESHOLD + 1);

        assertTimeout(controller, 9 * DAY_MS, STANDBY_BUCKET_ACTIVE);
        assertTimeout(controller, RARE_THRESHOLD + 1, STANDBY_BUCKET_ACTIVE);

        // RARE bucket
        assertTimeout(controller, 18 * DAY_MS, STANDBY_BUCKET_RARE);
        assertTimeout(controller, RARE_THRESHOLD * 2 + 2, STANDBY_BUCKET_RARE);
    }

    @Test
@@ -305,18 +317,18 @@ public class AppStandbyControllerTests {
        reportEvent(controller, USER_INTERACTION, 0);

        // ACTIVE bucket
        assertTimeout(controller, 11 * HOUR_MS, STANDBY_BUCKET_ACTIVE);
        assertTimeout(controller, WORKING_SET_THRESHOLD - 1, STANDBY_BUCKET_ACTIVE);

        // WORKING_SET bucket
        assertTimeout(controller, 25 * HOUR_MS, STANDBY_BUCKET_WORKING_SET);
        assertTimeout(controller, WORKING_SET_THRESHOLD + 1, STANDBY_BUCKET_WORKING_SET);

        // RARE bucket, should fail because the screen wasn't ON.
        mInjector.mElapsedRealtime = 9 * DAY_MS;
        mInjector.mElapsedRealtime = RARE_THRESHOLD + 1;
        controller.checkIdleStates(USER_ID);
        assertNotEquals(STANDBY_BUCKET_RARE, getStandbyBucket(controller));

        mInjector.setDisplayOn(true);
        assertTimeout(controller, 18 * DAY_MS, STANDBY_BUCKET_RARE);
        assertTimeout(controller, RARE_THRESHOLD * 2 + 2, STANDBY_BUCKET_RARE);
    }

    @Test
+9 −5
Original line number Diff line number Diff line
@@ -91,14 +91,14 @@ public class AppStandbyController {
            0,
            0,
            COMPRESS_TIME ? 120 * 1000 : 1 * ONE_HOUR,
            COMPRESS_TIME ? 240 * 1000 : 8 * ONE_HOUR
            COMPRESS_TIME ? 240 * 1000 : 2 * ONE_HOUR
    };

    static final long[] ELAPSED_TIME_THRESHOLDS = {
            0,
            COMPRESS_TIME ?  1 * ONE_MINUTE : 12 * ONE_HOUR,
            COMPRESS_TIME ?  4 * ONE_MINUTE :  2 * ONE_DAY,
            COMPRESS_TIME ? 16 * ONE_MINUTE :  8 * ONE_DAY
            COMPRESS_TIME ?  4 * ONE_MINUTE : 24 * ONE_HOUR,
            COMPRESS_TIME ? 16 * ONE_MINUTE : 48 * ONE_HOUR
    };

    static final int[] THRESHOLD_BUCKETS = {
@@ -1049,6 +1049,11 @@ public class AppStandbyController {
                int userId) {
            return appWidgetManager.isBoundWidgetPackage(packageName, userId);
        }

        String getAppIdleSettings() {
            return Settings.Global.getString(mContext.getContentResolver(),
                    Settings.Global.APP_IDLE_CONSTANTS);
        }
    }

    class AppStandbyHandler extends Handler {
@@ -1181,8 +1186,7 @@ public class AppStandbyController {
                // Look at global settings for this.
                // TODO: Maybe apply different thresholds for different users.
                try {
                    mParser.setString(Settings.Global.getString(mContext.getContentResolver(),
                            Settings.Global.APP_IDLE_CONSTANTS));
                    mParser.setString(mInjector.getAppIdleSettings());
                } catch (IllegalArgumentException e) {
                    Slog.e(TAG, "Bad value for app idle settings: " + e.getMessage());
                    // fallthrough, mParser is empty and all defaults will be returned.