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

Commit 1318a539 authored by Lingyu Feng's avatar Lingyu Feng
Browse files

Add test for mirrorBuiltInDisplay when lock task mode changes

Bug: 408988940
Test: DisplayManagerServiceTest
Flag: com.android.server.display.feature.flags.enable_display_mirror_in_lock_task_mode
Change-Id: If7b54a0815118af24543f9b05da4ee381108946c
parent 1a2a7e81
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -543,6 +543,9 @@ public final class DisplayManagerService extends SystemService {
    // Receives notifications about changes to Settings.
    private SettingsObserver mSettingsObserver;

    // Receives notifications about changes to task stack.
    private TaskStackListener mTaskStackListener;

    // Keeps note of what state the device is in, used for idle screen brightness mode.
    private boolean mIsDocked;
    private boolean mIsDreaming;
@@ -977,6 +980,11 @@ public final class DisplayManagerService extends SystemService {
        return mSettingsObserver;
    }

    @VisibleForTesting
    TaskStackListener getTaskStackListener() {
        return mTaskStackListener;
    }

    @VisibleForTesting
    boolean shouldMirrorBuiltInDisplay() {
        return mMirrorBuiltInDisplay;
@@ -3815,7 +3823,7 @@ public final class DisplayManagerService extends SystemService {
    }

    private void setupTaskStackListener() {
        final TaskStackListener taskStackListener = new TaskStackListener() {
        mTaskStackListener = new TaskStackListener() {
            @Override
            public void onLockTaskModeChanged(int mode) {
                updateMirrorBuiltInDisplaySettingLocked(/*shouldSendDisplayChangeEvent=*/ true);
@@ -3823,7 +3831,7 @@ public final class DisplayManagerService extends SystemService {
        };

        try {
            mActivityTaskManagerInternal.registerTaskStackListener(taskStackListener);
            mActivityTaskManagerInternal.registerTaskStackListener(mTaskStackListener);
        } catch (Exception e) {
            Slog.w(TAG, "Failed to call registerTaskStackListener", e);
        }
+25 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.ActivityOptions.LaunchCookie;
import android.app.PropertyInvalidatedCache;
import android.app.TaskStackListener;
import android.app.job.JobScheduler;
import android.companion.virtual.IVirtualDevice;
import android.companion.virtual.IVirtualDeviceManager;
@@ -4110,6 +4111,30 @@ public class DisplayManagerServiceTest {
        assertThat(displayManager.shouldMirrorBuiltInDisplay()).isFalse();
    }

    @Test
    public void testMirrorBuiltInDisplay_onLockTaskModeChanged() {
        when(mMockFlags.isDisplayContentModeManagementEnabled()).thenReturn(true);
        when(mMockFlags.isDisplayMirrorInLockTaskModeEnabled()).thenReturn(true);
        when(mMockActivityTaskManagerInternal.getLockTaskModeState())
                .thenReturn(ActivityManager.LOCK_TASK_MODE_NONE);

        DisplayManagerService displayManager = new DisplayManagerService(mContext, mBasicInjector);
        displayManager.windowManagerAndInputReady();
        displayManager.systemReady(/* safeMode= */ false);
        assertThat(displayManager.shouldMirrorBuiltInDisplay()).isFalse();

        when(mMockActivityTaskManagerInternal.getLockTaskModeState())
                .thenReturn(ActivityManager.LOCK_TASK_MODE_LOCKED);
        final TaskStackListener taskStackListener = displayManager.getTaskStackListener();
        taskStackListener.onLockTaskModeChanged(ActivityManager.LOCK_TASK_MODE_LOCKED);
        assertThat(displayManager.shouldMirrorBuiltInDisplay()).isTrue();

        when(mMockActivityTaskManagerInternal.getLockTaskModeState())
                .thenReturn(ActivityManager.LOCK_TASK_MODE_NONE);
        taskStackListener.onLockTaskModeChanged(ActivityManager.LOCK_TASK_MODE_NONE);
        assertThat(displayManager.shouldMirrorBuiltInDisplay()).isFalse();
    }

    @Test
    public void testMirrorBuiltInDisplay_flagDisabled() {
        when(mMockFlags.isDisplayContentModeManagementEnabled()).thenReturn(false);