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

Commit 00790871 authored by Soonil Nagarkar's avatar Soonil Nagarkar
Browse files

Executor version of setWindow() and setExactAndAllowWhileIdle()

We need executor APIs.

Test: atest CtsAlarmManagerTestCases:BasicApiTests

Bug: 255004822
Change-Id: I64cd8330a4874e7652ef043a67942da2907a7ab1
parent 9fa6872e
Loading
Loading
Loading
Loading
+109 −23
Original line number Diff line number Diff line
@@ -309,7 +309,7 @@ public class AlarmManager {
        /**
         * Callback method that is invoked by the system when the alarm time is reached.
         */
        public void onAlarm();
        void onAlarm();
    }

    final class ListenerWrapper extends IAlarmListener.Stub implements Runnable {
@@ -453,7 +453,7 @@ public class AlarmManager {
     * @see #RTC
     * @see #RTC_WAKEUP
     */
    public void set(@AlarmType int type, long triggerAtMillis, PendingIntent operation) {
    public void set(@AlarmType int type, long triggerAtMillis, @NonNull PendingIntent operation) {
        setImpl(type, triggerAtMillis, legacyExactLength(), 0, 0, operation, null, null,
                (Handler) null, null, null);
    }
@@ -480,8 +480,8 @@ public class AlarmManager {
     * @param targetHandler {@link Handler} on which to execute the listener's onAlarm()
     *         callback, or {@code null} to run that callback on the main looper.
     */
    public void set(@AlarmType int type, long triggerAtMillis, String tag, OnAlarmListener listener,
            Handler targetHandler) {
    public void set(@AlarmType int type, long triggerAtMillis, @Nullable String tag,
            @NonNull OnAlarmListener listener, @Nullable Handler targetHandler) {
        setImpl(type, triggerAtMillis, legacyExactLength(), 0, 0, null, listener, tag,
                targetHandler, null, null);
    }
@@ -546,7 +546,7 @@ public class AlarmManager {
     * @see Intent#EXTRA_ALARM_COUNT
     */
    public void setRepeating(@AlarmType int type, long triggerAtMillis,
            long intervalMillis, PendingIntent operation) {
            long intervalMillis, @NonNull PendingIntent operation) {
        setImpl(type, triggerAtMillis, legacyExactLength(), intervalMillis, 0, operation,
                null, null, (Handler) null, null, null);
    }
@@ -602,7 +602,7 @@ public class AlarmManager {
     * @see #RTC_WAKEUP
     */
    public void setWindow(@AlarmType int type, long windowStartMillis, long windowLengthMillis,
            PendingIntent operation) {
            @NonNull PendingIntent operation) {
        setImpl(type, windowStartMillis, windowLengthMillis, 0, 0, operation,
                null, null, (Handler) null, null, null);
    }
@@ -625,11 +625,61 @@ public class AlarmManager {
     * @see #setWindow(int, long, long, PendingIntent)
     */
    public void setWindow(@AlarmType int type, long windowStartMillis, long windowLengthMillis,
            String tag, OnAlarmListener listener, Handler targetHandler) {
            @Nullable String tag, @NonNull OnAlarmListener listener,
            @Nullable Handler targetHandler) {
        setImpl(type, windowStartMillis, windowLengthMillis, 0, 0, null, listener, tag,
                targetHandler, null, null);
    }

    /**
     * Direct callback version of {@link #setWindow(int, long, long, PendingIntent)}.  Rather
     * than supplying a PendingIntent to be sent when the alarm time is reached, this variant
     * supplies an {@link OnAlarmListener} instance that will be invoked at that time.
     * <p>
     * The OnAlarmListener {@link OnAlarmListener#onAlarm() onAlarm()} method will be
     * invoked via the specified target Executor.
     *
     * <p>
     * Note: Starting with API {@link Build.VERSION_CODES#S}, apps should not pass in a window of
     * less than 10 minutes. The system will try its best to accommodate smaller windows if the
     * alarm is supposed to fire in the near future, but there are no guarantees and the app should
     * expect any window smaller than 10 minutes to get elongated to 10 minutes.
     *
     * @see #setWindow(int, long, long, PendingIntent)
     */
    public void setWindow(@AlarmType int type, long windowStartMillis, long windowLengthMillis,
            @Nullable String tag, @NonNull Executor executor, @NonNull OnAlarmListener listener) {
        setImpl(type, windowStartMillis, windowLengthMillis, 0, 0, null, listener, tag,
                executor, null, null);
    }

    /**
     * Direct callback version of {@link #setWindow(int, long, long, PendingIntent)}.  Rather
     * than supplying a PendingIntent to be sent when the alarm time is reached, this variant
     * supplies an {@link OnAlarmListener} instance that will be invoked at that time.
     * <p>
     * The OnAlarmListener {@link OnAlarmListener#onAlarm() onAlarm()} method will be
     * invoked via the specified target Executor.
     *
     * <p>
     * Note: Starting with API {@link Build.VERSION_CODES#S}, apps should not pass in a window of
     * less than 10 minutes. The system will try its best to accommodate smaller windows if the
     * alarm is supposed to fire in the near future, but there are no guarantees and the app should
     * expect any window smaller than 10 minutes to get elongated to 10 minutes.
     *
     * @see #setWindow(int, long, long, PendingIntent)
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
    public void setWindow(@AlarmType int type, long windowStartMillis, long windowLengthMillis,
            @Nullable String tag, @NonNull Executor executor, @Nullable WorkSource workSource,
            @NonNull OnAlarmListener listener) {
        setImpl(type, windowStartMillis, windowLengthMillis, 0, 0, null, listener, tag,
                executor, workSource, null);
    }

    /**
     * Schedule an alarm that is prioritized by the system while the device is in power saving modes
     * such as battery saver and device idle (doze).
@@ -725,7 +775,8 @@ public class AlarmManager {
     * @see Manifest.permission#SCHEDULE_EXACT_ALARM SCHEDULE_EXACT_ALARM
     */
    @RequiresPermission(value = Manifest.permission.SCHEDULE_EXACT_ALARM, conditional = true)
    public void setExact(@AlarmType int type, long triggerAtMillis, PendingIntent operation) {
    public void setExact(@AlarmType int type, long triggerAtMillis,
            @NonNull PendingIntent operation) {
        setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, operation, null, null, (Handler) null,
                null, null);
    }
@@ -756,8 +807,8 @@ public class AlarmManager {
     * @see Manifest.permission#SCHEDULE_EXACT_ALARM SCHEDULE_EXACT_ALARM
     */
    @RequiresPermission(value = Manifest.permission.SCHEDULE_EXACT_ALARM, conditional = true)
    public void setExact(@AlarmType int type, long triggerAtMillis, String tag,
            OnAlarmListener listener, Handler targetHandler) {
    public void setExact(@AlarmType int type, long triggerAtMillis, @Nullable String tag,
            @NonNull OnAlarmListener listener, @Nullable Handler targetHandler) {
        setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, null, listener, tag,
                targetHandler, null, null);
    }
@@ -767,8 +818,8 @@ public class AlarmManager {
     * the given time.
     * @hide
     */
    public void setIdleUntil(@AlarmType int type, long triggerAtMillis, String tag,
            OnAlarmListener listener, Handler targetHandler) {
    public void setIdleUntil(@AlarmType int type, long triggerAtMillis, @Nullable String tag,
            @NonNull OnAlarmListener listener, @Nullable Handler targetHandler) {
        setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, FLAG_IDLE_UNTIL, null,
                listener, tag, targetHandler, null, null);
    }
@@ -828,7 +879,7 @@ public class AlarmManager {
     * @see Manifest.permission#SCHEDULE_EXACT_ALARM SCHEDULE_EXACT_ALARM
     */
    @RequiresPermission(Manifest.permission.SCHEDULE_EXACT_ALARM)
    public void setAlarmClock(AlarmClockInfo info, PendingIntent operation) {
    public void setAlarmClock(@NonNull AlarmClockInfo info, @NonNull PendingIntent operation) {
        setImpl(RTC_WAKEUP, info.getTriggerTime(), WINDOW_EXACT, 0, 0, operation,
                null, null, (Handler) null, null, info);
    }
@@ -837,7 +888,8 @@ public class AlarmManager {
    @SystemApi
    @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
    public void set(@AlarmType int type, long triggerAtMillis, long windowMillis,
            long intervalMillis, PendingIntent operation, WorkSource workSource) {
            long intervalMillis, @NonNull PendingIntent operation,
            @Nullable WorkSource workSource) {
        setImpl(type, triggerAtMillis, windowMillis, intervalMillis, 0, operation, null, null,
                (Handler) null, workSource, null);
    }
@@ -854,8 +906,8 @@ public class AlarmManager {
     */
    @UnsupportedAppUsage
    public void set(@AlarmType int type, long triggerAtMillis, long windowMillis,
            long intervalMillis, String tag, OnAlarmListener listener, Handler targetHandler,
            WorkSource workSource) {
            long intervalMillis, @Nullable String tag, @NonNull OnAlarmListener listener,
            @Nullable Handler targetHandler, @Nullable WorkSource workSource) {
        setImpl(type, triggerAtMillis, windowMillis, intervalMillis, 0, null, listener, tag,
                targetHandler, workSource, null);
    }
@@ -873,8 +925,8 @@ public class AlarmManager {
    @SystemApi
    @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS)
    public void set(@AlarmType int type, long triggerAtMillis, long windowMillis,
            long intervalMillis, OnAlarmListener listener, Handler targetHandler,
            WorkSource workSource) {
            long intervalMillis, @NonNull OnAlarmListener listener, @Nullable Handler targetHandler,
            @Nullable WorkSource workSource) {
        setImpl(type, triggerAtMillis, windowMillis, intervalMillis, 0, null, listener, null,
                targetHandler, workSource, null);
    }
@@ -1072,7 +1124,7 @@ public class AlarmManager {
     * @see Intent#EXTRA_ALARM_COUNT
     */
    public void setInexactRepeating(@AlarmType int type, long triggerAtMillis,
            long intervalMillis, PendingIntent operation) {
            long intervalMillis, @NonNull PendingIntent operation) {
        setImpl(type, triggerAtMillis, WINDOW_HEURISTIC, intervalMillis, 0, operation, null,
                null, (Handler) null, null, null);
    }
@@ -1122,7 +1174,7 @@ public class AlarmManager {
     * @see #RTC_WAKEUP
     */
    public void setAndAllowWhileIdle(@AlarmType int type, long triggerAtMillis,
            PendingIntent operation) {
            @NonNull PendingIntent operation) {
        setImpl(type, triggerAtMillis, WINDOW_HEURISTIC, 0, FLAG_ALLOW_WHILE_IDLE,
                operation, null, null, (Handler) null, null, null);
    }
@@ -1195,11 +1247,45 @@ public class AlarmManager {
     */
    @RequiresPermission(value = Manifest.permission.SCHEDULE_EXACT_ALARM, conditional = true)
    public void setExactAndAllowWhileIdle(@AlarmType int type, long triggerAtMillis,
            PendingIntent operation) {
            @NonNull PendingIntent operation) {
        setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, FLAG_ALLOW_WHILE_IDLE, operation,
                null, null, (Handler) null, null, null);
    }

    /**
     * Like {@link #setExact(int, long, String, Executor, WorkSource, OnAlarmListener)}, but this
     * alarm will be allowed to execute even when the system is in low-power idle modes.
     *
     * <p> See {@link #setExactAndAllowWhileIdle(int, long, PendingIntent)} for more details.
     *
     * @param type            type of alarm
     * @param triggerAtMillis The exact time in milliseconds, that the alarm should be delivered,
     *                        expressed in the appropriate clock's units (depending on the alarm
     *                        type).
     * @param listener        {@link OnAlarmListener} instance whose
     *                        {@link OnAlarmListener#onAlarm() onAlarm()} method will be called when
     *                        the alarm time is reached.
     * @param executor        The {@link Executor} on which to execute the listener's onAlarm()
     *                        callback.
     * @param tag             Optional. A string tag used to identify this alarm in logs and
     *                        battery-attribution.
     * @param workSource      A {@link WorkSource} object to attribute this alarm to the app that
     *                        requested this work.
     * @hide
     */
    @SystemApi
    @RequiresPermission(allOf = {
            Manifest.permission.UPDATE_DEVICE_STATS,
            Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional = true)
    public void setExactAndAllowWhileIdle(@AlarmType int type, long triggerAtMillis,
            @Nullable String tag, @NonNull Executor executor, @Nullable WorkSource workSource,
            @NonNull OnAlarmListener listener) {
        Objects.requireNonNull(executor);
        Objects.requireNonNull(listener);
        setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, FLAG_ALLOW_WHILE_IDLE, null, listener, tag,
                executor, workSource, null);
    }

    /**
     * Remove any alarms with a matching {@link Intent}.
     * Any alarm, of any type, whose Intent matches this one (as defined by
@@ -1210,7 +1296,7 @@ public class AlarmManager {
     *
     * @see #set
     */
    public void cancel(PendingIntent operation) {
    public void cancel(@NonNull PendingIntent operation) {
        if (operation == null) {
            final String msg = "cancel() called with a null PendingIntent";
            if (mTargetSdkVersion >= Build.VERSION_CODES.N) {
@@ -1233,7 +1319,7 @@ public class AlarmManager {
     *
     * @param listener OnAlarmListener instance that is the target of a currently-set alarm.
     */
    public void cancel(OnAlarmListener listener) {
    public void cancel(@NonNull OnAlarmListener listener) {
        if (listener == null) {
            throw new NullPointerException("cancel() called with a null OnAlarmListener");
        }
+14 −13
Original line number Diff line number Diff line
@@ -4604,23 +4604,24 @@ package android.app {
  public class AlarmManager {
    method public boolean canScheduleExactAlarms();
    method public void cancel(android.app.PendingIntent);
    method public void cancel(android.app.AlarmManager.OnAlarmListener);
    method public void cancel(@NonNull android.app.PendingIntent);
    method public void cancel(@NonNull android.app.AlarmManager.OnAlarmListener);
    method public void cancelAll();
    method public android.app.AlarmManager.AlarmClockInfo getNextAlarmClock();
    method public void set(int, long, android.app.PendingIntent);
    method public void set(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
    method @RequiresPermission(android.Manifest.permission.SCHEDULE_EXACT_ALARM) public void setAlarmClock(android.app.AlarmManager.AlarmClockInfo, android.app.PendingIntent);
    method public void setAndAllowWhileIdle(int, long, android.app.PendingIntent);
    method @RequiresPermission(value=android.Manifest.permission.SCHEDULE_EXACT_ALARM, conditional=true) public void setExact(int, long, android.app.PendingIntent);
    method @RequiresPermission(value=android.Manifest.permission.SCHEDULE_EXACT_ALARM, conditional=true) public void setExact(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
    method @RequiresPermission(value=android.Manifest.permission.SCHEDULE_EXACT_ALARM, conditional=true) public void setExactAndAllowWhileIdle(int, long, android.app.PendingIntent);
    method public void setInexactRepeating(int, long, long, android.app.PendingIntent);
    method public void setRepeating(int, long, long, android.app.PendingIntent);
    method public void set(int, long, @NonNull android.app.PendingIntent);
    method public void set(int, long, @Nullable String, @NonNull android.app.AlarmManager.OnAlarmListener, @Nullable android.os.Handler);
    method @RequiresPermission(android.Manifest.permission.SCHEDULE_EXACT_ALARM) public void setAlarmClock(@NonNull android.app.AlarmManager.AlarmClockInfo, @NonNull android.app.PendingIntent);
    method public void setAndAllowWhileIdle(int, long, @NonNull android.app.PendingIntent);
    method @RequiresPermission(value=android.Manifest.permission.SCHEDULE_EXACT_ALARM, conditional=true) public void setExact(int, long, @NonNull android.app.PendingIntent);
    method @RequiresPermission(value=android.Manifest.permission.SCHEDULE_EXACT_ALARM, conditional=true) public void setExact(int, long, @Nullable String, @NonNull android.app.AlarmManager.OnAlarmListener, @Nullable android.os.Handler);
    method @RequiresPermission(value=android.Manifest.permission.SCHEDULE_EXACT_ALARM, conditional=true) public void setExactAndAllowWhileIdle(int, long, @NonNull android.app.PendingIntent);
    method public void setInexactRepeating(int, long, long, @NonNull android.app.PendingIntent);
    method public void setRepeating(int, long, long, @NonNull android.app.PendingIntent);
    method @RequiresPermission(android.Manifest.permission.SET_TIME) public void setTime(long);
    method @RequiresPermission(android.Manifest.permission.SET_TIME_ZONE) public void setTimeZone(String);
    method public void setWindow(int, long, long, android.app.PendingIntent);
    method public void setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler);
    method public void setWindow(int, long, long, @NonNull android.app.PendingIntent);
    method public void setWindow(int, long, long, @Nullable String, @NonNull android.app.AlarmManager.OnAlarmListener, @Nullable android.os.Handler);
    method public void setWindow(int, long, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener);
    field public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED";
    field public static final String ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = "android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED";
    field public static final int ELAPSED_REALTIME = 3; // 0x3
+4 −2
Original line number Diff line number Diff line
@@ -524,10 +524,12 @@ package android.app {
  }
  public class AlarmManager {
    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource);
    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource);
    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, @NonNull android.app.PendingIntent, @Nullable android.os.WorkSource);
    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, @NonNull android.app.AlarmManager.OnAlarmListener, @Nullable android.os.Handler, @Nullable android.os.WorkSource);
    method @RequiresPermission(allOf={android.Manifest.permission.UPDATE_DEVICE_STATS, android.Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional=true) public void setExact(int, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.os.WorkSource, @NonNull android.app.AlarmManager.OnAlarmListener);
    method @RequiresPermission(allOf={android.Manifest.permission.UPDATE_DEVICE_STATS, android.Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional=true) public void setExactAndAllowWhileIdle(int, long, @Nullable String, @NonNull java.util.concurrent.Executor, @Nullable android.os.WorkSource, @NonNull android.app.AlarmManager.OnAlarmListener);
    method @RequiresPermission(android.Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(int, long, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener);
    method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void setWindow(int, long, long, @Nullable String, @NonNull java.util.concurrent.Executor, @Nullable android.os.WorkSource, @NonNull android.app.AlarmManager.OnAlarmListener);
  }
  public class AppOpsManager {
+14 −12
Original line number Diff line number Diff line
@@ -325,7 +325,7 @@ public class DeviceIdleControllerTest {
        doNothing().when(mAlarmManager).set(anyInt(), anyLong(), anyString(), any(), any());
        doNothing().when(mAlarmManager).setExact(anyInt(), anyLong(), anyString(), any(), any());
        doNothing().when(mAlarmManager)
                .setWindow(anyInt(), anyLong(), anyLong(), anyString(), any(), any());
                .setWindow(anyInt(), anyLong(), anyLong(), anyString(), any(), any(Handler.class));
        doReturn(mock(Sensor.class)).when(mSensorManager)
                .getDefaultSensor(eq(Sensor.TYPE_SIGNIFICANT_MOTION), eq(true));
        doReturn(true).when(mSensorManager).registerListener(any(), any(), anyInt());
@@ -1111,12 +1111,12 @@ public class DeviceIdleControllerTest {
        alarmManagerInOrder.verify(mAlarmManager).setWindow(
                eq(AlarmManager.ELAPSED_REALTIME),
                eq(idleAfterInactiveExpiryTime),
                anyLong(), anyString(), any(), any());
                anyLong(), anyString(), any(), any(Handler.class));
        // Maintenance alarm
        alarmManagerInOrder.verify(mAlarmManager).setWindow(
                eq(AlarmManager.ELAPSED_REALTIME_WAKEUP),
                eq(idleAfterInactiveExpiryTime + idlingTimeMs),
                anyLong(), anyString(), any(), any());
                anyLong(), anyString(), any(), any(Handler.class));

        final AlarmManager.OnAlarmListener progressionListener =
                alarmListenerCaptor.getAllValues().get(0);
@@ -1130,7 +1130,7 @@ public class DeviceIdleControllerTest {
        alarmManagerInOrder.verify(mAlarmManager).setWindow(
                eq(AlarmManager.ELAPSED_REALTIME_WAKEUP),
                eq(mInjector.nowElapsed + idlingTimeMs),
                anyLong(), anyString(), any(), any());
                anyLong(), anyString(), any(), any(Handler.class));

        for (int i = 0; i < 2; ++i) {
            // IDLE->MAINTENANCE alarm
@@ -1144,12 +1144,12 @@ public class DeviceIdleControllerTest {
            alarmManagerInOrder.verify(mAlarmManager).setWindow(
                    eq(AlarmManager.ELAPSED_REALTIME),
                    eq(maintenanceExpiryTime),
                    anyLong(), anyString(), any(), any());
                    anyLong(), anyString(), any(), any(Handler.class));
            // Set IDLE->MAINTENANCE
            alarmManagerInOrder.verify(mAlarmManager).setWindow(
                    eq(AlarmManager.ELAPSED_REALTIME_WAKEUP),
                    eq(maintenanceExpiryTime + idlingTimeMs),
                    anyLong(), anyString(), any(), any());
                    anyLong(), anyString(), any(), any(Handler.class));

            // MAINTENANCE->IDLE alarm
            mInjector.nowElapsed = mDeviceIdleController.getNextLightAlarmTimeForTesting();
@@ -1159,7 +1159,7 @@ public class DeviceIdleControllerTest {
            alarmManagerInOrder.verify(mAlarmManager).setWindow(
                    eq(AlarmManager.ELAPSED_REALTIME_WAKEUP),
                    eq(mInjector.nowElapsed + idlingTimeMs),
                    anyLong(), anyString(), any(), any());
                    anyLong(), anyString(), any(), any(Handler.class));
        }
    }

@@ -2019,7 +2019,8 @@ public class DeviceIdleControllerTest {
        final ArgumentCaptor<AlarmManager.OnAlarmListener> alarmListener = ArgumentCaptor
                .forClass(AlarmManager.OnAlarmListener.class);
        doNothing().when(mAlarmManager).setWindow(
                anyInt(), anyLong(), anyLong(), eq("DeviceIdleController.motion"), any(), any());
                anyInt(), anyLong(), anyLong(), eq("DeviceIdleController.motion"), any(),
                any(Handler.class));
        doNothing().when(mAlarmManager).setWindow(anyInt(), anyLong(), anyLong(),
                eq("DeviceIdleController.motion_registration"),
                alarmListener.capture(), any());
@@ -2063,7 +2064,8 @@ public class DeviceIdleControllerTest {
        final ArgumentCaptor<AlarmManager.OnAlarmListener> alarmListener = ArgumentCaptor
                .forClass(AlarmManager.OnAlarmListener.class);
        doNothing().when(mAlarmManager).setWindow(
                anyInt(), anyLong(), anyLong(), eq("DeviceIdleController.motion"), any(), any());
                anyInt(), anyLong(), anyLong(), eq("DeviceIdleController.motion"), any(),
                any(Handler.class));
        doNothing().when(mAlarmManager).setWindow(anyInt(), anyLong(), anyLong(),
                eq("DeviceIdleController.motion_registration"),
                alarmListener.capture(), any());
@@ -2130,7 +2132,7 @@ public class DeviceIdleControllerTest {
                        eq(SensorManager.SENSOR_DELAY_NORMAL));
        inOrder.verify(mAlarmManager).setWindow(
                anyInt(), eq(mInjector.nowElapsed + mConstants.MOTION_INACTIVE_TIMEOUT), anyLong(),
                eq("DeviceIdleController.motion"), any(), any());
                eq("DeviceIdleController.motion"), any(), any(Handler.class));
        final SensorEventListener listener = listenerCaptor.getValue();

        // Trigger motion
@@ -2140,7 +2142,7 @@ public class DeviceIdleControllerTest {
        final ArgumentCaptor<Long> registrationTimeCaptor = ArgumentCaptor.forClass(Long.class);
        inOrder.verify(mAlarmManager).setWindow(
                anyInt(), registrationTimeCaptor.capture(), anyLong(),
                eq("DeviceIdleController.motion_registration"), any(), any());
                eq("DeviceIdleController.motion_registration"), any(), any(Handler.class));

        // Make sure the listener is re-registered.
        mInjector.nowElapsed = registrationTimeCaptor.getValue();
@@ -2150,7 +2152,7 @@ public class DeviceIdleControllerTest {
                        eq(SensorManager.SENSOR_DELAY_NORMAL));
        final ArgumentCaptor<Long> timeoutCaptor = ArgumentCaptor.forClass(Long.class);
        inOrder.verify(mAlarmManager).setWindow(anyInt(), timeoutCaptor.capture(), anyLong(),
                eq("DeviceIdleController.motion"), any(), any());
                eq("DeviceIdleController.motion"), any(), any(Handler.class));

        // No motion before timeout
        stationaryListener.motionExpected = false;
+5 −4

File changed.

Preview size limit exceeded, changes collapsed.

Loading