Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db78635e authored by Xiang Wang's avatar Xiang Wang
Browse files

Disallow setting UNSUPPORTED mode to avoid ambiguity

Replace the UNSUPPORTED mode read from settings file with STANDARD.

Bug: b/243448953
Test: atest GameManagerServiceTests GameManagerTest
Change-Id: I503e98447b8f522e9df4fec87f179578d7a21f3e
parent d7cf4bcb
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -187,7 +187,9 @@ public final class GameManager {
     * Sets the game mode for the given package.
     * <p>
     * The caller must have {@link android.Manifest.permission#MANAGE_GAME_MODE}.
     *
     * <p>
     * Setting the game mode on a non-game application or setting a game to
     * {@link #GAME_MODE_UNSUPPORTED} will have no effect.
     * @hide
     */
    @SystemApi
+1 −9
Original line number Diff line number Diff line
@@ -50,15 +50,11 @@ public final class GameManagerTests {
        mPackageName = mContext.getPackageName();

        // Reset the Game Mode for the test app, since it persists across invocations.
        mGameManager.setGameMode(mPackageName, GameManager.GAME_MODE_UNSUPPORTED);
        mGameManager.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD);
    }

    @Test
    public void testPublicApiGameModeGetterSetter() {
        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
                mGameManager.getGameMode());

        mGameManager.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD);
        assertEquals(GameManager.GAME_MODE_STANDARD,
                mGameManager.getGameMode());

@@ -73,10 +69,6 @@ public final class GameManagerTests {

    @Test
    public void testPrivilegedGameModeGetterSetter() {
        assertEquals(GameManager.GAME_MODE_UNSUPPORTED,
                mGameManager.getGameMode(mPackageName));

        mGameManager.setGameMode(mPackageName, GameManager.GAME_MODE_STANDARD);
        assertEquals(GameManager.GAME_MODE_STANDARD,
                mGameManager.getGameMode(mPackageName));

+2 −2
Original line number Diff line number Diff line
@@ -1098,8 +1098,8 @@ public final class GameManagerService extends IGameManagerService.Stub {
            throws SecurityException {
        checkPermission(Manifest.permission.MANAGE_GAME_MODE);

        if (!isPackageGame(packageName, userId)) {
            // Restrict to games only.
        if (!isPackageGame(packageName, userId) || gameMode == GameManager.GAME_MODE_UNSUPPORTED) {
            // Restrict to games and valid game modes only.
            return;
        }

+6 −1
Original line number Diff line number Diff line
@@ -90,7 +90,12 @@ public class GameManagerSettings {
     */
    int getGameModeLocked(String packageName) {
        if (mGameModes.containsKey(packageName)) {
            return mGameModes.get(packageName);
            final int gameMode = mGameModes.get(packageName);
            if (gameMode == GameManager.GAME_MODE_UNSUPPORTED) {
                // force replace cached UNSUPPORTED mode with STANDARD starting in U
                return GameManager.GAME_MODE_STANDARD;
            }
            return gameMode;
        }
        return GameManager.GAME_MODE_STANDARD;
    }
+1 −1
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ public class GameManagerServiceSettingsTests {
        final Context context = InstrumentationRegistry.getContext();
        GameManagerSettings settings = new GameManagerSettings(context.getFilesDir());
        assertTrue(settings.readPersistentDataLocked());
        assertEquals(0, settings.getGameModeLocked(PACKAGE_NAME_1));
        assertEquals(1, settings.getGameModeLocked(PACKAGE_NAME_1));
        assertEquals(2, settings.getGameModeLocked(PACKAGE_NAME_2));
        assertEquals(3, settings.getGameModeLocked(PACKAGE_NAME_3));