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

Commit b02ffa5f authored by Kevin Gabayan's avatar Kevin Gabayan Committed by Android (Google) Code Review
Browse files

Merge "SENSING_TIMEOUT goes to STATE_INACTIVE. Bug: 27821977" into nyc-dev

parents 35a306cc 92f15e65
Loading
Loading
Loading
Loading
+36 −2
Original line number Original line Diff line number Diff line
@@ -198,6 +198,7 @@ public class DeviceIdleController extends SystemService
    private long mNextIdleDelay;
    private long mNextIdleDelay;
    private long mNextLightIdleDelay;
    private long mNextLightIdleDelay;
    private long mNextLightAlarmTime;
    private long mNextLightAlarmTime;
    private long mNextSensingTimeoutAlarmTime;
    private long mCurIdleBudget;
    private long mCurIdleBudget;
    private long mMaintenanceStartTime;
    private long mMaintenanceStartTime;


@@ -339,6 +340,18 @@ public class DeviceIdleController extends SystemService
        }
        }
    };
    };


    private final AlarmManager.OnAlarmListener mSensingTimeoutAlarmListener
            = new AlarmManager.OnAlarmListener() {
        @Override
        public void onAlarm() {
            if (mState == STATE_SENSING) {
                synchronized (DeviceIdleController.this) {
                    becomeInactiveIfAppropriateLocked();
                }
            }
        }
    };

    private final AlarmManager.OnAlarmListener mDeepAlarmListener
    private final AlarmManager.OnAlarmListener mDeepAlarmListener
            = new AlarmManager.OnAlarmListener() {
            = new AlarmManager.OnAlarmListener() {
        @Override
        @Override
@@ -924,6 +937,11 @@ public class DeviceIdleController extends SystemService
    @Override
    @Override
    public void onAnyMotionResult(int result) {
    public void onAnyMotionResult(int result) {
        if (DEBUG) Slog.d(TAG, "onAnyMotionResult(" + result + ")");
        if (DEBUG) Slog.d(TAG, "onAnyMotionResult(" + result + ")");
        if (result != AnyMotionDetector.RESULT_UNKNOWN) {
            synchronized (this) {
                cancelSensingTimeoutAlarmLocked();
            }
        }
        if (result == AnyMotionDetector.RESULT_MOVED) {
        if (result == AnyMotionDetector.RESULT_MOVED) {
            if (DEBUG) Slog.d(TAG, "RESULT_MOVED received.");
            if (DEBUG) Slog.d(TAG, "RESULT_MOVED received.");
            synchronized (this) {
            synchronized (this) {
@@ -1746,6 +1764,7 @@ public class DeviceIdleController extends SystemService
        mNextIdleDelay = 0;
        mNextIdleDelay = 0;
        mNextLightIdleDelay = 0;
        mNextLightIdleDelay = 0;
        cancelAlarmLocked();
        cancelAlarmLocked();
        cancelSensingTimeoutAlarmLocked();
        cancelLocatingLocked();
        cancelLocatingLocked();
        stopMonitoringMotionLocked();
        stopMonitoringMotionLocked();
        mAnyMotionDetector.stop();
        mAnyMotionDetector.stop();
@@ -1866,15 +1885,16 @@ public class DeviceIdleController extends SystemService
                mState = STATE_SENSING;
                mState = STATE_SENSING;
                if (DEBUG) Slog.d(TAG, "Moved from STATE_IDLE_PENDING to STATE_SENSING.");
                if (DEBUG) Slog.d(TAG, "Moved from STATE_IDLE_PENDING to STATE_SENSING.");
                EventLogTags.writeDeviceIdle(mState, reason);
                EventLogTags.writeDeviceIdle(mState, reason);
                scheduleAlarmLocked(mConstants.SENSING_TIMEOUT, false);
                scheduleSensingTimeoutAlarmLocked(mConstants.SENSING_TIMEOUT);
                cancelLocatingLocked();
                cancelLocatingLocked();
                mAnyMotionDetector.checkForAnyMotion();
                mNotMoving = false;
                mNotMoving = false;
                mLocated = false;
                mLocated = false;
                mLastGenericLocation = null;
                mLastGenericLocation = null;
                mLastGpsLocation = null;
                mLastGpsLocation = null;
                mAnyMotionDetector.checkForAnyMotion();
                break;
                break;
            case STATE_SENSING:
            case STATE_SENSING:
                cancelSensingTimeoutAlarmLocked();
                mState = STATE_LOCATING;
                mState = STATE_LOCATING;
                if (DEBUG) Slog.d(TAG, "Moved from STATE_SENSING to STATE_LOCATING.");
                if (DEBUG) Slog.d(TAG, "Moved from STATE_SENSING to STATE_LOCATING.");
                EventLogTags.writeDeviceIdle(mState, reason);
                EventLogTags.writeDeviceIdle(mState, reason);
@@ -2161,6 +2181,13 @@ public class DeviceIdleController extends SystemService
        }
        }
    }
    }


    void cancelSensingTimeoutAlarmLocked() {
        if (mNextSensingTimeoutAlarmTime != 0) {
            mNextSensingTimeoutAlarmTime = 0;
            mAlarmManager.cancel(mSensingTimeoutAlarmListener);
        }
    }

    void scheduleAlarmLocked(long delay, boolean idleUntil) {
    void scheduleAlarmLocked(long delay, boolean idleUntil) {
        if (DEBUG) Slog.d(TAG, "scheduleAlarmLocked(" + delay + ", " + idleUntil + ")");
        if (DEBUG) Slog.d(TAG, "scheduleAlarmLocked(" + delay + ", " + idleUntil + ")");
        if (mMotionSensor == null) {
        if (mMotionSensor == null) {
@@ -2194,6 +2221,13 @@ public class DeviceIdleController extends SystemService
                mNextLightAlarmTime, "DeviceIdleController.light", mLightAlarmListener, mHandler);
                mNextLightAlarmTime, "DeviceIdleController.light", mLightAlarmListener, mHandler);
    }
    }


    void scheduleSensingTimeoutAlarmLocked(long delay) {
        if (DEBUG) Slog.d(TAG, "scheduleSensingAlarmLocked(" + delay + ")");
        mNextSensingTimeoutAlarmTime = SystemClock.elapsedRealtime() + delay;
        mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, mNextSensingTimeoutAlarmTime,
            "DeviceIdleController.sensing", mSensingTimeoutAlarmListener, mHandler);
    }

    private static int[] buildAppIdArray(ArrayMap<String, Integer> systemApps,
    private static int[] buildAppIdArray(ArrayMap<String, Integer> systemApps,
            ArrayMap<String, Integer> userApps, SparseBooleanArray outAppIds) {
            ArrayMap<String, Integer> userApps, SparseBooleanArray outAppIds) {
        outAppIds.clear();
        outAppIds.clear();