Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08865283 authored by Xiang Wang's avatar Xiang Wang Committed by Android (Google) Code Review
Browse files

Merge "Add permission requirement to createGameSession API"

parents 1cb1b98f 4d62e371
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -11055,7 +11055,7 @@ package android.service.games {
  public class GameService extends android.app.Service {
    ctor public GameService();
    method public final void createGameSession(@IntRange(from=0) int);
    method @RequiresPermission(android.Manifest.permission.MANAGE_GAME_ACTIVITY) public final void createGameSession(@IntRange(from=0) int);
    method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
    method public void onConnected();
    method public void onDisconnected();
+3 −0
Original line number Diff line number Diff line
@@ -16,9 +16,11 @@

package android.service.games;

import android.Manifest;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SdkConstant;
import android.annotation.SystemApi;
import android.app.IGameManagerService;
@@ -173,6 +175,7 @@ public class GameService extends Service {
     *
     * @param taskId The taskId of the game.
     */
    @RequiresPermission(Manifest.permission.MANAGE_GAME_ACTIVITY)
    public final void createGameSession(@IntRange(from = 0) int taskId) {
        if (mGameServiceController == null) {
            throw new IllegalStateException("Can not call before connected()");
+3 −0
Original line number Diff line number Diff line
@@ -98,7 +98,10 @@ final class GameServiceProviderInstanceImpl implements GameServiceProviderInstan
    private final IGameServiceController mGameServiceController =
            new IGameServiceController.Stub() {
                @Override
                @RequiresPermission(Manifest.permission.MANAGE_GAME_ACTIVITY)
                public void createGameSession(int taskId) {
                    mContext.enforceCallingPermission(Manifest.permission.MANAGE_GAME_ACTIVITY,
                            "createGameSession()");
                    mBackgroundExecutor.execute(() -> {
                        GameServiceProviderInstanceImpl.this.createGameSession(taskId);
                    });
+32 −1
Original line number Diff line number Diff line
@@ -304,6 +304,7 @@ public final class GameServiceProviderInstanceImplTest {
            throws Exception {
        mGameServiceProviderInstance.start();

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        assertThat(mFakeGameSessionService.getCapturedCreateInvocations()).isEmpty();
@@ -325,6 +326,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSessionService.CapturedCreateInvocation capturedCreateInvocation =
@@ -339,6 +341,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();
        dispatchTaskCreated(10, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        assertThat(mFakeGameSessionService.getCapturedCreateInvocations()).isEmpty();
@@ -348,6 +351,7 @@ public final class GameServiceProviderInstanceImplTest {
    public void gameTaskStartedAndSessionRequested_createsGameSession() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -365,7 +369,9 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        CreateGameSessionRequest expectedCreateGameSessionRequest = new CreateGameSessionRequest(10,
@@ -379,6 +385,7 @@ public final class GameServiceProviderInstanceImplTest {
    public void gameSessionSuccessfullyCreated_createsTaskOverlay() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -394,6 +401,7 @@ public final class GameServiceProviderInstanceImplTest {
    public void gameTaskFocused_propagatedToGameSession() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -419,6 +427,7 @@ public final class GameServiceProviderInstanceImplTest {

        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -435,6 +444,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        dispatchTaskRemoved(10);
@@ -452,6 +462,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -469,6 +480,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -489,6 +501,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -516,6 +529,7 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startTask(11, GAME_A_MAIN_ACTIVITY);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -533,6 +547,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -560,6 +575,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -589,6 +605,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -621,11 +638,20 @@ public final class GameServiceProviderInstanceImplTest {
        assertThat(mFakeGameSessionServiceConnector.getIsConnected()).isTrue();
    }

    @Test
    public void createGameSession_failurePermissionDenied() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionDenied(Manifest.permission.MANAGE_GAME_ACTIVITY);
        assertThrows(SecurityException.class, () -> mFakeGameService.requestCreateGameSession(10));
    }

    @Test
    public void stop_severalActiveGameSessions_destroysGameSessionsAndUnbinds() throws Exception {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -653,6 +679,7 @@ public final class GameServiceProviderInstanceImplTest {
    public void takeScreenshot_failureNoBitmapCaptured() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        IGameSessionController gameSessionController = getOnlyElement(
@@ -672,6 +699,7 @@ public final class GameServiceProviderInstanceImplTest {

        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        IGameSessionController gameSessionController = getOnlyElement(
@@ -695,6 +723,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -723,6 +752,7 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -742,10 +772,11 @@ public final class GameServiceProviderInstanceImplTest {
    public void restartGame_failurePermissionDenied() throws Exception {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        IGameSessionController gameSessionController = Objects.requireNonNull(getOnlyElement(
                mFakeGameSessionService.getCapturedCreateInvocations())).mGameSessionController;
        mockPermissionDenied(Manifest.permission.MANAGE_GAME_ACTIVITY);
        assertThrows(SecurityException.class,
                () -> gameSessionController.restartGame(10));
    }