Merge changes If537a25e,Iee14d6ee,Iac718a6a,I0aae9bb4 into tm-qpr-dev am: 36a9b7e455
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20228877 Change-Id: I9537c8f6cfae558e43004cf2f51a84cc3a711c6f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1324,7 +1324,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
|||||||
try {
|
try {
|
||||||
final float fps = 0.0f;
|
final float fps = 0.0f;
|
||||||
final int uid = mPackageManager.getPackageUidAsUser(packageName, userId);
|
final int uid = mPackageManager.getPackageUidAsUser(packageName, userId);
|
||||||
nativeSetOverrideFrameRate(uid, fps);
|
setOverrideFrameRate(uid, fps);
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1410,7 +1410,7 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
|||||||
try {
|
try {
|
||||||
final float fps = modeConfig.getFps();
|
final float fps = modeConfig.getFps();
|
||||||
final int uid = mPackageManager.getPackageUidAsUser(packageName, userId);
|
final int uid = mPackageManager.getPackageUidAsUser(packageName, userId);
|
||||||
nativeSetOverrideFrameRate(uid, fps);
|
setOverrideFrameRate(uid, fps);
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1419,20 +1419,16 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
|||||||
|
|
||||||
private void updateInterventions(String packageName,
|
private void updateInterventions(String packageName,
|
||||||
@GameMode int gameMode, @UserIdInt int userId) {
|
@GameMode int gameMode, @UserIdInt int userId) {
|
||||||
|
final GamePackageConfiguration packageConfig = getConfig(packageName);
|
||||||
if (gameMode == GameManager.GAME_MODE_STANDARD
|
if (gameMode == GameManager.GAME_MODE_STANDARD
|
||||||
|| gameMode == GameManager.GAME_MODE_UNSUPPORTED) {
|
|| gameMode == GameManager.GAME_MODE_UNSUPPORTED || packageConfig == null
|
||||||
|
|| packageConfig.willGamePerformOptimizations(gameMode)) {
|
||||||
disableCompatScale(packageName);
|
disableCompatScale(packageName);
|
||||||
resetFps(packageName, userId);
|
resetFps(packageName, userId);
|
||||||
return;
|
|
||||||
}
|
|
||||||
final GamePackageConfiguration packageConfig = getConfig(packageName);
|
|
||||||
if (packageConfig == null) {
|
if (packageConfig == null) {
|
||||||
disableCompatScale(packageName);
|
|
||||||
Slog.v(TAG, "Package configuration not found for " + packageName);
|
Slog.v(TAG, "Package configuration not found for " + packageName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (packageConfig.willGamePerformOptimizations(gameMode)) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
updateCompatModeDownscale(packageConfig, packageName, gameMode);
|
updateCompatModeDownscale(packageConfig, packageName, gameMode);
|
||||||
updateFps(packageConfig, packageName, gameMode, userId);
|
updateFps(packageConfig, packageName, gameMode, userId);
|
||||||
@@ -1876,6 +1872,11 @@ public final class GameManagerService extends IGameManagerService.Stub {
|
|||||||
return handlerThread;
|
return handlerThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void setOverrideFrameRate(int uid, float frameRate) {
|
||||||
|
nativeSetOverrideFrameRate(uid, frameRate);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* load dynamic library for frame rate overriding JNI calls
|
* load dynamic library for frame rate overriding JNI calls
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<game-mode-config
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:supportsPerformanceGameMode="true"
|
||||||
|
android:supportsBatteryGameMode="true"
|
||||||
|
android:allowGameAngleDriver="true"
|
||||||
|
android:allowGameDownscaling="true"
|
||||||
|
android:allowGameFpsOverride="true"
|
||||||
|
/>
|
||||||
@@ -68,7 +68,9 @@ import org.junit.After;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentMatchers;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoSession;
|
import org.mockito.MockitoSession;
|
||||||
import org.mockito.quality.Strictness;
|
import org.mockito.quality.Strictness;
|
||||||
|
|
||||||
@@ -88,6 +90,7 @@ public class GameManagerServiceTests {
|
|||||||
private static final String PACKAGE_NAME_INVALID = "com.android.app";
|
private static final String PACKAGE_NAME_INVALID = "com.android.app";
|
||||||
private static final int USER_ID_1 = 1001;
|
private static final int USER_ID_1 = 1001;
|
||||||
private static final int USER_ID_2 = 1002;
|
private static final int USER_ID_2 = 1002;
|
||||||
|
private static final int DEFAULT_PACKAGE_UID = 12345;
|
||||||
|
|
||||||
private MockitoSession mMockingSession;
|
private MockitoSession mMockingSession;
|
||||||
private String mPackageName;
|
private String mPackageName;
|
||||||
@@ -195,6 +198,8 @@ public class GameManagerServiceTests {
|
|||||||
.thenReturn(packages);
|
.thenReturn(packages);
|
||||||
when(mMockPackageManager.getApplicationInfoAsUser(anyString(), anyInt(), anyInt()))
|
when(mMockPackageManager.getApplicationInfoAsUser(anyString(), anyInt(), anyInt()))
|
||||||
.thenReturn(applicationInfo);
|
.thenReturn(applicationInfo);
|
||||||
|
when(mMockPackageManager.getPackageUidAsUser(mPackageName, USER_ID_1)).thenReturn(
|
||||||
|
DEFAULT_PACKAGE_UID);
|
||||||
LocalServices.addService(PowerManagerInternal.class, mMockPowerManager);
|
LocalServices.addService(PowerManagerInternal.class, mMockPowerManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,6 +380,12 @@ public class GameManagerServiceTests {
|
|||||||
"res/xml/game_manager_service_metadata_config_interventions_enabled_no_opt_in.xml");
|
"res/xml/game_manager_service_metadata_config_interventions_enabled_no_opt_in.xml");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void mockInterventionsEnabledAllOptInFromXml() throws Exception {
|
||||||
|
seedGameManagerServiceMetaDataFromFile(mPackageName, 123,
|
||||||
|
"res/xml/game_manager_service_metadata_config_interventions_enabled_all_opt_in"
|
||||||
|
+ ".xml");
|
||||||
|
}
|
||||||
|
|
||||||
private void mockInterventionsDisabledNoOptInFromXml() throws Exception {
|
private void mockInterventionsDisabledNoOptInFromXml() throws Exception {
|
||||||
seedGameManagerServiceMetaDataFromFile(mPackageName, 123,
|
seedGameManagerServiceMetaDataFromFile(mPackageName, 123,
|
||||||
"res/xml/game_manager_service_metadata_config_interventions_disabled_no_opt_in"
|
"res/xml/game_manager_service_metadata_config_interventions_disabled_no_opt_in"
|
||||||
@@ -1477,4 +1488,80 @@ public class GameManagerServiceTests {
|
|||||||
assertEquals(splitLine[6], "angle=0,scaling=0.7,fps=30");
|
assertEquals(splitLine[6], "angle=0,scaling=0.7,fps=30");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testResetInterventions_onDeviceConfigReset() throws Exception {
|
||||||
|
mockModifyGameModeGranted();
|
||||||
|
String configStringBefore =
|
||||||
|
"mode=2,downscaleFactor=1.0,fps=90";
|
||||||
|
when(DeviceConfig.getProperty(anyString(), anyString()))
|
||||||
|
.thenReturn(configStringBefore);
|
||||||
|
mockInterventionsEnabledNoOptInFromXml();
|
||||||
|
GameManagerService gameManagerService = Mockito.spy(new GameManagerService(mMockContext,
|
||||||
|
mTestLooper.getLooper()));
|
||||||
|
startUser(gameManagerService, USER_ID_1);
|
||||||
|
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1);
|
||||||
|
Mockito.verify(gameManagerService).setOverrideFrameRate(
|
||||||
|
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
|
||||||
|
ArgumentMatchers.eq(90.0f));
|
||||||
|
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 90);
|
||||||
|
|
||||||
|
String configStringAfter = "";
|
||||||
|
when(DeviceConfig.getProperty(anyString(), anyString()))
|
||||||
|
.thenReturn(configStringAfter);
|
||||||
|
gameManagerService.updateConfigsForUser(USER_ID_1, false, mPackageName);
|
||||||
|
Mockito.verify(gameManagerService).setOverrideFrameRate(
|
||||||
|
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
|
||||||
|
ArgumentMatchers.eq(0.0f));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testResetInterventions_onInterventionsDisabled() throws Exception {
|
||||||
|
mockModifyGameModeGranted();
|
||||||
|
String configStringBefore =
|
||||||
|
"mode=2,downscaleFactor=1.0,fps=90";
|
||||||
|
when(DeviceConfig.getProperty(anyString(), anyString()))
|
||||||
|
.thenReturn(configStringBefore);
|
||||||
|
mockInterventionsEnabledNoOptInFromXml();
|
||||||
|
GameManagerService gameManagerService = Mockito.spy(new GameManagerService(mMockContext,
|
||||||
|
mTestLooper.getLooper()));
|
||||||
|
startUser(gameManagerService, USER_ID_1);
|
||||||
|
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1);
|
||||||
|
Mockito.verify(gameManagerService).setOverrideFrameRate(
|
||||||
|
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
|
||||||
|
ArgumentMatchers.eq(90.0f));
|
||||||
|
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 90);
|
||||||
|
|
||||||
|
mockInterventionsDisabledNoOptInFromXml();
|
||||||
|
gameManagerService.updateConfigsForUser(USER_ID_1, false, mPackageName);
|
||||||
|
Mockito.verify(gameManagerService).setOverrideFrameRate(
|
||||||
|
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
|
||||||
|
ArgumentMatchers.eq(0.0f));
|
||||||
|
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testResetInterventions_onGameModeOptedIn() throws Exception {
|
||||||
|
mockModifyGameModeGranted();
|
||||||
|
String configStringBefore =
|
||||||
|
"mode=2,downscaleFactor=1.0,fps=90";
|
||||||
|
when(DeviceConfig.getProperty(anyString(), anyString()))
|
||||||
|
.thenReturn(configStringBefore);
|
||||||
|
mockInterventionsEnabledNoOptInFromXml();
|
||||||
|
GameManagerService gameManagerService = Mockito.spy(new GameManagerService(mMockContext,
|
||||||
|
mTestLooper.getLooper()));
|
||||||
|
startUser(gameManagerService, USER_ID_1);
|
||||||
|
|
||||||
|
gameManagerService.setGameMode(mPackageName, GameManager.GAME_MODE_PERFORMANCE, USER_ID_1);
|
||||||
|
Mockito.verify(gameManagerService).setOverrideFrameRate(
|
||||||
|
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
|
||||||
|
ArgumentMatchers.eq(90.0f));
|
||||||
|
checkFps(gameManagerService, GameManager.GAME_MODE_PERFORMANCE, 90);
|
||||||
|
|
||||||
|
mockInterventionsEnabledAllOptInFromXml();
|
||||||
|
gameManagerService.updateConfigsForUser(USER_ID_1, false, mPackageName);
|
||||||
|
Mockito.verify(gameManagerService).setOverrideFrameRate(
|
||||||
|
ArgumentMatchers.eq(DEFAULT_PACKAGE_UID),
|
||||||
|
ArgumentMatchers.eq(0.0f));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user