Loading services/core/java/com/android/server/display/DisplayManagerService.java +10 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -977,6 +980,11 @@ public final class DisplayManagerService extends SystemService { return mSettingsObserver; } @VisibleForTesting TaskStackListener getTaskStackListener() { return mTaskStackListener; } @VisibleForTesting boolean shouldMirrorBuiltInDisplay() { return mMirrorBuiltInDisplay; Loading Loading @@ -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); Loading @@ -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); } Loading services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading Loading
services/core/java/com/android/server/display/DisplayManagerService.java +10 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -977,6 +980,11 @@ public final class DisplayManagerService extends SystemService { return mSettingsObserver; } @VisibleForTesting TaskStackListener getTaskStackListener() { return mTaskStackListener; } @VisibleForTesting boolean shouldMirrorBuiltInDisplay() { return mMirrorBuiltInDisplay; Loading Loading @@ -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); Loading @@ -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); } Loading
services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading