From 64eb2dbb3c93331c3f963855434bfcbad5e0a5be Mon Sep 17 00:00:00 2001 From: Xiang Wang Date: Thu, 11 Aug 2022 14:45:53 -0700 Subject: [PATCH] Revert the change to allow overriding any game modes through cmd Since the game modes read from getAvailableGameModes API will not include those in override configs, we should only allow overriding game modes predefined for a game here. Bug: b/240335717 Test: adb shell cmd game set --mode 2 --downscale 0.3 $PKG Change-Id: I89d792195cf99577b0d59ec73b0a94010326d6f7 --- .../server/app/GameManagerShellCommand.java | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/app/GameManagerShellCommand.java b/services/core/java/com/android/server/app/GameManagerShellCommand.java index 487d19aa6aba5..6e289b10258ea 100644 --- a/services/core/java/com/android/server/app/GameManagerShellCommand.java +++ b/services/core/java/com/android/server/app/GameManagerShellCommand.java @@ -220,16 +220,40 @@ public class GameManagerShellCommand extends ShellCommand { final GameManagerService gameManagerService = (GameManagerService) ServiceManager.getService(Context.GAME_SERVICE); + boolean batteryModeSupported = false; + boolean perfModeSupported = false; + int [] modes = gameManagerService.getAvailableGameModes(packageName); + + for (int mode : modes) { + if (mode == GameManager.GAME_MODE_PERFORMANCE) { + perfModeSupported = true; + } else if (mode == GameManager.GAME_MODE_BATTERY) { + batteryModeSupported = true; + } + } + switch (gameMode.toLowerCase(Locale.getDefault())) { case "2": case "performance": - gameManagerService.setGameModeConfigOverride(packageName, userId, - GameManager.GAME_MODE_PERFORMANCE, fpsStr, downscaleRatio); + if (perfModeSupported) { + gameManagerService.setGameModeConfigOverride(packageName, userId, + GameManager.GAME_MODE_PERFORMANCE, fpsStr, downscaleRatio); + } else { + pw.println("Game mode: " + gameMode + " not supported by " + + packageName); + return -1; + } break; case "3": case "battery": - gameManagerService.setGameModeConfigOverride(packageName, userId, - GameManager.GAME_MODE_BATTERY, fpsStr, downscaleRatio); + if (batteryModeSupported) { + gameManagerService.setGameModeConfigOverride(packageName, userId, + GameManager.GAME_MODE_BATTERY, fpsStr, downscaleRatio); + } else { + pw.println("Game mode: " + gameMode + " not supported by " + + packageName); + return -1; + } break; default: pw.println("Invalid game mode: " + gameMode);