From a47438cd827ff33a912f373a48b428ff48a8a3db Mon Sep 17 00:00:00 2001 From: Jay Aliomer Date: Tue, 5 May 2020 23:52:48 -0400 Subject: [PATCH] Adding UiModeManager Custom Tests Bug: 152548753 Test: atest UiModeManagerTest Change-Id: I2aa5335da98924713f6c514a6784f248871cc648 --- .../android/server/UiModeManagerService.java | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 70b639846e1ec..26cb208a3d470 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -450,6 +450,14 @@ final class UiModeManagerService extends SystemService { return oldNightMode != mNightMode; } + private static long toMilliSeconds(LocalTime t) { + return t.toNanoOfDay() / 1000; + } + + private static LocalTime fromMilliseconds(long t) { + return LocalTime.ofNanoOfDay(t * 1000); + } + private void registerScreenOffEventLocked() { if (mPowerSave) return; mWaitForScreenOff = true; @@ -1385,8 +1393,11 @@ final class UiModeManagerService extends SystemService { pw.println("UiModeManager service (uimode) commands:"); pw.println(" help"); pw.println(" Print this help text."); - pw.println(" night [yes|no|auto]"); + pw.println(" night [yes|no|auto|custom]"); pw.println(" Set or read night mode."); + pw.println(" time [start|end] "); + pw.println(" Set custom start/end schedule time" + + " (night mode must be set to custom to apply)."); } @Override @@ -1399,6 +1410,8 @@ final class UiModeManagerService extends SystemService { switch (cmd) { case "night": return handleNightMode(); + case "time": + return handleCustomTime(); default: return handleDefaultCommands(cmd); } @@ -1409,6 +1422,34 @@ final class UiModeManagerService extends SystemService { return -1; } + private int handleCustomTime() throws RemoteException { + final String modeStr = getNextArg(); + if (modeStr == null) { + printCustomTime(); + return 0; + } + switch (modeStr) { + case "start": + final String start = getNextArg(); + mInterface.setCustomNightModeStart(toMilliSeconds(LocalTime.parse(start))); + return 0; + case "end": + final String end = getNextArg(); + mInterface.setCustomNightModeEnd(toMilliSeconds(LocalTime.parse(end))); + return 0; + default: + getErrPrintWriter().println("command must be in [start|end]"); + return -1; + } + } + + private void printCustomTime() throws RemoteException { + getOutPrintWriter().println("start " + fromMilliseconds( + mInterface.getCustomNightModeStart()).toString()); + getOutPrintWriter().println("end " + fromMilliseconds( + mInterface.getCustomNightModeEnd()).toString()); + } + private int handleNightMode() throws RemoteException { final PrintWriter err = getErrPrintWriter(); final String modeStr = getNextArg(); @@ -1424,7 +1465,8 @@ final class UiModeManagerService extends SystemService { return 0; } else { err.println("Error: mode must be '" + NIGHT_MODE_STR_YES + "', '" - + NIGHT_MODE_STR_NO + "', or '" + NIGHT_MODE_STR_AUTO + "'"); + + NIGHT_MODE_STR_NO + "', or '" + NIGHT_MODE_STR_AUTO + + "', or '" + NIGHT_MODE_STR_CUSTOM + "'"); return -1; } }