diff options
| -rw-r--r-- | core/res/AndroidManifest.xml | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/app/GameManagerService.java | 53 | ||||
| -rw-r--r-- | services/tests/servicestests/AndroidManifest.xml | 2 |
3 files changed, 26 insertions, 30 deletions
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 3cc9afc95c51..c144451c1b94 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -5584,7 +5584,6 @@ @hide <p>Not for use by third-party applications.</p> --> <permission android:name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG" android:protectionLevel="signature|privileged" /> - <uses-permission android:name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG"/> <!-- @SystemApi Allows an app to override compat change config on release builds. Only ChangeIds that are annotated as @Overridable can be overridden on release builds. @hide --> diff --git a/services/core/java/com/android/server/app/GameManagerService.java b/services/core/java/com/android/server/app/GameManagerService.java index 57de70858179..b103defbbe21 100644 --- a/services/core/java/com/android/server/app/GameManagerService.java +++ b/services/core/java/com/android/server/app/GameManagerService.java @@ -34,7 +34,7 @@ import android.app.ActivityManager; import android.app.GameManager; import android.app.GameManager.GameMode; import android.app.IGameManagerService; -import android.compat.Compatibility; +import android.app.compat.PackageOverride; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -61,13 +61,12 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.compat.CompatibilityChangeConfig; +import com.android.internal.compat.CompatibilityOverrideConfig; import com.android.internal.compat.IPlatformCompat; import com.android.server.ServiceThread; import com.android.server.SystemService; import java.io.FileDescriptor; -import java.util.HashSet; import java.util.List; /** @@ -87,6 +86,10 @@ public final class GameManagerService extends IGameManagerService.Stub { static final int REMOVE_SETTINGS = 2; static final int POPULATE_GAME_MODE_SETTINGS = 3; static final int WRITE_SETTINGS_DELAY = 10 * 1000; // 10 seconds + static final PackageOverride COMPAT_ENABLED = new PackageOverride.Builder().setEnabled(true) + .build(); + static final PackageOverride COMPAT_DISABLED = new PackageOverride.Builder().setEnabled(false) + .build(); private final Context mContext; private final Object mLock = new Object(); @@ -578,17 +581,14 @@ public final class GameManagerService extends IGameManagerService.Stub { private void disableCompatScale(String packageName) { final long uid = Binder.clearCallingIdentity(); try { - final HashSet<Long> disabledSet = new HashSet<>(); - disabledSet.add(DOWNSCALED); - final CompatibilityChangeConfig changeConfig = new CompatibilityChangeConfig( - new Compatibility.ChangeConfig(new HashSet<>(), disabledSet)); - // TODO: switch to new API provided by aosp/1599153 once merged + final ArrayMap<Long, PackageOverride> overrides = new ArrayMap<>(); + overrides.put(DOWNSCALED, COMPAT_DISABLED); + final CompatibilityOverrideConfig changeConfig = new CompatibilityOverrideConfig( + overrides); try { - mPlatformCompat.setOverridesForTest(changeConfig, packageName); - } catch (SecurityException e) { - Slog.e(TAG, "Missing compat override permission", e); + mPlatformCompat.setOverridesOnReleaseBuilds(changeConfig, packageName); } catch (RemoteException e) { - Slog.e(TAG, "Failed to call IPlatformCompat#setOverridesForTest", e); + Slog.e(TAG, "Failed to call IPlatformCompat#setOverridesOnReleaseBuilds", e); } } finally { Binder.restoreCallingIdentity(uid); @@ -598,25 +598,20 @@ public final class GameManagerService extends IGameManagerService.Stub { private void enableCompatScale(String packageName, long scaleId) { final long uid = Binder.clearCallingIdentity(); try { - final HashSet<Long> disabledSet = new HashSet<>(); - final HashSet<Long> enabledSet = new HashSet<>(); - disabledSet.add(DOWNSCALE_50); - disabledSet.add(DOWNSCALE_60); - disabledSet.add(DOWNSCALE_70); - disabledSet.add(DOWNSCALE_80); - disabledSet.add(DOWNSCALE_90); - disabledSet.remove(scaleId); - enabledSet.add(DOWNSCALED); - enabledSet.add(scaleId); - final CompatibilityChangeConfig changeConfig = new CompatibilityChangeConfig( - new Compatibility.ChangeConfig(enabledSet, disabledSet)); - // TODO: switch to new API provided by aosp/1599153 once merged + final ArrayMap<Long, PackageOverride> overrides = new ArrayMap<>(); + overrides.put(DOWNSCALED, COMPAT_ENABLED); + overrides.put(DOWNSCALE_50, COMPAT_DISABLED); + overrides.put(DOWNSCALE_60, COMPAT_DISABLED); + overrides.put(DOWNSCALE_70, COMPAT_DISABLED); + overrides.put(DOWNSCALE_80, COMPAT_DISABLED); + overrides.put(DOWNSCALE_90, COMPAT_DISABLED); + overrides.put(scaleId, COMPAT_ENABLED); + final CompatibilityOverrideConfig changeConfig = new CompatibilityOverrideConfig( + overrides); try { - mPlatformCompat.setOverridesForTest(changeConfig, packageName); - } catch (SecurityException e) { - Slog.e(TAG, "Missing compat override permission", e); + mPlatformCompat.setOverridesOnReleaseBuilds(changeConfig, packageName); } catch (RemoteException e) { - Slog.e(TAG, "Failed to call IPlatformCompat#setOverridesForTest", e); + Slog.e(TAG, "Failed to call IPlatformCompat#setOverridesOnReleaseBuilds", e); } } finally { Binder.restoreCallingIdentity(uid); diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml index 7c30b4553786..d1cd7cd526d1 100644 --- a/services/tests/servicestests/AndroidManifest.xml +++ b/services/tests/servicestests/AndroidManifest.xml @@ -92,6 +92,8 @@ <uses-permission android:name="android.permission.CONTROL_DEVICE_STATE"/> <uses-permission android:name="android.permission.READ_PROJECTION_STATE"/> <uses-permission android:name="android.permission.KILL_UID"/> + <uses-permission + android:name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD"/> <!-- Uses API introduced in O (26) --> <uses-sdk android:minSdkVersion="1" |