Loading services/core/java/com/android/server/power/PowerManagerShellCommand.java +44 −13 Original line number Original line Diff line number Diff line Loading @@ -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( Loading @@ -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 Loading Loading @@ -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(), Loading @@ -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( Loading @@ -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 { Loading Loading @@ -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, Loading Loading @@ -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 , ""); Loading Loading
services/core/java/com/android/server/power/PowerManagerShellCommand.java +44 −13 Original line number Original line Diff line number Diff line Loading @@ -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( Loading @@ -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 Loading Loading @@ -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(), Loading @@ -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( Loading @@ -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 { Loading Loading @@ -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, Loading Loading @@ -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 , ""); Loading