Check if it's game package before updating configs am: 8e04d2c100

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20228874

Change-Id: Ib3d7fc95a78afbf9ca1bc21ec180f6697a6983d3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Xiang Wang
2022-10-27 17:55:42 +00:00
committed by Automerger Merge Worker
2 changed files with 32 additions and 24 deletions

View File

@@ -333,7 +333,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
removeMessages(POPULATE_GAME_MODE_SETTINGS, msg.obj); removeMessages(POPULATE_GAME_MODE_SETTINGS, msg.obj);
final int userId = (int) msg.obj; final int userId = (int) msg.obj;
final String[] packageNames = getInstalledGamePackageNames(userId); final String[] packageNames = getInstalledGamePackageNames(userId);
updateConfigsForUser(userId, packageNames); updateConfigsForUser(userId, false /*checkGamePackage*/, packageNames);
break; break;
} }
case SET_GAME_STATE: { case SET_GAME_STATE: {
@@ -402,7 +402,8 @@ public final class GameManagerService extends IGameManagerService.Stub {
@Override @Override
public void onPropertiesChanged(Properties properties) { public void onPropertiesChanged(Properties properties) {
final String[] packageNames = properties.getKeyset().toArray(new String[0]); final String[] packageNames = properties.getKeyset().toArray(new String[0]);
updateConfigsForUser(ActivityManager.getCurrentUser(), packageNames); updateConfigsForUser(ActivityManager.getCurrentUser(), true /*checkGamePackage*/,
packageNames);
} }
@Override @Override
@@ -717,7 +718,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
mFps = fpsStr; mFps = fpsStr;
} }
public boolean isValid() { public boolean isActive() {
return (mGameMode == GameManager.GAME_MODE_STANDARD return (mGameMode == GameManager.GAME_MODE_STANDARD
|| mGameMode == GameManager.GAME_MODE_PERFORMANCE || mGameMode == GameManager.GAME_MODE_PERFORMANCE
|| mGameMode == GameManager.GAME_MODE_BATTERY) || mGameMode == GameManager.GAME_MODE_BATTERY)
@@ -809,15 +810,15 @@ public final class GameManagerService extends IGameManagerService.Stub {
* Insert a new GameModeConfiguration * Insert a new GameModeConfiguration
*/ */
public void addModeConfig(GameModeConfiguration config) { public void addModeConfig(GameModeConfiguration config) {
if (config.isValid()) { if (config.isActive()) {
mModeConfigs.put(config.getGameMode(), config); mModeConfigs.put(config.getGameMode(), config);
} else { } else {
Slog.w(TAG, "Invalid game mode config for " Slog.w(TAG, "Attempt to add inactive game mode config for "
+ mPackageName + ":" + config.toString()); + mPackageName + ":" + config.toString());
} }
} }
public boolean isValid() { public boolean isActive() {
return mModeConfigs.size() > 0 || mBatteryModeOptedIn || mPerfModeOptedIn; return mModeConfigs.size() > 0 || mBatteryModeOptedIn || mPerfModeOptedIn;
} }
@@ -1569,20 +1570,27 @@ public final class GameManagerService extends IGameManagerService.Stub {
* @hide * @hide
*/ */
@VisibleForTesting @VisibleForTesting
void updateConfigsForUser(@UserIdInt int userId, String... packageNames) { void updateConfigsForUser(@UserIdInt int userId, boolean checkGamePackage,
String... packageNames) {
if (checkGamePackage) {
packageNames = Arrays.stream(packageNames).filter(
p -> isPackageGame(p, userId)).toArray(String[]::new);
}
try { try {
synchronized (mDeviceConfigLock) { synchronized (mDeviceConfigLock) {
for (final String packageName : packageNames) { for (final String packageName : packageNames) {
final GamePackageConfiguration config = final GamePackageConfiguration config =
new GamePackageConfiguration(packageName, userId); new GamePackageConfiguration(packageName, userId);
if (config.isValid()) { if (config.isActive()) {
if (DEBUG) { if (DEBUG) {
Slog.i(TAG, "Adding config: " + config.toString()); Slog.i(TAG, "Adding config: " + config.toString());
} }
mConfigs.put(packageName, config); mConfigs.put(packageName, config);
} else { } else {
Slog.w(TAG, "Invalid package config for " if (DEBUG) {
+ config.getPackageName() + ":" + config.toString()); Slog.w(TAG, "Inactive package config for "
+ config.getPackageName() + ":" + config.toString());
}
mConfigs.remove(packageName); mConfigs.remove(packageName);
} }
} }
@@ -1760,7 +1768,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
} }
switch (intent.getAction()) { switch (intent.getAction()) {
case ACTION_PACKAGE_ADDED: case ACTION_PACKAGE_ADDED:
updateConfigsForUser(userId, packageName); updateConfigsForUser(userId, true /*checkGamePackage*/, packageName);
break; break;
case ACTION_PACKAGE_REMOVED: case ACTION_PACKAGE_REMOVED:
disableCompatScale(packageName); disableCompatScale(packageName);

View File

@@ -450,13 +450,13 @@ public class GameManagerServiceTests {
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
mockModifyGameModeGranted(); mockModifyGameModeGranted();
assertEquals(GameManager.GAME_MODE_UNSUPPORTED, assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
gameManagerService.getGameMode(mPackageName, USER_ID_1)); gameManagerService.getGameMode(mPackageName, USER_ID_1));
// We need to make sure the mode is supported before setting it. // We need to make sure the mode is supported before setting it.
mockDeviceConfigAll(); mockDeviceConfigAll();
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
assertEquals(GameManager.GAME_MODE_STANDARD, assertEquals(GameManager.GAME_MODE_STANDARD,
gameManagerService.getGameMode(mPackageName, USER_ID_1)); gameManagerService.getGameMode(mPackageName, USER_ID_1));
@@ -534,8 +534,8 @@ public class GameManagerServiceTests {
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
startUser(gameManagerService, USER_ID_2); startUser(gameManagerService, USER_ID_2);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
gameManagerService.updateConfigsForUser(USER_ID_2, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_2, true, mPackageName);
// Set User 1 to Standard // Set User 1 to Standard
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD, USER_ID_1);
@@ -563,7 +563,7 @@ public class GameManagerServiceTests {
if (gameManagerService == null) { if (gameManagerService == null) {
gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper()); gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper());
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
} }
ArraySet<Integer> reportedModes = new ArraySet<>(); ArraySet<Integer> reportedModes = new ArraySet<>();
int[] modes = gameManagerService.getAvailableGameModes(mPackageName); int[] modes = gameManagerService.getAvailableGameModes(mPackageName);
@@ -582,7 +582,7 @@ public class GameManagerServiceTests {
if (gameManagerService == null) { if (gameManagerService == null) {
gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper()); gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper());
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
} }
GameManagerService.GamePackageConfiguration config = GameManagerService.GamePackageConfiguration config =
gameManagerService.getConfig(mPackageName); gameManagerService.getConfig(mPackageName);
@@ -591,7 +591,7 @@ public class GameManagerServiceTests {
private void checkAngleEnabled(GameManagerService gameManagerService, int gameMode, private void checkAngleEnabled(GameManagerService gameManagerService, int gameMode,
boolean angleEnabled) { boolean angleEnabled) {
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
// Validate GamePackageConfiguration returns the correct value. // Validate GamePackageConfiguration returns the correct value.
GameManagerService.GamePackageConfiguration config = GameManagerService.GamePackageConfiguration config =
@@ -604,7 +604,7 @@ public class GameManagerServiceTests {
private void checkLoadingBoost(GameManagerService gameManagerService, int gameMode, private void checkLoadingBoost(GameManagerService gameManagerService, int gameMode,
int loadingBoost) { int loadingBoost) {
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
// Validate GamePackageConfiguration returns the correct value. // Validate GamePackageConfiguration returns the correct value.
GameManagerService.GamePackageConfiguration config = GameManagerService.GamePackageConfiguration config =
@@ -621,7 +621,7 @@ public class GameManagerServiceTests {
if (gameManagerService == null) { if (gameManagerService == null) {
gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper()); gameManagerService = new GameManagerService(mMockContext, mTestLooper.getLooper());
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
} }
GameManagerService.GamePackageConfiguration config = GameManagerService.GamePackageConfiguration config =
gameManagerService.getConfig(mPackageName); gameManagerService.getConfig(mPackageName);
@@ -1091,7 +1091,7 @@ public class GameManagerServiceTests {
GameManagerService gameManagerService = GameManagerService gameManagerService =
new GameManagerService(mMockContext, mTestLooper.getLooper()); new GameManagerService(mMockContext, mTestLooper.getLooper());
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
GameManagerService.GamePackageConfiguration config = GameManagerService.GamePackageConfiguration config =
gameManagerService.getConfig(mPackageName); gameManagerService.getConfig(mPackageName);
assertNull(config.getGameModeConfiguration(GameManager.GAME_MODE_PERFORMANCE)); assertNull(config.getGameModeConfiguration(GameManager.GAME_MODE_PERFORMANCE));
@@ -1109,7 +1109,7 @@ public class GameManagerServiceTests {
new GameManagerService(mMockContext, mTestLooper.getLooper()); new GameManagerService(mMockContext, mTestLooper.getLooper());
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
assertEquals(GameManager.GAME_MODE_UNSUPPORTED, assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
gameManagerService.getGameMode(mPackageName, USER_ID_1)); gameManagerService.getGameMode(mPackageName, USER_ID_1));
} }
@@ -1126,7 +1126,7 @@ public class GameManagerServiceTests {
new GameManagerService(mMockContext, mTestLooper.getLooper()); new GameManagerService(mMockContext, mTestLooper.getLooper());
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_BATTERY, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
assertEquals(GameManager.GAME_MODE_STANDARD, assertEquals(GameManager.GAME_MODE_STANDARD,
gameManagerService.getGameMode(mPackageName, USER_ID_1)); gameManagerService.getGameMode(mPackageName, USER_ID_1));
} }
@@ -1143,7 +1143,7 @@ public class GameManagerServiceTests {
new GameManagerService(mMockContext, mTestLooper.getLooper()); new GameManagerService(mMockContext, mTestLooper.getLooper());
startUser(gameManagerService, USER_ID_1); startUser(gameManagerService, USER_ID_1);
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_UNSUPPORTED, USER_ID_1); gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_UNSUPPORTED, USER_ID_1);
gameManagerService.updateConfigsForUser(USER_ID_1, mPackageName); gameManagerService.updateConfigsForUser(USER_ID_1, true, mPackageName);
assertEquals(GameManager.GAME_MODE_STANDARD, assertEquals(GameManager.GAME_MODE_STANDARD,
gameManagerService.getGameMode(mPackageName, USER_ID_1)); gameManagerService.getGameMode(mPackageName, USER_ID_1));
} }