Check if it's game package before updating configs
Rename "invalid config" to "inactive config and gate the warning behind DEBUG flag, as it's expected for games to opt in game modes Bug: b/240335717 Test: atest GameManagerServiceTests Change-Id: I0aae9bb4c68e01a8d4797fd6595535467f7d1fe6 Merged-In: I0aae9bb4c68e01a8d4797fd6595535467f7d1fe6
This commit is contained in:
@@ -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) {
|
||||||
|
Slog.w(TAG, "Inactive package config for "
|
||||||
+ config.getPackageName() + ":" + config.toString());
|
+ 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);
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user