summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Xiang Wang <xwxw@google.com> 2022-11-09 17:19:52 -0800
committer Xiang Wang <xwxw@google.com> 2022-11-21 14:51:09 -0800
commitd7cf4bcbecf0cd3dfa8ba9729fd95d5f47e43e35 (patch)
treea71f950ba00a18214582bd9a3b6f972b7f96098e
parent4ab05d0668a03d67437f4d81f57db94d4c8b68cc (diff)
Always return STANDARD & CUSTOM game modes as available modes
Change the default game mode from UNSUPPORTED to STANDARD when config is missing etc. This will solve the ambiguity on UNSUPPORTED as it's publicly documented to always return from getGameMode when application is not a game instead. Bug: b/243448953 Test: atest GameManagerServiceTests Change-Id: I277735cccd0daf6148aa106cc31bf92f73db018a
-rw-r--r--services/core/java/com/android/server/app/GameManagerService.java72
-rw-r--r--services/core/java/com/android/server/app/GameManagerSettings.java6
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java107
3 files changed, 98 insertions, 87 deletions
diff --git a/services/core/java/com/android/server/app/GameManagerService.java b/services/core/java/com/android/server/app/GameManagerService.java
index 14601da634d9..a3413bfac49c 100644
--- a/services/core/java/com/android/server/app/GameManagerService.java
+++ b/services/core/java/com/android/server/app/GameManagerService.java
@@ -598,6 +598,14 @@ public final class GameManagerService extends IGameManagerService.Stub {
}
}
+ // used to check if the override package config has any game mode config, if not, it's
+ // considered empty and safe to delete from settings
+ boolean hasActiveGameModeConfig() {
+ synchronized (mModeConfigLock) {
+ return !mModeConfigs.isEmpty();
+ }
+ }
+
/**
* GameModeConfiguration contains all the values for all the interventions associated with
* a game mode.
@@ -693,7 +701,8 @@ public final class GameManagerService extends IGameManagerService.Stub {
public boolean isActive() {
return (mGameMode == GameManager.GAME_MODE_STANDARD
|| mGameMode == GameManager.GAME_MODE_PERFORMANCE
- || mGameMode == GameManager.GAME_MODE_BATTERY)
+ || mGameMode == GameManager.GAME_MODE_BATTERY
+ || mGameMode == GameManager.GAME_MODE_CUSTOM)
&& !willGamePerformOptimizations(mGameMode);
}
@@ -741,7 +750,8 @@ public final class GameManagerService extends IGameManagerService.Stub {
}
private int getAvailableGameModesBitfield() {
- int field = 0;
+ int field = modeToBitmask(GameManager.GAME_MODE_CUSTOM)
+ | modeToBitmask(GameManager.GAME_MODE_STANDARD);
synchronized (mModeConfigLock) {
for (final int mode : mModeConfigs.keySet()) {
field |= modeToBitmask(mode);
@@ -753,13 +763,6 @@ public final class GameManagerService extends IGameManagerService.Stub {
if (mPerfModeOptedIn) {
field |= modeToBitmask(GameManager.GAME_MODE_PERFORMANCE);
}
- // The lowest bit is reserved for UNSUPPORTED, STANDARD is supported if we support any
- // other mode.
- if (field > 1) {
- field |= modeToBitmask(GameManager.GAME_MODE_STANDARD);
- } else {
- field |= modeToBitmask(GameManager.GAME_MODE_UNSUPPORTED);
- }
return field;
}
@@ -881,7 +884,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
private final class LocalService extends GameManagerInternal {
@Override
public float getResolutionScalingFactor(String packageName, int userId) {
- final int gameMode = getGameModeFromSettings(packageName, userId);
+ final int gameMode = getGameModeFromSettingsUnchecked(packageName, userId);
return getResolutionScalingFactorInternal(packageName, gameMode, userId);
}
}
@@ -960,7 +963,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
config = mConfigs.get(packageName);
}
if (config == null) {
- return new int[]{};
+ return new int[]{GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM};
}
return config.getAvailableGameModes();
}
@@ -986,12 +989,13 @@ public final class GameManagerService extends IGameManagerService.Stub {
return getAvailableGameModesUnchecked(packageName);
}
- private @GameMode int getGameModeFromSettings(String packageName, @UserIdInt int userId) {
+ private @GameMode int getGameModeFromSettingsUnchecked(String packageName,
+ @UserIdInt int userId) {
synchronized (mLock) {
if (!mSettings.containsKey(userId)) {
Slog.d(TAG, "User ID '" + userId + "' does not have a Game Mode"
- + " selected for package: '" + packageName + "'");
- return GameManager.GAME_MODE_UNSUPPORTED;
+ + " selected for package: '" + packageName + "'");
+ return GameManager.GAME_MODE_STANDARD;
}
return mSettings.get(userId).getGameModeLocked(packageName);
@@ -1024,12 +1028,12 @@ public final class GameManagerService extends IGameManagerService.Stub {
// return a value if the package name is valid. Next, check if the caller has the necessary
// permission and return a value. Do this check last, since it can throw an exception.
if (isValidPackageName(packageName, userId)) {
- return getGameModeFromSettings(packageName, userId);
+ return getGameModeFromSettingsUnchecked(packageName, userId);
}
// Since the package name doesn't match, check the caller has the necessary permission.
checkPermission(Manifest.permission.MANAGE_GAME_MODE);
- return getGameModeFromSettings(packageName, userId);
+ return getGameModeFromSettingsUnchecked(packageName, userId);
}
/**
@@ -1054,7 +1058,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
return null;
}
- final @GameMode int activeGameMode = getGameModeFromSettings(packageName, userId);
+ final @GameMode int activeGameMode = getGameModeFromSettingsUnchecked(packageName, userId);
final GamePackageConfiguration config = getConfig(packageName, userId);
if (config != null) {
final @GameMode int[] optedInGameModes = config.getOptedInGameModes();
@@ -1077,7 +1081,10 @@ public final class GameManagerService extends IGameManagerService.Stub {
}
return gameModeInfoBuilder.build();
} else {
- return new GameModeInfo.Builder().setActiveGameMode(activeGameMode).build();
+ return new GameModeInfo.Builder()
+ .setActiveGameMode(activeGameMode)
+ .setAvailableGameModes(getAvailableGameModesUnchecked(packageName))
+ .build();
}
}
@@ -1474,7 +1481,8 @@ public final class GameManagerService extends IGameManagerService.Stub {
final GamePackageConfiguration packageConfig = getConfig(packageName, userId);
if (gameMode == GameManager.GAME_MODE_STANDARD
|| gameMode == GameManager.GAME_MODE_UNSUPPORTED || packageConfig == null
- || packageConfig.willGamePerformOptimizations(gameMode)) {
+ || packageConfig.willGamePerformOptimizations(gameMode)
+ || packageConfig.getGameModeConfiguration(gameMode) == null) {
resetFps(packageName, userId);
// resolution scaling does not need to be reset as it's now read dynamically on game
// restart, see #getResolutionScalingFactor and CompatModePackages#getCompatScale.
@@ -1562,13 +1570,9 @@ public final class GameManagerService extends IGameManagerService.Stub {
if (!bitFieldContainsModeBitmask(modesBitfield, gameModeToReset)) {
return;
}
- // if the game mode to reset is the only mode other than standard mode or there
- // is device config, the entire package config override is removed.
- if (Integer.bitCount(modesBitfield) <= 2 || deviceConfig == null) {
+ configOverride.removeModeConfig(gameModeToReset);
+ if (!configOverride.hasActiveGameModeConfig()) {
settings.removeConfigOverride(packageName);
- } else {
- // otherwise we reset the mode by removing the game mode config override
- configOverride.removeModeConfig(gameModeToReset);
}
} else {
settings.removeConfigOverride(packageName);
@@ -1596,20 +1600,12 @@ public final class GameManagerService extends IGameManagerService.Stub {
// want to check if we support selectable game modes
modesBitfield &= ~modeToBitmask(GameManager.GAME_MODE_UNSUPPORTED);
if (!bitFieldContainsModeBitmask(modesBitfield, gameMode)) {
- if (bitFieldContainsModeBitmask(modesBitfield,
- GameManager.GAME_MODE_STANDARD)) {
- // If the current set mode isn't supported,
- // but we support STANDARD, then set the mode to STANDARD.
- newGameMode = GameManager.GAME_MODE_STANDARD;
- } else {
- // If we don't support any game modes, then set to UNSUPPORTED
- newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
- }
+ // always default to STANDARD if there is no mode config
+ newGameMode = GameManager.GAME_MODE_STANDARD;
}
- } else if (gameMode != GameManager.GAME_MODE_UNSUPPORTED) {
- // If we have no config for the package, but the configured mode is not
- // UNSUPPORTED, then set to UNSUPPORTED
- newGameMode = GameManager.GAME_MODE_UNSUPPORTED;
+ } else {
+ // always default to STANDARD if there is no package config
+ newGameMode = GameManager.GAME_MODE_STANDARD;
}
return newGameMode;
}
diff --git a/services/core/java/com/android/server/app/GameManagerSettings.java b/services/core/java/com/android/server/app/GameManagerSettings.java
index 1e688371fa4d..9fe0f3669d39 100644
--- a/services/core/java/com/android/server/app/GameManagerSettings.java
+++ b/services/core/java/com/android/server/app/GameManagerSettings.java
@@ -92,7 +92,7 @@ public class GameManagerSettings {
if (mGameModes.containsKey(packageName)) {
return mGameModes.get(packageName);
}
- return GameManager.GAME_MODE_UNSUPPORTED;
+ return GameManager.GAME_MODE_STANDARD;
}
/**
@@ -255,7 +255,7 @@ public class GameManagerSettings {
XmlUtils.skipCurrentTag(parser);
return;
}
- int gameMode = GameManager.GAME_MODE_UNSUPPORTED;
+ int gameMode;
try {
gameMode = parser.getAttributeInt(null, ATTR_GAME_MODE);
} catch (XmlPullParserException e) {
@@ -282,7 +282,7 @@ public class GameManagerSettings {
+ type);
}
}
- if (config.getAvailableGameModes().length > 1) {
+ if (config.hasActiveGameModeConfig()) {
mConfigOverrides.put(name, config);
}
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
index 09d0683bdb4e..17ef0379281f 100644
--- a/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java
@@ -444,7 +444,7 @@ public class GameManagerServiceTests {
}
/**
- * By default game mode is not supported.
+ * By default game mode is set to STANDARD
*/
@Test
public void testGameModeDefaultValue() {
@@ -454,7 +454,7 @@ public class GameManagerServiceTests {
startUser(gameManagerService, USER_ID_1);
mockModifyGameModeGranted();
- assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+ assertEquals(GameManager.GAME_MODE_STANDARD,
gameManagerService.getGameMode(mPackageName, USER_ID_1));
}
@@ -470,7 +470,7 @@ public class GameManagerServiceTests {
mockModifyGameModeGranted();
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_2);
- assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+ assertEquals(GameManager.GAME_MODE_STANDARD,
gameManagerService.getGameMode(mPackageName, USER_ID_2));
}
@@ -486,7 +486,7 @@ public class GameManagerServiceTests {
startUser(gameManagerService, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
mockModifyGameModeGranted();
- assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+ assertEquals(GameManager.GAME_MODE_STANDARD,
gameManagerService.getGameMode(mPackageName, USER_ID_1));
// We need to make sure the mode is supported before setting it.
mockDeviceConfigAll();
@@ -679,7 +679,8 @@ public class GameManagerServiceTests {
public void testDeviceConfigDefault() {
mockDeviceConfigDefault();
mockModifyGameModeGranted();
- checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1));
+ checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -689,7 +690,8 @@ public class GameManagerServiceTests {
public void testDeviceConfigNone() {
mockDeviceConfigNone();
mockModifyGameModeGranted();
- checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1));
+ checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -699,7 +701,8 @@ public class GameManagerServiceTests {
public void testDeviceConfigInvalid() {
mockDeviceConfigInvalid();
mockModifyGameModeGranted();
- checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1));
+ checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -709,7 +712,8 @@ public class GameManagerServiceTests {
public void testDeviceConfigMalformed() {
mockDeviceConfigMalformed();
mockModifyGameModeGranted();
- checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1));
+ checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -727,7 +731,7 @@ public class GameManagerServiceTests {
GameManager.GAME_MODE_PERFORMANCE, "120", "0.3");
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 0.3f);
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 120);
}
@@ -747,7 +751,7 @@ public class GameManagerServiceTests {
GameManager.GAME_MODE_BATTERY, "60", "0.5");
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_BATTERY,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_BATTERY, 0.5f);
checkFps(gameManagerService, GameManager.GAME_MODE_BATTERY, 60);
}
@@ -769,7 +773,8 @@ public class GameManagerServiceTests {
GameManager.GAME_MODE_BATTERY, "60", "0.5");
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 0.3f);
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 120);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_BATTERY, 0.5f);
@@ -863,7 +868,7 @@ public class GameManagerServiceTests {
GameManager.GAME_MODE_PERFORMANCE);
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 0.5f);
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 90);
}
@@ -886,7 +891,7 @@ public class GameManagerServiceTests {
GameManager.GAME_MODE_BATTERY);
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_BATTERY,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_BATTERY, 0.7f);
checkFps(gameManagerService, GameManager.GAME_MODE_BATTERY, 30);
}
@@ -910,7 +915,8 @@ public class GameManagerServiceTests {
gameManagerService.resetGameModeConfigOverride(mPackageName, USER_ID_1, -1);
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 0.5f);
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 90);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_BATTERY, 0.7f);
@@ -939,7 +945,8 @@ public class GameManagerServiceTests {
GameManager.GAME_MODE_BATTERY);
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 0.3f);
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 120);
checkDownscaling(gameManagerService, GameManager.GAME_MODE_BATTERY, 0.7f);
@@ -956,7 +963,7 @@ public class GameManagerServiceTests {
mockModifyGameModeGranted();
checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_BATTERY,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
}
@@ -969,7 +976,8 @@ public class GameManagerServiceTests {
mockDeviceConfigNone();
mockModifyGameModeGranted();
checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -981,7 +989,8 @@ public class GameManagerServiceTests {
mockDeviceConfigNone();
mockModifyGameModeGranted();
checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
- GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -995,7 +1004,7 @@ public class GameManagerServiceTests {
mockModifyGameModeGranted();
checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_BATTERY,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -1009,7 +1018,7 @@ public class GameManagerServiceTests {
mockModifyGameModeGranted();
checkReportedAvailableGameModes(createServiceAndStartUser(USER_ID_1),
GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_BATTERY,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
}
/**
@@ -1181,7 +1190,7 @@ public class GameManagerServiceTests {
/**
* Ensure that, if a game no longer supports any game modes, we set the game mode to
- * UNSUPPORTED
+ * STANDARD
*/
@Test
public void testUnsetInvalidGameMode() throws Exception {
@@ -1192,7 +1201,7 @@ public class GameManagerServiceTests {
startUser(gameManagerService, USER_ID_1);
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
- assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
+ assertEquals(GameManager.GAME_MODE_STANDARD,
gameManagerService.getGameMode(mPackageName, USER_ID_1));
}
@@ -1260,7 +1269,8 @@ public class GameManagerServiceTests {
assertTrue(gameModeInfo.isFpsOverrideAllowed());
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
checkReportedOptedInGameModes(gameManagerService);
assertEquals(new GameModeConfiguration.Builder()
@@ -1286,7 +1296,8 @@ public class GameManagerServiceTests {
assertEquals(GameManager.GAME_MODE_BATTERY, gameModeInfo.getActiveGameMode());
checkReportedAvailableGameModes(gameManagerService,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
checkReportedOptedInGameModes(gameManagerService);
assertNotNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_BATTERY));
@@ -1305,7 +1316,8 @@ public class GameManagerServiceTests {
assertEquals(GameManager.GAME_MODE_PERFORMANCE, gameModeInfo.getActiveGameMode());
checkReportedAvailableGameModes(gameManagerService,
- GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
checkReportedOptedInGameModes(gameManagerService);
assertNotNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_PERFORMANCE));
@@ -1313,7 +1325,7 @@ public class GameManagerServiceTests {
}
@Test
- public void testGetGameModeInfoWithUnsupportedGameMode() {
+ public void testGetGameModeInfoWithDefaultGameModes() {
mockDeviceConfigNone();
mockModifyGameModeGranted();
GameManagerService gameManagerService =
@@ -1321,9 +1333,11 @@ public class GameManagerServiceTests {
startUser(gameManagerService, USER_ID_1);
GameModeInfo gameModeInfo = gameManagerService.getGameModeInfo(mPackageName, USER_ID_1);
- assertEquals(GameManager.GAME_MODE_UNSUPPORTED, gameModeInfo.getActiveGameMode());
- checkReportedAvailableGameModes(gameManagerService);
-
+ assertEquals(GameManager.GAME_MODE_STANDARD, gameModeInfo.getActiveGameMode());
+ checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
+ assertNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_CUSTOM));
+ assertNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_STANDARD));
assertNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_BATTERY));
assertNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_PERFORMANCE));
}
@@ -1363,7 +1377,7 @@ public class GameManagerServiceTests {
GameModeInfo gameModeInfo) {
checkReportedAvailableGameModes(gameManagerService,
GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_BATTERY,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
checkReportedOptedInGameModes(gameManagerService,
GameManager.GAME_MODE_PERFORMANCE, GameManager.GAME_MODE_BATTERY);
assertTrue(gameModeInfo.isFpsOverrideAllowed());
@@ -1381,7 +1395,7 @@ public class GameManagerServiceTests {
assertEquals(GameManager.GAME_MODE_STANDARD, gameModeInfo.getActiveGameMode());
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_BATTERY,
- GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_STANDARD, GameManager.GAME_MODE_CUSTOM);
checkReportedOptedInGameModes(gameManagerService, GameManager.GAME_MODE_BATTERY);
assertNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_BATTERY));
@@ -1399,7 +1413,8 @@ public class GameManagerServiceTests {
assertEquals(GameManager.GAME_MODE_STANDARD, gameModeInfo.getActiveGameMode());
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_STANDARD,
+ GameManager.GAME_MODE_CUSTOM);
checkReportedOptedInGameModes(gameManagerService, GameManager.GAME_MODE_PERFORMANCE);
assertNotNull(gameModeInfo.getGameModeConfiguration(GameManager.GAME_MODE_BATTERY));
@@ -1526,14 +1541,14 @@ public class GameManagerServiceTests {
/* Expected fileOutput (order may vary)
# user 1001:
- com.android.app2 <UID> 0 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.5,fps=60
+ com.android.app2 <UID> 1 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.5,fps=60
com.android.app1 <UID> 1 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.7,fps=30
- com.android.app0 <UID> 0 2 angle=0,scaling=0.6,fps=120 3 angle=0,scaling=0.7,fps=30
+ com.android.app0 <UID> 1 2 angle=0,scaling=0.6,fps=120 3 angle=0,scaling=0.7,fps=30
# user 1002:
- com.android.app2 <UID> 0 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.7,fps=30
+ com.android.app2 <UID> 1 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.7,fps=30
com.android.app1 <UID> 1 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.7,fps=30
- com.android.app0 <UID> 0 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.7,fps=30
+ com.android.app0 <UID> 1 2 angle=0,scaling=0.5,fps=90 3 angle=0,scaling=0.7,fps=30
The current game mode would only be set to non-zero if the current user have that game
installed.
*/
@@ -1550,7 +1565,7 @@ public class GameManagerServiceTests {
assertEquals(splitLine[6], "angle=0,scaling=0.5,fps=60");
splitLine = fileOutput.get(1).split("\\s+");
assertEquals(splitLine[0], "com.android.app1");
- assertEquals(splitLine[2], "0");
+ assertEquals(splitLine[2], "1");
assertEquals(splitLine[3], "2");
assertEquals(splitLine[4], "angle=0,scaling=0.5,fps=90");
assertEquals(splitLine[5], "3");
@@ -1573,7 +1588,7 @@ public class GameManagerServiceTests {
splitLine = fileOutput.get(0).split("\\s+");
assertEquals(splitLine[0], "com.android.app2");
- assertEquals(splitLine[2], "0");
+ assertEquals(splitLine[2], "1");
assertEquals(splitLine[3], "2");
assertEquals(splitLine[4], "angle=0,scaling=0.5,fps=90");
assertEquals(splitLine[5], "3");
@@ -1587,7 +1602,7 @@ public class GameManagerServiceTests {
assertEquals(splitLine[6], "angle=0,scaling=0.7,fps=30");
splitLine = fileOutput.get(2).split("\\s+");
assertEquals(splitLine[0], "com.android.app0");
- assertEquals(splitLine[2], "0");
+ assertEquals(splitLine[2], "1");
assertEquals(splitLine[3], "2");
assertEquals(splitLine[4], "angle=0,scaling=0.5,fps=90");
assertEquals(splitLine[5], "3");
@@ -1608,7 +1623,7 @@ public class GameManagerServiceTests {
startUser(gameManagerService, USER_ID_2);
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1);
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_STANDARD,
- GameManager.GAME_MODE_BATTERY);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_CUSTOM);
assertEquals(gameManagerService.getGameMode(mPackageName, USER_ID_1),
GameManager.GAME_MODE_BATTERY);
@@ -1617,15 +1632,15 @@ public class GameManagerServiceTests {
assertEquals(gameManagerService.getGameMode(mPackageName, USER_ID_2),
GameManager.GAME_MODE_STANDARD);
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_STANDARD,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE);
- gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_2);
- gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE,
+ GameManager.GAME_MODE_CUSTOM);
switchUser(gameManagerService, USER_ID_2, USER_ID_1);
+ assertEquals(gameManagerService.getGameMode(mPackageName, USER_ID_1),
+ GameManager.GAME_MODE_BATTERY);
checkReportedAvailableGameModes(gameManagerService, GameManager.GAME_MODE_STANDARD,
- GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE);
- gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_2);
- gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1);
+ GameManager.GAME_MODE_BATTERY, GameManager.GAME_MODE_PERFORMANCE,
+ GameManager.GAME_MODE_CUSTOM);
}
@Test