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

Commit 015f9609 authored by Chris Tate's avatar Chris Tate Committed by Android (Google) Code Review
Browse files

Merge "Don't send idle-maint trigger broadcast as ordered" into pi-dev

parents 160261a5 f7784064
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -14830,7 +14830,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                    .setPackage("android")
                    .setPackage("android")
                    .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
                    .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
            broadcastIntent(null, intent, null, null, 0, null, null, null,
            broadcastIntent(null, intent, null, null, 0, null, null, null,
                    OP_NONE, null, true, false, UserHandle.USER_ALL);
                    OP_NONE, null, false, false, UserHandle.USER_ALL);
        } finally {
        } finally {
            Binder.restoreCallingIdentity(ident);
            Binder.restoreCallingIdentity(ident);
        }
        }
+27 −23
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.job.controllers;
import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock;
import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock;


import android.app.AlarmManager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
@@ -101,18 +100,19 @@ public final class IdleController extends StateController {


    final class IdlenessTracker extends BroadcastReceiver {
    final class IdlenessTracker extends BroadcastReceiver {
        private AlarmManager mAlarm;
        private AlarmManager mAlarm;
        private PendingIntent mIdleTriggerIntent;

        boolean mIdle;
        // After construction, mutations of idle/screen-on state will only happen
        boolean mScreenOn;
        // on the main looper thread, either in onReceive() or in an alarm callback.
        private boolean mIdle;
        private boolean mScreenOn;

        private AlarmManager.OnAlarmListener mIdleAlarmListener = () -> {
            handleIdleTrigger();
        };


        public IdlenessTracker() {
        public IdlenessTracker() {
            mAlarm = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
            mAlarm = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);


            Intent intent = new Intent(ActivityManagerService.ACTION_TRIGGER_IDLE)
                    .setPackage("android")
                    .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
            mIdleTriggerIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);

            // At boot we presume that the user has just "interacted" with the
            // At boot we presume that the user has just "interacted" with the
            // device in some meaningful way.
            // device in some meaningful way.
            mIdle = false;
            mIdle = false;
@@ -150,7 +150,7 @@ public final class IdleController extends StateController {
                }
                }
                mScreenOn = true;
                mScreenOn = true;
                //cancel the alarm
                //cancel the alarm
                mAlarm.cancel(mIdleTriggerIntent);
                mAlarm.cancel(mIdleAlarmListener);
                if (mIdle) {
                if (mIdle) {
                // possible transition to not-idle
                // possible transition to not-idle
                    mIdle = false;
                    mIdle = false;
@@ -169,8 +169,13 @@ public final class IdleController extends StateController {
                }
                }
                mScreenOn = false;
                mScreenOn = false;
                mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                mAlarm.setWindow(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                        when, mIdleWindowSlop, mIdleTriggerIntent);
                        when, mIdleWindowSlop, "JS idleness", mIdleAlarmListener, null);
            } else if (action.equals(ActivityManagerService.ACTION_TRIGGER_IDLE)) {
            } else if (action.equals(ActivityManagerService.ACTION_TRIGGER_IDLE)) {
                handleIdleTrigger();
            }
        }

        private void handleIdleTrigger() {
            // idle time starts now. Do not set mIdle if screen is on.
            // idle time starts now. Do not set mIdle if screen is on.
            if (!mIdle && !mScreenOn) {
            if (!mIdle && !mScreenOn) {
                if (DEBUG) {
                if (DEBUG) {
@@ -186,7 +191,6 @@ public final class IdleController extends StateController {
            }
            }
        }
        }
    }
    }
    }


    @Override
    @Override
    public void dumpControllerStateLocked(IndentingPrintWriter pw,
    public void dumpControllerStateLocked(IndentingPrintWriter pw,