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

Commit 5175461c authored by Kweku Adams's avatar Kweku Adams
Browse files

Integrate AlarmManager with TARE.

1. Send alarm events to EconomyManager.
2. Add a TARE policy to the alarm deferral flow and toggle
   between TARE and standby policy based on the settings flags.

Bug: 158300259
Test: atest frameworks/base/services/tests/mockingservicestests/src/com/android/server/alarm
Test: atest CtsAlarmManagerTestCases
Change-Id: Ibfe4a47741980523f7b1f876c05cd26ac552cc3b
parent da143d4a
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ import java.util.Date;
 */
class Alarm {
    @VisibleForTesting
    public static final int NUM_POLICIES = 4;
    public static final int NUM_POLICIES = 5;
    /**
     * Index used to store the time the alarm was requested to expire. To be used with
     * {@link #setPolicyElapsed(int, long)}.
@@ -66,6 +66,12 @@ class Alarm {
     */
    public static final int BATTERY_SAVER_POLICY_INDEX = 3;

    /**
     * Index used to store the earliest time the alarm can expire based on TARE policy.
     * To be used with {@link #setPolicyElapsed(int, long)}.
     */
    public static final int TARE_POLICY_INDEX = 4;

    /**
     * Reason to use for inexact alarms.
     */
@@ -254,8 +260,10 @@ class Alarm {
                return "device_idle";
            case BATTERY_SAVER_POLICY_INDEX:
                return "battery_saver";
            case TARE_POLICY_INDEX:
                return "tare";
            default:
                return "--unknown--";
                return "--unknown(" + index + ")--";
        }
    }

+303 −11

File changed.

Preview size limit exceeded, changes collapsed.

+144 −0

File added.

Preview size limit exceeded, changes collapsed.

+88 −1

File changed.

Preview size limit exceeded, changes collapsed.

+17 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static com.android.server.alarm.Alarm.APP_STANDBY_POLICY_INDEX;
import static com.android.server.alarm.Alarm.NUM_POLICIES;
import static com.android.server.alarm.Alarm.REQUESTER_POLICY_INDEX;
import static com.android.server.alarm.AlarmManagerService.isExemptFromAppStandby;
import static com.android.server.alarm.AlarmManagerService.isExemptFromTare;
import static com.android.server.alarm.Constants.TEST_CALLING_PACKAGE;
import static com.android.server.alarm.Constants.TEST_CALLING_UID;

@@ -193,4 +194,20 @@ public class AlarmTest {
                createDefaultAlarm(anything, anything, FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED)));
        assertTrue("Alarm clock not exempt", isExemptFromAppStandby(createAlarmClock(anything)));
    }

    @Test
    public void testIsExemptFromTare() {
        final long anything = 54321;    // Arbitrary number, doesn't matter for this test.

        assertFalse("Basic alarm exempt", isExemptFromTare(
                createDefaultAlarm(anything, anything, 0)));
        assertFalse("FLAG_ALLOW_WHILE_IDLE_COMPAT exempt", isExemptFromTare(
                createDefaultAlarm(anything, anything, FLAG_ALLOW_WHILE_IDLE_COMPAT)));
        assertFalse("ALLOW_WHILE_IDLE exempt", isExemptFromTare(
                createDefaultAlarm(anything, anything, FLAG_ALLOW_WHILE_IDLE)));

        assertTrue("ALLOW_WHILE_IDLE_UNRESTRICTED not exempt", isExemptFromTare(
                createDefaultAlarm(anything, anything, FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED)));
        assertTrue("Alarm clock not exempt", isExemptFromTare(createAlarmClock(anything)));
    }
}