GameManagerService: Only apply game mode when the service is on the TOP
Bug: 288909408 Test: check powerhint while Genshin is downloading data on the foreground Change-Id: I659ce7e7e7583f74ec874ab4a23faf18463720ce
This commit is contained in:
@@ -2166,7 +2166,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
||||
@Override
|
||||
public void onUidStateChanged(int uid, int procState, long procStateSeq, int capability) {
|
||||
synchronized (mUidObserverLock) {
|
||||
if (ActivityManager.isProcStateBackground(procState)) {
|
||||
if (procState != ActivityManager.PROCESS_STATE_TOP) {
|
||||
disableGameMode(uid);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2221,7 +2221,7 @@ public class GameManagerServiceTests {
|
||||
String[] packages = {mPackageName};
|
||||
when(mMockPackageManager.getPackagesForUid(DEFAULT_PACKAGE_UID)).thenReturn(packages);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TOP, 0, 0);
|
||||
verify(mMockPowerManager, times(1)).setPowerMode(Mode.GAME, true);
|
||||
}
|
||||
|
||||
@@ -2238,12 +2238,12 @@ public class GameManagerServiceTests {
|
||||
doAnswer(inv -> powerState.put(inv.getArgument(0), inv.getArgument(1)))
|
||||
.when(mMockPowerManager).setPowerMode(anyInt(), anyBoolean());
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TOP, 0, 0);
|
||||
assertTrue(powerState.get(Mode.GAME));
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND, 0, 0);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
somePackageId, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
|
||||
somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0);
|
||||
assertTrue(powerState.get(Mode.GAME));
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
somePackageId, ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND, 0, 0);
|
||||
@@ -2259,14 +2259,14 @@ public class GameManagerServiceTests {
|
||||
String[] packages2 = {someGamePkg};
|
||||
int somePackageId = DEFAULT_PACKAGE_UID + 1;
|
||||
when(mMockPackageManager.getPackagesForUid(somePackageId)).thenReturn(packages2);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TOP, 0, 0);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
somePackageId, ActivityManager.PROCESS_STATE_TOP, 0, 0);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
somePackageId, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND, 0, 0);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
somePackageId, ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND, 0, 0);
|
||||
verify(mMockPowerManager, times(1)).setPowerMode(Mode.GAME, true);
|
||||
verify(mMockPowerManager, times(1)).setPowerMode(Mode.GAME, false);
|
||||
}
|
||||
@@ -2277,9 +2277,9 @@ public class GameManagerServiceTests {
|
||||
String[] packages = {mPackageName};
|
||||
when(mMockPackageManager.getPackagesForUid(DEFAULT_PACKAGE_UID)).thenReturn(packages);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TOP, 0, 0);
|
||||
gameManagerService.mUidObserver.onUidStateChanged(
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND, 0, 0);
|
||||
DEFAULT_PACKAGE_UID, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, 0);
|
||||
verify(mMockPowerManager, times(1)).setPowerMode(Mode.GAME, false);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user