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

Commit 00a8327e authored by Yanye Li's avatar Yanye Li Committed by Android (Google) Code Review
Browse files

Merge "Power: Add args for sleep/wakeup cmd to disable wakelock" into main

parents 4063c9d8 939bfbbe
Loading
Loading
Loading
Loading
+44 −13
Original line number Original line Diff line number Diff line
@@ -46,17 +46,10 @@ class PowerManagerShellCommand extends ShellCommand {


    private final Context mContext;
    private final Context mContext;
    private final PowerManagerService.BinderService mService;
    private final PowerManagerService.BinderService mService;
    private final IAlarmListener mAlarmListener;
    private IAlarmManager mAlarmManager;
    private IAlarmManager mAlarmManager;


    private SparseArray<WakeLock> mProxWakelocks = new SparseArray<>();
    class PowerManagerShellCommandAlarmListener extends IAlarmListener.Stub {

            public boolean restoreWakelocks = false;
    PowerManagerShellCommand(Context context, PowerManagerService.BinderService service) {
        mContext = context;
        mService = service;
        mAlarmManager =
            IAlarmManager.Stub.asInterface(ServiceManager.getService(Context.ALARM_SERVICE));
        mAlarmListener = new IAlarmListener.Stub() {
            @Override
            @Override
            public void doAlarm(IAlarmCompleteListener callback) throws RemoteException {
            public void doAlarm(IAlarmCompleteListener callback) throws RemoteException {
                mService.wakeUp(
                mService.wakeUp(
@@ -64,8 +57,23 @@ class PowerManagerShellCommand extends ShellCommand {
                        PowerManager.WAKE_REASON_APPLICATION,
                        PowerManager.WAKE_REASON_APPLICATION,
                        "PowerManagerShellCommand",
                        "PowerManagerShellCommand",
                        mContext.getOpPackageName());
                        mContext.getOpPackageName());
                if (restoreWakelocks) {
                    PowerManagerInternal pmInternal =
                            LocalServices.getService(PowerManagerInternal.class);
                    pmInternal.setForceDisableWakelocks(false);
                }
            }
            }
        };
    }
    private final PowerManagerShellCommandAlarmListener mAlarmListener;

    private SparseArray<WakeLock> mProxWakelocks = new SparseArray<>();

    PowerManagerShellCommand(Context context, PowerManagerService.BinderService service) {
        mContext = context;
        mService = service;
        mAlarmManager =
            IAlarmManager.Stub.asInterface(ServiceManager.getService(Context.ALARM_SERVICE));
        mAlarmListener = new PowerManagerShellCommandAlarmListener();
    }
    }


    @Override
    @Override
@@ -248,6 +256,11 @@ class PowerManagerShellCommand extends ShellCommand {
    }
    }


    private int runSleep() {
    private int runSleep() {
        boolean disableWakelocks = "--disable-wakelocks".equals(getNextArg());
        if (disableWakelocks) {
            PowerManagerInternal pmInternal = LocalServices.getService(PowerManagerInternal.class);
            pmInternal.setForceDisableWakelocks(true);
        }
        try {
        try {
            mService.goToSleep(
            mService.goToSleep(
                    SystemClock.uptimeMillis(),
                    SystemClock.uptimeMillis(),
@@ -263,7 +276,16 @@ class PowerManagerShellCommand extends ShellCommand {


    private int runWakeUp() {
    private int runWakeUp() {
        final PrintWriter pw = getOutPrintWriter();
        final PrintWriter pw = getOutPrintWriter();
        String delay = getNextArg();
        String delay = null;
        boolean restoreWakelocks = false;
        while (peekNextArg() != null) {
            String arg = getNextArg();
            if (arg.equals("--restore-wakelocks")) {
                restoreWakelocks = true;
            } else if (arg.chars().allMatch(Character::isDigit)) {
                delay = arg;
            }
        }
        if (delay == null) {
        if (delay == null) {
            try {
            try {
                mService.wakeUp(
                mService.wakeUp(
@@ -275,6 +297,11 @@ class PowerManagerShellCommand extends ShellCommand {
                pw.println("Error: " + e);
                pw.println("Error: " + e);
                return -1;
                return -1;
            }
            }
            if (restoreWakelocks) {
                PowerManagerInternal pmInternal =
                        LocalServices.getService(PowerManagerInternal.class);
                pmInternal.setForceDisableWakelocks(false);
            }
        } else {
        } else {
            long delayMillis;
            long delayMillis;
            try {
            try {
@@ -306,6 +333,7 @@ class PowerManagerShellCommand extends ShellCommand {
                }
                }
                pw.println("Schedule an alarm to wakeup in " + delayMillis +
                pw.println("Schedule an alarm to wakeup in " + delayMillis +
                        " ms, on behalf of " + callingPackage.getPackageName());
                        " ms, on behalf of " + callingPackage.getPackageName());
                mAlarmListener.restoreWakelocks = restoreWakelocks;
                mAlarmManager.set(callingPackage.getPackageName(),
                mAlarmManager.set(callingPackage.getPackageName(),
                        AlarmManager.RTC_WAKEUP, wakeUpTime,
                        AlarmManager.RTC_WAKEUP, wakeUpTime,
                        0, 0, AlarmManager.FLAG_PRIORITIZE,
                        0, 0, AlarmManager.FLAG_PRIORITIZE,
@@ -349,11 +377,14 @@ class PowerManagerShellCommand extends ShellCommand {
        pw.println("    created by set-prox including their held status.");
        pw.println("    created by set-prox including their held status.");
        pw.println("  set-face-down-detector [true|false]");
        pw.println("  set-face-down-detector [true|false]");
        pw.println("    sets whether we use face down detector timeouts or not");
        pw.println("    sets whether we use face down detector timeouts or not");
        pw.println("  sleep");
        pw.println("  sleep (--disable-wakelocks)");
        pw.println("    requests to sleep the device");
        pw.println("    requests to sleep the device");
        pw.println("  wakeup <delay>");
        pw.println("      --disable-wakelocks: Force disable wakelocks before going to sleep.");
        pw.println("  wakeup (<delay>) (--restore-wakelocks)");
        pw.println("    requests to wake up the device. If a delay of milliseconds is specified,");
        pw.println("    requests to wake up the device. If a delay of milliseconds is specified,");
        pw.println("    alarm manager will schedule a wake up after the delay.");
        pw.println("    alarm manager will schedule a wake up after the delay.");
        pw.println("      --restore-wakelocks: Restore force-disabled wakelocks after wakeup.");
        pw.println("        It will not restore wakelocks that are generically disabled.");


        pw.println();
        pw.println();
        Intent.printIntentArgsHelp(pw , "");
        Intent.printIntentArgsHelp(pw , "");