Migrate game service to @EnforcePermission

Transition to AIDL annotations which automatically generate the required
permission checks.

Test: atest CtsGameServiceTestCases
Bug: 220214993
Change-Id: I61cbb7f67c9a194b289bc34024def82c05aef447
This commit is contained in:
Thiébaud Weksteen
2022-04-04 10:18:55 +10:00
parent c90c8b7889
commit 430aff9586
6 changed files with 22 additions and 13 deletions

View File

@@ -23,7 +23,12 @@ import android.service.games.IGameServiceController;
* @hide
*/
oneway interface IGameService {
@RequiresNoPermission
void connected(in IGameServiceController gameServiceController);
@RequiresNoPermission
void disconnected();
@RequiresNoPermission
void gameStarted(in GameStartedEvent gameStartedEvent);
}

View File

@@ -20,5 +20,6 @@ package android.service.games;
* @hide
*/
oneway interface IGameServiceController {
@EnforcePermission("MANAGE_GAME_ACTIVITY")
void createGameSession(int taskId);
}
}

View File

@@ -20,7 +20,12 @@ package android.service.games;
* @hide
*/
oneway interface IGameSession {
@RequiresNoPermission
void onDestroyed();
@RequiresNoPermission
void onTransientSystemBarVisibilityFromRevealGestureChanged(boolean visibleDueToGesture);
@RequiresNoPermission
void onTaskFocusChanged(boolean focused);
}

View File

@@ -23,7 +23,9 @@ import com.android.internal.infra.AndroidFuture;
* @hide
*/
oneway interface IGameSessionController {
@EnforcePermission("MANAGE_GAME_ACTIVITY")
void takeScreenshot(int taskId, in AndroidFuture gameScreenshotResultFuture);
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_GAME_ACTIVITY)")
@EnforcePermission("MANAGE_GAME_ACTIVITY")
void restartGame(in int taskId);
}

View File

@@ -28,6 +28,7 @@ import com.android.internal.infra.AndroidFuture;
* @hide
*/
oneway interface IGameSessionService {
@RequiresNoPermission
void create(
in IGameSessionController gameSessionController,
in CreateGameSessionRequest createGameSessionRequest,

View File

@@ -16,10 +16,11 @@
package com.android.server.app;
import android.Manifest;
import static android.Manifest.permission.MANAGE_GAME_ACTIVITY;
import android.annotation.EnforcePermission;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManagerInternal;
import android.app.ActivityTaskManager;
@@ -181,10 +182,8 @@ final class GameServiceProviderInstanceImpl implements GameServiceProviderInstan
private final IGameServiceController mGameServiceController =
new IGameServiceController.Stub() {
@Override
@RequiresPermission(Manifest.permission.MANAGE_GAME_ACTIVITY)
@EnforcePermission(MANAGE_GAME_ACTIVITY)
public void createGameSession(int taskId) {
mContext.enforceCallingPermission(Manifest.permission.MANAGE_GAME_ACTIVITY,
"createGameSession()");
mBackgroundExecutor.execute(() -> {
GameServiceProviderInstanceImpl.this.createGameSession(taskId);
});
@@ -194,11 +193,9 @@ final class GameServiceProviderInstanceImpl implements GameServiceProviderInstan
private final IGameSessionController mGameSessionController =
new IGameSessionController.Stub() {
@Override
@RequiresPermission(android.Manifest.permission.MANAGE_GAME_ACTIVITY)
@EnforcePermission(MANAGE_GAME_ACTIVITY)
public void takeScreenshot(int taskId,
@NonNull AndroidFuture gameScreenshotResultFuture) {
mContext.enforceCallingPermission(Manifest.permission.MANAGE_GAME_ACTIVITY,
"takeScreenshot()");
mBackgroundExecutor.execute(() -> {
GameServiceProviderInstanceImpl.this.takeScreenshot(taskId,
gameScreenshotResultFuture);
@@ -206,10 +203,8 @@ final class GameServiceProviderInstanceImpl implements GameServiceProviderInstan
}
@Override
@RequiresPermission(Manifest.permission.MANAGE_GAME_ACTIVITY)
@EnforcePermission(MANAGE_GAME_ACTIVITY)
public void restartGame(int taskId) {
mContext.enforceCallingPermission(Manifest.permission.MANAGE_GAME_ACTIVITY,
"restartGame()");
mBackgroundExecutor.execute(() -> {
GameServiceProviderInstanceImpl.this.restartGame(taskId);
});