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

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

Merge "Fix broken unit tests due to permission check and typo"

parents 764a223c 0cb9a299
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -258,7 +258,7 @@ public final class GameServiceControllerTest {
                                PROVIDER_A_SERVICE_A,
                                PROVIDER_A_SERVICE_C));
        FakeGameServiceProviderInstance instanceB =
                seedConfigurationForUser(USER_10, configurationA);
                seedConfigurationForUser(USER_10, configurationB);
        Intent intent = new Intent();
        intent.setData(Uri.parse("package:" + PROVIDER_A_PACKAGE_NAME));
        broadcastReceiverArgumentCaptor.getValue().onReceive(mMockContext, intent);
+0 −99
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -36,7 +35,6 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;

import android.Manifest;
import android.annotation.Nullable;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManagerInternal;
@@ -98,7 +96,6 @@ import org.mockito.quality.Strictness;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
import java.util.function.Consumer;


@@ -361,7 +358,6 @@ public final class GameServiceProviderInstanceImplTest {
            throws Exception {
        mGameServiceProviderInstance.start();

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

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

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

        FakeGameSessionService.CapturedCreateInvocation capturedCreateInvocation =
@@ -398,7 +393,6 @@ 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();
@@ -408,7 +402,6 @@ 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();
@@ -426,9 +419,7 @@ 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,
@@ -442,7 +433,6 @@ 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();
@@ -462,7 +452,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(gameProcessId, GAME_A_PACKAGE);

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

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -488,7 +477,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(11, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(gameProcessId, GAME_A_PACKAGE);

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

@@ -522,7 +510,6 @@ public final class GameServiceProviderInstanceImplTest {
        startProcessForPackage(firstGameProcessId, GAME_A_PACKAGE);
        startProcessForPackage(secondGameProcessId, GAME_A_PACKAGE);

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

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -551,7 +538,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(firstGameProcessId, GAME_A_PACKAGE);

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

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -583,7 +569,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(11, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(firstGameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);

        mFakeGameService.requestCreateGameSession(10);
        mFakeGameService.requestCreateGameSession(11);
@@ -624,7 +609,6 @@ public final class GameServiceProviderInstanceImplTest {
        startTask(10, GAME_A_MAIN_ACTIVITY);
        startProcessForPackage(gameProcessId, GAME_A_PACKAGE);

        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);

        // No game session should be created.
        assertThat(mFakeGameSessionService.getCapturedCreateInvocations()).isEmpty();
@@ -636,7 +620,6 @@ public final class GameServiceProviderInstanceImplTest {

        startTask(10, GAME_A_MAIN_ACTIVITY);

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

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -677,7 +660,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void systemBarsTransientShownDueToGesture_hasGameSession_propagatesToGameSession() {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -699,7 +681,6 @@ public final class GameServiceProviderInstanceImplTest {
    public void systemBarsTransientShownButNotGesture_hasGameSession_notPropagatedToGameSession() {
        mGameServiceProviderInstance.start();
        startTask(10, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(10);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -721,7 +702,6 @@ 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();
@@ -747,7 +727,6 @@ 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();
@@ -764,7 +743,6 @@ public final class GameServiceProviderInstanceImplTest {
        mGameServiceProviderInstance.start();

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

        dispatchTaskRemoved(10);
@@ -782,7 +760,6 @@ 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();
@@ -800,7 +777,6 @@ 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();
@@ -830,7 +806,6 @@ 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();
@@ -851,7 +826,6 @@ 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();
@@ -879,7 +853,6 @@ 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();
@@ -897,7 +870,6 @@ 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();
@@ -925,7 +897,6 @@ 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();
@@ -955,7 +926,6 @@ 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();
@@ -988,20 +958,11 @@ 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 gameSessionServiceDies_severalActiveGameSessions_destroysGameSessions() {
        mGameServiceProviderInstance.start();

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

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1030,7 +991,6 @@ 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();
@@ -1058,7 +1018,6 @@ 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);

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1093,7 +1052,6 @@ public final class GameServiceProviderInstanceImplTest {
                any(), any(), any(), anyInt(), anyInt(), any(), anyInt(), any(), any());
        mGameServiceProviderInstance.start();
        startTask(taskId, GAME_A_MAIN_ACTIVITY);
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mFakeGameService.requestCreateGameSession(taskId);

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

    @Test
    public void restartGame_taskIdAssociatedWithGame_restartsTargetGame() throws Exception {
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        Intent launchIntent = new Intent("com.test.ACTION_LAUNCH_GAME_PACKAGE")
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        when(mMockPackageManager.getLaunchIntentForPackage(GAME_A_PACKAGE))
@@ -1122,7 +1079,6 @@ 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();
@@ -1148,11 +1104,9 @@ public final class GameServiceProviderInstanceImplTest {

    @Test
    public void restartGame_taskIdNotAssociatedWithGame_noOp() throws Exception {
        mockPermissionGranted(Manifest.permission.MANAGE_GAME_ACTIVITY);
        mGameServiceProviderInstance.start();

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

        FakeGameSession gameSession10 = new FakeGameSession();
@@ -1170,21 +1124,6 @@ public final class GameServiceProviderInstanceImplTest {
                .restartTaskActivityProcessIfVisible(anyInt(), anyString());
    }

    @Test
    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));
        verify(mActivityTaskManagerInternal, never())
                .restartTaskActivityProcessIfVisible(anyInt(), anyString());
    }

    private void startTask(int taskId, ComponentName componentName) {
        addRunningTaskInfo(taskId, componentName);

@@ -1261,14 +1200,6 @@ public final class GameServiceProviderInstanceImplTest {
        }
    }

    private void mockPermissionGranted(String permission) {
        mMockContext.setPermission(permission, PackageManager.PERMISSION_GRANTED);
    }

    private void mockPermissionDenied(String permission) {
        mMockContext.setPermission(permission, PackageManager.PERMISSION_DENIED);
    }

    private void dispatchTaskSystemBarsEvent(
            ThrowingConsumer<TaskSystemBarsListener> taskSystemBarsListenerConsumer) {
        for (TaskSystemBarsListener listener : mTaskSystemBarsListeners) {
@@ -1409,42 +1340,12 @@ public final class GameServiceProviderInstanceImplTest {
    }

    private final class MockContext extends ContextWrapper {
        // Map of permission name -> PermissionManager.Permission_{GRANTED|DENIED} constant
        private final HashMap<String, Integer> mMockedPermissions = new HashMap<>();

        MockContext(Context base) {
            super(base);
        }

        /**
         * Mock checks for the specified permission, and have them behave as per {@code granted}.
         *
         * <p>Passing null reverts to default behavior, which does a real permission check on the
         * test package.
         *
         * @param granted One of {@link PackageManager#PERMISSION_GRANTED} or
         *                {@link PackageManager#PERMISSION_DENIED}.
         */
        public void setPermission(String permission, Integer granted) {
            mMockedPermissions.put(permission, granted);
        }

        @Override
        public PackageManager getPackageManager() {
            return mMockPackageManager;
        }

        @Override
        public void enforceCallingPermission(String permission, @Nullable String message) {
            final Integer granted = mMockedPermissions.get(permission);
            if (granted == null) {
                super.enforceCallingOrSelfPermission(permission, message);
                return;
            }

            if (!granted.equals(PackageManager.PERMISSION_GRANTED)) {
                throw new SecurityException("[Test] permission denied: " + permission);
            }
        }
    }
}