Loading services/core/java/com/android/server/app/GameManagerService.java +12 −16 Original line number Diff line number Diff line Loading @@ -142,8 +142,8 @@ public final class GameManagerService extends IGameManagerService.Stub { static final int WRITE_GAME_MODE_INTERVENTION_LIST_FILE = 6; static final int WRITE_DELAY_MILLIS = 10 * 1000; // 10 seconds static final int LOADING_BOOST_MAX_DURATION = 5 * 1000; // 5 seconds static final String PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED = "persist.graphics.game_default_frame_rate.enabled"; static final String PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED = "debug.graphics.game_default_frame_rate.disabled"; static final String PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE = "ro.surface_flinger.game_default_frame_rate_override"; Loading Loading @@ -2211,17 +2211,10 @@ public final class GameManagerService extends IGameManagerService.Stub { nativeSetGameDefaultFrameRateOverride(uid, frameRate); } private float getGameDefaultFrameRate() { final boolean isGameDefaultFrameRateEnabled; private float getGameDefaultFrameRate(boolean isEnabled) { float gameDefaultFrameRate = 0.0f; synchronized (mLock) { isGameDefaultFrameRateEnabled = mSysProps.getBoolean( PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, true); } if (gameDefaultFrameRate()) { gameDefaultFrameRate = isGameDefaultFrameRateEnabled ? mGameDefaultFrameRateValue : 0.0f; gameDefaultFrameRate = isEnabled ? mGameDefaultFrameRateValue : 0.0f; } return gameDefaultFrameRate; } Loading @@ -2237,24 +2230,23 @@ public final class GameManagerService extends IGameManagerService.Stub { } private void toggleGameDefaultFrameRateUnchecked(boolean isEnabled) { // Update system properties. // Here we only need to immediately update games that are in the foreground. // We will update game default frame rate when a game comes into foreground in // MyUidObserver. synchronized (mLock) { if (isEnabled) { mSysProps.set( PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, "true"); PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, "false"); } else { mSysProps.set( PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, "false"); PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, "true"); } } // Update all foreground games' frame rate. synchronized (mUidObserverLock) { for (int uid : mForegroundGameUids) { setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate()); setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate(isEnabled)); } } } Loading Loading @@ -2296,7 +2288,11 @@ public final class GameManagerService extends IGameManagerService.Stub { Slog.v(TAG, "Game power mode ON (process state was changed to foreground)"); mPowerManagerInternal.setPowerMode(Mode.GAME, true); } setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate()); final boolean isGameDefaultFrameRateDisabled = mSysProps.getBoolean( PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, false); setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate(!isGameDefaultFrameRateDisabled)); mForegroundGameUids.add(uid); } } Loading services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java +7 −32 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSess import static com.android.server.app.GameManagerService.CANCEL_GAME_LOADING_MODE; import static com.android.server.app.GameManagerService.Injector; import static com.android.server.app.GameManagerService.LOADING_BOOST_MAX_DURATION; import static com.android.server.app.GameManagerService.PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED; import static com.android.server.app.GameManagerService.PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED; import static com.android.server.app.GameManagerService.PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE; import static com.android.server.app.GameManagerService.SET_GAME_STATE; import static com.android.server.app.GameManagerService.WRITE_DELAY_MILLIS; Loading Loading @@ -2427,8 +2427,8 @@ public class GameManagerServiceTests { ArgumentMatchers.eq(PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE), anyInt())).thenReturn(60); when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(true); ArgumentMatchers.eq(PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED), ArgumentMatchers.eq(false))).thenReturn(false); gameManagerService.onBootCompleted(); // Set up a game in the foreground. Loading @@ -2441,11 +2441,7 @@ public class GameManagerServiceTests { gameManagerService.toggleGameDefaultFrameRate(true); // Verify that: // 1) The system property is set correctly // 2) setDefaultFrameRateOverride is called with correct arguments Mockito.verify(mSysPropsMock).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq("true")); // setDefaultFrameRateOverride is called with correct arguments Mockito.verify(gameManagerService, times(1)) .setGameDefaultFrameRateOverride(ArgumentMatchers.eq(DEFAULT_PACKAGE_UID), ArgumentMatchers.eq(60.0f)); Loading @@ -2461,17 +2457,10 @@ public class GameManagerServiceTests { somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0); // Toggle game default frame rate off. when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(false); gameManagerService.toggleGameDefaultFrameRate(false); // Verify that: // 1) The system property is set correctly // 2) setDefaultFrameRateOverride is called with correct arguments Mockito.verify(mSysPropsMock).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq("false")); // setDefaultFrameRateOverride is called with correct arguments Mockito.verify(gameManagerService).setGameDefaultFrameRateOverride( ArgumentMatchers.eq(DEFAULT_PACKAGE_UID), ArgumentMatchers.eq(0.0f)); Mockito.verify(gameManagerService).setGameDefaultFrameRateOverride( Loading Loading @@ -2504,18 +2493,11 @@ public class GameManagerServiceTests { when(mSysPropsMock.getInt( ArgumentMatchers.eq(PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE), anyInt())).thenReturn(60); when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(true); gameManagerService.toggleGameDefaultFrameRate(true); // Verify that: // 1) System property is never set // 2) setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(mSysPropsMock, never()).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), anyString()); // setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(gameManagerService, never()) .setGameDefaultFrameRateOverride(anyInt(), anyFloat()); Loading @@ -2529,17 +2511,10 @@ public class GameManagerServiceTests { somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0); gameManagerService.mUidObserver.onUidStateChanged( somePackageId, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0); when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(false); gameManagerService.toggleGameDefaultFrameRate(false); // Verify that: // 1) System property is never set // 2) setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(mSysPropsMock, never()).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), anyString()); // setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(gameManagerService, never()) .setGameDefaultFrameRateOverride(anyInt(), anyFloat()); } Loading Loading
services/core/java/com/android/server/app/GameManagerService.java +12 −16 Original line number Diff line number Diff line Loading @@ -142,8 +142,8 @@ public final class GameManagerService extends IGameManagerService.Stub { static final int WRITE_GAME_MODE_INTERVENTION_LIST_FILE = 6; static final int WRITE_DELAY_MILLIS = 10 * 1000; // 10 seconds static final int LOADING_BOOST_MAX_DURATION = 5 * 1000; // 5 seconds static final String PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED = "persist.graphics.game_default_frame_rate.enabled"; static final String PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED = "debug.graphics.game_default_frame_rate.disabled"; static final String PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE = "ro.surface_flinger.game_default_frame_rate_override"; Loading Loading @@ -2211,17 +2211,10 @@ public final class GameManagerService extends IGameManagerService.Stub { nativeSetGameDefaultFrameRateOverride(uid, frameRate); } private float getGameDefaultFrameRate() { final boolean isGameDefaultFrameRateEnabled; private float getGameDefaultFrameRate(boolean isEnabled) { float gameDefaultFrameRate = 0.0f; synchronized (mLock) { isGameDefaultFrameRateEnabled = mSysProps.getBoolean( PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, true); } if (gameDefaultFrameRate()) { gameDefaultFrameRate = isGameDefaultFrameRateEnabled ? mGameDefaultFrameRateValue : 0.0f; gameDefaultFrameRate = isEnabled ? mGameDefaultFrameRateValue : 0.0f; } return gameDefaultFrameRate; } Loading @@ -2237,24 +2230,23 @@ public final class GameManagerService extends IGameManagerService.Stub { } private void toggleGameDefaultFrameRateUnchecked(boolean isEnabled) { // Update system properties. // Here we only need to immediately update games that are in the foreground. // We will update game default frame rate when a game comes into foreground in // MyUidObserver. synchronized (mLock) { if (isEnabled) { mSysProps.set( PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, "true"); PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, "false"); } else { mSysProps.set( PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED, "false"); PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, "true"); } } // Update all foreground games' frame rate. synchronized (mUidObserverLock) { for (int uid : mForegroundGameUids) { setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate()); setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate(isEnabled)); } } } Loading Loading @@ -2296,7 +2288,11 @@ public final class GameManagerService extends IGameManagerService.Stub { Slog.v(TAG, "Game power mode ON (process state was changed to foreground)"); mPowerManagerInternal.setPowerMode(Mode.GAME, true); } setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate()); final boolean isGameDefaultFrameRateDisabled = mSysProps.getBoolean( PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED, false); setGameDefaultFrameRateOverride(uid, getGameDefaultFrameRate(!isGameDefaultFrameRateDisabled)); mForegroundGameUids.add(uid); } } Loading
services/tests/mockingservicestests/src/com/android/server/app/GameManagerServiceTests.java +7 −32 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSess import static com.android.server.app.GameManagerService.CANCEL_GAME_LOADING_MODE; import static com.android.server.app.GameManagerService.Injector; import static com.android.server.app.GameManagerService.LOADING_BOOST_MAX_DURATION; import static com.android.server.app.GameManagerService.PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED; import static com.android.server.app.GameManagerService.PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED; import static com.android.server.app.GameManagerService.PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE; import static com.android.server.app.GameManagerService.SET_GAME_STATE; import static com.android.server.app.GameManagerService.WRITE_DELAY_MILLIS; Loading Loading @@ -2427,8 +2427,8 @@ public class GameManagerServiceTests { ArgumentMatchers.eq(PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE), anyInt())).thenReturn(60); when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(true); ArgumentMatchers.eq(PROPERTY_DEBUG_GFX_GAME_DEFAULT_FRAME_RATE_DISABLED), ArgumentMatchers.eq(false))).thenReturn(false); gameManagerService.onBootCompleted(); // Set up a game in the foreground. Loading @@ -2441,11 +2441,7 @@ public class GameManagerServiceTests { gameManagerService.toggleGameDefaultFrameRate(true); // Verify that: // 1) The system property is set correctly // 2) setDefaultFrameRateOverride is called with correct arguments Mockito.verify(mSysPropsMock).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq("true")); // setDefaultFrameRateOverride is called with correct arguments Mockito.verify(gameManagerService, times(1)) .setGameDefaultFrameRateOverride(ArgumentMatchers.eq(DEFAULT_PACKAGE_UID), ArgumentMatchers.eq(60.0f)); Loading @@ -2461,17 +2457,10 @@ public class GameManagerServiceTests { somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0); // Toggle game default frame rate off. when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(false); gameManagerService.toggleGameDefaultFrameRate(false); // Verify that: // 1) The system property is set correctly // 2) setDefaultFrameRateOverride is called with correct arguments Mockito.verify(mSysPropsMock).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq("false")); // setDefaultFrameRateOverride is called with correct arguments Mockito.verify(gameManagerService).setGameDefaultFrameRateOverride( ArgumentMatchers.eq(DEFAULT_PACKAGE_UID), ArgumentMatchers.eq(0.0f)); Mockito.verify(gameManagerService).setGameDefaultFrameRateOverride( Loading Loading @@ -2504,18 +2493,11 @@ public class GameManagerServiceTests { when(mSysPropsMock.getInt( ArgumentMatchers.eq(PROPERTY_RO_SURFACEFLINGER_GAME_DEFAULT_FRAME_RATE), anyInt())).thenReturn(60); when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(true); gameManagerService.toggleGameDefaultFrameRate(true); // Verify that: // 1) System property is never set // 2) setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(mSysPropsMock, never()).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), anyString()); // setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(gameManagerService, never()) .setGameDefaultFrameRateOverride(anyInt(), anyFloat()); Loading @@ -2529,17 +2511,10 @@ public class GameManagerServiceTests { somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0); gameManagerService.mUidObserver.onUidStateChanged( somePackageId, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0); when(mSysPropsMock.getBoolean( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), ArgumentMatchers.eq(true))).thenReturn(false); gameManagerService.toggleGameDefaultFrameRate(false); // Verify that: // 1) System property is never set // 2) setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(mSysPropsMock, never()).set( ArgumentMatchers.eq(PROPERTY_PERSISTENT_GFX_GAME_DEFAULT_FRAME_RATE_ENABLED), anyString()); // setGameDefaultFrameRateOverride() should never be called if the flag is disabled. Mockito.verify(gameManagerService, never()) .setGameDefaultFrameRateOverride(anyInt(), anyFloat()); } Loading