Loading services/core/java/com/android/server/display/LogicalDisplayMapper.java +7 −11 Original line number Diff line number Diff line Loading @@ -167,12 +167,6 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { LogicalDisplayMapper(@NonNull Context context, @NonNull DisplayDeviceRepository repo, @NonNull Listener listener, @NonNull DisplayManagerService.SyncRoot syncRoot, @NonNull Handler handler) { this(context, repo, listener, syncRoot, handler, new DeviceStateToLayoutMap()); } LogicalDisplayMapper(@NonNull Context context, @NonNull DisplayDeviceRepository repo, @NonNull Listener listener, @NonNull DisplayManagerService.SyncRoot syncRoot, @NonNull Handler handler, DeviceStateToLayoutMap deviceStateToLayoutMap) { mSyncRoot = syncRoot; mPowerManager = context.getSystemService(PowerManager.class); mInteractive = mPowerManager.isInteractive(); Loading @@ -187,7 +181,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { mDeviceStatesOnWhichToSleep = toSparseBooleanArray(context.getResources().getIntArray( com.android.internal.R.array.config_deviceStatesOnWhichToSleep)); mDisplayDeviceRepo.addListener(this); mDeviceStateToLayoutMap = deviceStateToLayoutMap; mDeviceStateToLayoutMap = new DeviceStateToLayoutMap(); } @Override Loading Loading @@ -375,7 +369,9 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { // the transition is smooth. Plus, on some devices, only one internal displays can be // on at a time. We use DISPLAY_PHASE_LAYOUT_TRANSITION to mark a display that needs to be // temporarily turned off. if (mDeviceState != DeviceStateManager.INVALID_DEVICE_STATE) { resetLayoutLocked(mDeviceState, state, LogicalDisplay.DISPLAY_PHASE_LAYOUT_TRANSITION); } mPendingDeviceState = state; final boolean wakeDevice = shouldDeviceBeWoken(mPendingDeviceState, mDeviceState, mInteractive, mBootCompleted); Loading Loading @@ -895,8 +891,8 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { newDisplay.swapDisplaysLocked(oldDisplay); } if (displayLayout.isEnabled()) { setDisplayPhase(newDisplay, LogicalDisplay.DISPLAY_PHASE_ENABLED); if (!displayLayout.isEnabled()) { setDisplayPhase(newDisplay, LogicalDisplay.DISPLAY_PHASE_DISABLED); } } Loading @@ -916,7 +912,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { final LogicalDisplay display = new LogicalDisplay(displayId, layerStack, device); display.updateLocked(mDisplayDeviceRepo); mLogicalDisplays.put(displayId, display); setDisplayPhase(display, LogicalDisplay.DISPLAY_PHASE_DISABLED); setDisplayPhase(display, LogicalDisplay.DISPLAY_PHASE_ENABLED); return display; } Loading services/tests/servicestests/src/com/android/server/display/LogicalDisplayMapperTest.java +1 −60 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ import static android.view.Display.DEFAULT_DISPLAY_GROUP; import static com.android.server.display.DisplayAdapter.DISPLAY_DEVICE_EVENT_ADDED; import static com.android.server.display.DisplayAdapter.DISPLAY_DEVICE_EVENT_CHANGED; import static com.android.server.display.DisplayAdapter.DISPLAY_DEVICE_EVENT_REMOVED; import static com.android.server.display.LogicalDisplay.DISPLAY_PHASE_DISABLED; import static com.android.server.display.LogicalDisplay.DISPLAY_PHASE_ENABLED; import static com.android.server.display.LogicalDisplayMapper.LOGICAL_DISPLAY_EVENT_ADDED; import static com.android.server.display.LogicalDisplayMapper.LOGICAL_DISPLAY_EVENT_REMOVED; Loading Loading @@ -55,8 +53,6 @@ import android.view.DisplayInfo; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.server.display.layout.Layout; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -89,7 +85,6 @@ public class LogicalDisplayMapperTest { @Mock Resources mResourcesMock; @Mock IPowerManager mIPowerManagerMock; @Mock IThermalService mIThermalServiceMock; @Mock DeviceStateToLayoutMap mDeviceStateToLayoutMapMock; @Captor ArgumentCaptor<LogicalDisplay> mDisplayCaptor; Loading Loading @@ -135,13 +130,11 @@ public class LogicalDisplayMapperTest { when(mResourcesMock.getIntArray( com.android.internal.R.array.config_deviceStatesOnWhichToSleep)) .thenReturn(new int[]{0}); when(mDeviceStateToLayoutMapMock.get(-1)).thenReturn(new Layout()); mLooper = new TestLooper(); mHandler = new Handler(mLooper.getLooper()); mLogicalDisplayMapper = new LogicalDisplayMapper(mContextMock, mDisplayDeviceRepo, mListenerMock, new DisplayManagerService.SyncRoot(), mHandler, mDeviceStateToLayoutMapMock); mListenerMock, new DisplayManagerService.SyncRoot(), mHandler); } Loading Loading @@ -420,58 +413,6 @@ public class LogicalDisplayMapperTest { /* isBootCompleted= */true)); } @Test public void testDeviceStateLocked() { DisplayDevice device1 = createDisplayDevice(Display.TYPE_INTERNAL, 600, 800, DisplayDeviceInfo.FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY); DisplayDevice device2 = createDisplayDevice(Display.TYPE_INTERNAL, 600, 800, DisplayDeviceInfo.FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY); Layout layout = new Layout(); layout.createDisplayLocked(device1.getDisplayDeviceInfoLocked().address, true, true); layout.createDisplayLocked(device2.getDisplayDeviceInfoLocked().address, false, false); when(mDeviceStateToLayoutMapMock.get(0)).thenReturn(layout); layout = new Layout(); layout.createDisplayLocked(device1.getDisplayDeviceInfoLocked().address, false, false); layout.createDisplayLocked(device2.getDisplayDeviceInfoLocked().address, true, true); when(mDeviceStateToLayoutMapMock.get(1)).thenReturn(layout); when(mDeviceStateToLayoutMapMock.get(2)).thenReturn(layout); LogicalDisplay display1 = add(device1); assertEquals(info(display1).address, info(device1).address); assertEquals(DEFAULT_DISPLAY, id(display1)); LogicalDisplay display2 = add(device2); assertEquals(info(display2).address, info(device2).address); // We can only have one default display assertEquals(DEFAULT_DISPLAY, id(display1)); mLogicalDisplayMapper.setDeviceStateLocked(0, false); mLooper.moveTimeForward(1000); mLooper.dispatchAll(); assertEquals(DISPLAY_PHASE_ENABLED, mLogicalDisplayMapper.getDisplayLocked(device1).getPhase()); assertEquals(DISPLAY_PHASE_DISABLED, mLogicalDisplayMapper.getDisplayLocked(device2).getPhase()); mLogicalDisplayMapper.setDeviceStateLocked(1, false); mLooper.moveTimeForward(1000); mLooper.dispatchAll(); assertEquals(DISPLAY_PHASE_DISABLED, mLogicalDisplayMapper.getDisplayLocked(device1).getPhase()); assertEquals(DISPLAY_PHASE_ENABLED, mLogicalDisplayMapper.getDisplayLocked(device2).getPhase()); mLogicalDisplayMapper.setDeviceStateLocked(2, false); mLooper.moveTimeForward(1000); mLooper.dispatchAll(); assertEquals(DISPLAY_PHASE_DISABLED, mLogicalDisplayMapper.getDisplayLocked(device1).getPhase()); assertEquals(DISPLAY_PHASE_ENABLED, mLogicalDisplayMapper.getDisplayLocked(device2).getPhase()); } ///////////////// // Helper Methods ///////////////// Loading Loading
services/core/java/com/android/server/display/LogicalDisplayMapper.java +7 −11 Original line number Diff line number Diff line Loading @@ -167,12 +167,6 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { LogicalDisplayMapper(@NonNull Context context, @NonNull DisplayDeviceRepository repo, @NonNull Listener listener, @NonNull DisplayManagerService.SyncRoot syncRoot, @NonNull Handler handler) { this(context, repo, listener, syncRoot, handler, new DeviceStateToLayoutMap()); } LogicalDisplayMapper(@NonNull Context context, @NonNull DisplayDeviceRepository repo, @NonNull Listener listener, @NonNull DisplayManagerService.SyncRoot syncRoot, @NonNull Handler handler, DeviceStateToLayoutMap deviceStateToLayoutMap) { mSyncRoot = syncRoot; mPowerManager = context.getSystemService(PowerManager.class); mInteractive = mPowerManager.isInteractive(); Loading @@ -187,7 +181,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { mDeviceStatesOnWhichToSleep = toSparseBooleanArray(context.getResources().getIntArray( com.android.internal.R.array.config_deviceStatesOnWhichToSleep)); mDisplayDeviceRepo.addListener(this); mDeviceStateToLayoutMap = deviceStateToLayoutMap; mDeviceStateToLayoutMap = new DeviceStateToLayoutMap(); } @Override Loading Loading @@ -375,7 +369,9 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { // the transition is smooth. Plus, on some devices, only one internal displays can be // on at a time. We use DISPLAY_PHASE_LAYOUT_TRANSITION to mark a display that needs to be // temporarily turned off. if (mDeviceState != DeviceStateManager.INVALID_DEVICE_STATE) { resetLayoutLocked(mDeviceState, state, LogicalDisplay.DISPLAY_PHASE_LAYOUT_TRANSITION); } mPendingDeviceState = state; final boolean wakeDevice = shouldDeviceBeWoken(mPendingDeviceState, mDeviceState, mInteractive, mBootCompleted); Loading Loading @@ -895,8 +891,8 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { newDisplay.swapDisplaysLocked(oldDisplay); } if (displayLayout.isEnabled()) { setDisplayPhase(newDisplay, LogicalDisplay.DISPLAY_PHASE_ENABLED); if (!displayLayout.isEnabled()) { setDisplayPhase(newDisplay, LogicalDisplay.DISPLAY_PHASE_DISABLED); } } Loading @@ -916,7 +912,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { final LogicalDisplay display = new LogicalDisplay(displayId, layerStack, device); display.updateLocked(mDisplayDeviceRepo); mLogicalDisplays.put(displayId, display); setDisplayPhase(display, LogicalDisplay.DISPLAY_PHASE_DISABLED); setDisplayPhase(display, LogicalDisplay.DISPLAY_PHASE_ENABLED); return display; } Loading
services/tests/servicestests/src/com/android/server/display/LogicalDisplayMapperTest.java +1 −60 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ import static android.view.Display.DEFAULT_DISPLAY_GROUP; import static com.android.server.display.DisplayAdapter.DISPLAY_DEVICE_EVENT_ADDED; import static com.android.server.display.DisplayAdapter.DISPLAY_DEVICE_EVENT_CHANGED; import static com.android.server.display.DisplayAdapter.DISPLAY_DEVICE_EVENT_REMOVED; import static com.android.server.display.LogicalDisplay.DISPLAY_PHASE_DISABLED; import static com.android.server.display.LogicalDisplay.DISPLAY_PHASE_ENABLED; import static com.android.server.display.LogicalDisplayMapper.LOGICAL_DISPLAY_EVENT_ADDED; import static com.android.server.display.LogicalDisplayMapper.LOGICAL_DISPLAY_EVENT_REMOVED; Loading Loading @@ -55,8 +53,6 @@ import android.view.DisplayInfo; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.server.display.layout.Layout; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading Loading @@ -89,7 +85,6 @@ public class LogicalDisplayMapperTest { @Mock Resources mResourcesMock; @Mock IPowerManager mIPowerManagerMock; @Mock IThermalService mIThermalServiceMock; @Mock DeviceStateToLayoutMap mDeviceStateToLayoutMapMock; @Captor ArgumentCaptor<LogicalDisplay> mDisplayCaptor; Loading Loading @@ -135,13 +130,11 @@ public class LogicalDisplayMapperTest { when(mResourcesMock.getIntArray( com.android.internal.R.array.config_deviceStatesOnWhichToSleep)) .thenReturn(new int[]{0}); when(mDeviceStateToLayoutMapMock.get(-1)).thenReturn(new Layout()); mLooper = new TestLooper(); mHandler = new Handler(mLooper.getLooper()); mLogicalDisplayMapper = new LogicalDisplayMapper(mContextMock, mDisplayDeviceRepo, mListenerMock, new DisplayManagerService.SyncRoot(), mHandler, mDeviceStateToLayoutMapMock); mListenerMock, new DisplayManagerService.SyncRoot(), mHandler); } Loading Loading @@ -420,58 +413,6 @@ public class LogicalDisplayMapperTest { /* isBootCompleted= */true)); } @Test public void testDeviceStateLocked() { DisplayDevice device1 = createDisplayDevice(Display.TYPE_INTERNAL, 600, 800, DisplayDeviceInfo.FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY); DisplayDevice device2 = createDisplayDevice(Display.TYPE_INTERNAL, 600, 800, DisplayDeviceInfo.FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY); Layout layout = new Layout(); layout.createDisplayLocked(device1.getDisplayDeviceInfoLocked().address, true, true); layout.createDisplayLocked(device2.getDisplayDeviceInfoLocked().address, false, false); when(mDeviceStateToLayoutMapMock.get(0)).thenReturn(layout); layout = new Layout(); layout.createDisplayLocked(device1.getDisplayDeviceInfoLocked().address, false, false); layout.createDisplayLocked(device2.getDisplayDeviceInfoLocked().address, true, true); when(mDeviceStateToLayoutMapMock.get(1)).thenReturn(layout); when(mDeviceStateToLayoutMapMock.get(2)).thenReturn(layout); LogicalDisplay display1 = add(device1); assertEquals(info(display1).address, info(device1).address); assertEquals(DEFAULT_DISPLAY, id(display1)); LogicalDisplay display2 = add(device2); assertEquals(info(display2).address, info(device2).address); // We can only have one default display assertEquals(DEFAULT_DISPLAY, id(display1)); mLogicalDisplayMapper.setDeviceStateLocked(0, false); mLooper.moveTimeForward(1000); mLooper.dispatchAll(); assertEquals(DISPLAY_PHASE_ENABLED, mLogicalDisplayMapper.getDisplayLocked(device1).getPhase()); assertEquals(DISPLAY_PHASE_DISABLED, mLogicalDisplayMapper.getDisplayLocked(device2).getPhase()); mLogicalDisplayMapper.setDeviceStateLocked(1, false); mLooper.moveTimeForward(1000); mLooper.dispatchAll(); assertEquals(DISPLAY_PHASE_DISABLED, mLogicalDisplayMapper.getDisplayLocked(device1).getPhase()); assertEquals(DISPLAY_PHASE_ENABLED, mLogicalDisplayMapper.getDisplayLocked(device2).getPhase()); mLogicalDisplayMapper.setDeviceStateLocked(2, false); mLooper.moveTimeForward(1000); mLooper.dispatchAll(); assertEquals(DISPLAY_PHASE_DISABLED, mLogicalDisplayMapper.getDisplayLocked(device1).getPhase()); assertEquals(DISPLAY_PHASE_ENABLED, mLogicalDisplayMapper.getDisplayLocked(device2).getPhase()); } ///////////////// // Helper Methods ///////////////// Loading