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

Commit c99ad1bf authored by Lingyu Feng's avatar Lingyu Feng Committed by Android (Google) Code Review
Browse files

Merge "Add test for mirrorBuiltInDisplay when lock task mode changes" into main

parents 2c001b4a 1318a539
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);