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

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

Merge "Executor version of setWindow() and setExactAndAllowWhileIdle()"

parents 7094b3b8 00790871
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