Loading services/core/java/com/android/server/wm/WindowManagerShellCommand.java +111 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,12 @@ public class WindowManagerShellCommand extends ShellCommand { return runResetLetterboxStyle(pw); case "set-sandbox-display-apis": return runSandboxDisplayApis(pw); case "set-multi-window-config": return runSetMultiWindowConfig(); case "get-multi-window-config": return runGetMultiWindowConfig(pw); case "reset-multi-window-config": return runResetMultiWindowConfig(); case "reset": return runReset(pw); case "disable-blur": Loading Loading @@ -815,6 +821,80 @@ public class WindowManagerShellCommand extends ShellCommand { return 0; } private int runSetMultiWindowConfig() { if (peekNextArg() == null) { getErrPrintWriter().println("Error: No arguments provided."); } int result = 0; while (peekNextArg() != null) { String arg = getNextArg(); switch (arg) { case "--supportsNonResizable": result += runSetSupportsNonResizableMultiWindow(); break; case "--respectsActivityMinWidthHeight": result += runSetRespectsActivityMinWidthHeightMultiWindow(); break; default: getErrPrintWriter().println( "Error: Unrecognized multi window option: " + arg); return -1; } } return result == 0 ? 0 : -1; } private int runSetSupportsNonResizableMultiWindow() { final String arg = getNextArg(); if (!arg.equals("-1") && !arg.equals("0") && !arg.equals("1")) { getErrPrintWriter().println("Error: a config value of [-1, 0, 1] must be provided as" + " an argument for supportsNonResizableMultiWindow"); return -1; } final int configValue = Integer.parseInt(arg); synchronized (mInternal.mAtmService.mGlobalLock) { mInternal.mAtmService.mSupportsNonResizableMultiWindow = configValue; } return 0; } private int runSetRespectsActivityMinWidthHeightMultiWindow() { final String arg = getNextArg(); if (!arg.equals("-1") && !arg.equals("0") && !arg.equals("1")) { getErrPrintWriter().println("Error: a config value of [-1, 0, 1] must be provided as" + " an argument for respectsActivityMinWidthHeightMultiWindow"); return -1; } final int configValue = Integer.parseInt(arg); synchronized (mInternal.mAtmService.mGlobalLock) { mInternal.mAtmService.mRespectsActivityMinWidthHeightMultiWindow = configValue; } return 0; } private int runGetMultiWindowConfig(PrintWriter pw) { synchronized (mInternal.mAtmService.mGlobalLock) { pw.println("Supports non-resizable in multi window: " + mInternal.mAtmService.mSupportsNonResizableMultiWindow); pw.println("Respects activity min width/height in multi window: " + mInternal.mAtmService.mRespectsActivityMinWidthHeightMultiWindow); } return 0; } private int runResetMultiWindowConfig() { final int supportsNonResizable = mInternal.mContext.getResources().getInteger( com.android.internal.R.integer.config_supportsNonResizableMultiWindow); final int respectsActivityMinWidthHeight = mInternal.mContext.getResources().getInteger( com.android.internal.R.integer.config_respectsActivityMinWidthHeightMultiWindow); synchronized (mInternal.mAtmService.mGlobalLock) { mInternal.mAtmService.mSupportsNonResizableMultiWindow = supportsNonResizable; mInternal.mAtmService.mRespectsActivityMinWidthHeightMultiWindow = respectsActivityMinWidthHeight; } return 0; } private void resetLetterboxStyle() { synchronized (mInternal.mGlobalLock) { mLetterboxConfiguration.resetFixedOrientationLetterboxAspectRatio(); Loading Loading @@ -879,6 +959,9 @@ public class WindowManagerShellCommand extends ShellCommand { // set-sandbox-display-apis mInternal.setSandboxDisplayApis(displayId, /* sandboxDisplayApis= */ true); // set-multi-window-config runResetMultiWindowConfig(); pw.println("Reset all settings for displayId=" + displayId); return 0; } Loading Loading @@ -916,6 +999,7 @@ public class WindowManagerShellCommand extends ShellCommand { pw.println(" Size Compat Mode."); printLetterboxHelp(pw); printMultiWindowConfigHelp(pw); pw.println(" reset [-d DISPLAY_ID]"); pw.println(" Reset all override settings."); Loading Loading @@ -969,4 +1053,31 @@ public class WindowManagerShellCommand extends ShellCommand { pw.println(" get-letterbox-style"); pw.println(" Prints letterbox style configuration."); } private void printMultiWindowConfigHelp(PrintWriter pw) { pw.println(" set-multi-window-config"); pw.println(" Sets options to determine if activity should be shown in multi window:"); pw.println(" --supportsNonResizable [configValue]"); pw.println(" Whether the device supports non-resizable activity in multi window."); pw.println(" -1: The device doesn't support non-resizable in multi window."); pw.println(" 0: The device supports non-resizable in multi window only if"); pw.println(" this is a large screen device."); pw.println(" 1: The device always supports non-resizable in multi window."); pw.println(" --respectsActivityMinWidthHeight [configValue]"); pw.println(" Whether the device checks the activity min width/height to determine "); pw.println(" if it can be shown in multi window."); pw.println(" -1: The device ignores the activity min width/height when determining"); pw.println(" if it can be shown in multi window."); pw.println(" 0: If this is a small screen, the device compares the activity min"); pw.println(" width/height with the min multi window modes dimensions"); pw.println(" the device supports to determine if the activity can be shown in"); pw.println(" multi window."); pw.println(" 1: The device always compare the activity min width/height with the"); pw.println(" min multi window dimensions the device supports to determine if"); pw.println(" the activity can be shown in multi window."); pw.println(" get-multi-window-config"); pw.println(" Prints values of the multi window config options."); pw.println(" reset-multi-window-config"); pw.println(" Resets overrides to default values of the multi window config options."); } } Loading
services/core/java/com/android/server/wm/WindowManagerShellCommand.java +111 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,12 @@ public class WindowManagerShellCommand extends ShellCommand { return runResetLetterboxStyle(pw); case "set-sandbox-display-apis": return runSandboxDisplayApis(pw); case "set-multi-window-config": return runSetMultiWindowConfig(); case "get-multi-window-config": return runGetMultiWindowConfig(pw); case "reset-multi-window-config": return runResetMultiWindowConfig(); case "reset": return runReset(pw); case "disable-blur": Loading Loading @@ -815,6 +821,80 @@ public class WindowManagerShellCommand extends ShellCommand { return 0; } private int runSetMultiWindowConfig() { if (peekNextArg() == null) { getErrPrintWriter().println("Error: No arguments provided."); } int result = 0; while (peekNextArg() != null) { String arg = getNextArg(); switch (arg) { case "--supportsNonResizable": result += runSetSupportsNonResizableMultiWindow(); break; case "--respectsActivityMinWidthHeight": result += runSetRespectsActivityMinWidthHeightMultiWindow(); break; default: getErrPrintWriter().println( "Error: Unrecognized multi window option: " + arg); return -1; } } return result == 0 ? 0 : -1; } private int runSetSupportsNonResizableMultiWindow() { final String arg = getNextArg(); if (!arg.equals("-1") && !arg.equals("0") && !arg.equals("1")) { getErrPrintWriter().println("Error: a config value of [-1, 0, 1] must be provided as" + " an argument for supportsNonResizableMultiWindow"); return -1; } final int configValue = Integer.parseInt(arg); synchronized (mInternal.mAtmService.mGlobalLock) { mInternal.mAtmService.mSupportsNonResizableMultiWindow = configValue; } return 0; } private int runSetRespectsActivityMinWidthHeightMultiWindow() { final String arg = getNextArg(); if (!arg.equals("-1") && !arg.equals("0") && !arg.equals("1")) { getErrPrintWriter().println("Error: a config value of [-1, 0, 1] must be provided as" + " an argument for respectsActivityMinWidthHeightMultiWindow"); return -1; } final int configValue = Integer.parseInt(arg); synchronized (mInternal.mAtmService.mGlobalLock) { mInternal.mAtmService.mRespectsActivityMinWidthHeightMultiWindow = configValue; } return 0; } private int runGetMultiWindowConfig(PrintWriter pw) { synchronized (mInternal.mAtmService.mGlobalLock) { pw.println("Supports non-resizable in multi window: " + mInternal.mAtmService.mSupportsNonResizableMultiWindow); pw.println("Respects activity min width/height in multi window: " + mInternal.mAtmService.mRespectsActivityMinWidthHeightMultiWindow); } return 0; } private int runResetMultiWindowConfig() { final int supportsNonResizable = mInternal.mContext.getResources().getInteger( com.android.internal.R.integer.config_supportsNonResizableMultiWindow); final int respectsActivityMinWidthHeight = mInternal.mContext.getResources().getInteger( com.android.internal.R.integer.config_respectsActivityMinWidthHeightMultiWindow); synchronized (mInternal.mAtmService.mGlobalLock) { mInternal.mAtmService.mSupportsNonResizableMultiWindow = supportsNonResizable; mInternal.mAtmService.mRespectsActivityMinWidthHeightMultiWindow = respectsActivityMinWidthHeight; } return 0; } private void resetLetterboxStyle() { synchronized (mInternal.mGlobalLock) { mLetterboxConfiguration.resetFixedOrientationLetterboxAspectRatio(); Loading Loading @@ -879,6 +959,9 @@ public class WindowManagerShellCommand extends ShellCommand { // set-sandbox-display-apis mInternal.setSandboxDisplayApis(displayId, /* sandboxDisplayApis= */ true); // set-multi-window-config runResetMultiWindowConfig(); pw.println("Reset all settings for displayId=" + displayId); return 0; } Loading Loading @@ -916,6 +999,7 @@ public class WindowManagerShellCommand extends ShellCommand { pw.println(" Size Compat Mode."); printLetterboxHelp(pw); printMultiWindowConfigHelp(pw); pw.println(" reset [-d DISPLAY_ID]"); pw.println(" Reset all override settings."); Loading Loading @@ -969,4 +1053,31 @@ public class WindowManagerShellCommand extends ShellCommand { pw.println(" get-letterbox-style"); pw.println(" Prints letterbox style configuration."); } private void printMultiWindowConfigHelp(PrintWriter pw) { pw.println(" set-multi-window-config"); pw.println(" Sets options to determine if activity should be shown in multi window:"); pw.println(" --supportsNonResizable [configValue]"); pw.println(" Whether the device supports non-resizable activity in multi window."); pw.println(" -1: The device doesn't support non-resizable in multi window."); pw.println(" 0: The device supports non-resizable in multi window only if"); pw.println(" this is a large screen device."); pw.println(" 1: The device always supports non-resizable in multi window."); pw.println(" --respectsActivityMinWidthHeight [configValue]"); pw.println(" Whether the device checks the activity min width/height to determine "); pw.println(" if it can be shown in multi window."); pw.println(" -1: The device ignores the activity min width/height when determining"); pw.println(" if it can be shown in multi window."); pw.println(" 0: If this is a small screen, the device compares the activity min"); pw.println(" width/height with the min multi window modes dimensions"); pw.println(" the device supports to determine if the activity can be shown in"); pw.println(" multi window."); pw.println(" 1: The device always compare the activity min width/height with the"); pw.println(" min multi window dimensions the device supports to determine if"); pw.println(" the activity can be shown in multi window."); pw.println(" get-multi-window-config"); pw.println(" Prints values of the multi window config options."); pw.println(" reset-multi-window-config"); pw.println(" Resets overrides to default values of the multi window config options."); } }