Loading services/core/java/com/android/server/display/DisplayManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -699,7 +699,8 @@ public final class DisplayManagerService extends SystemService { mDisplayTopologyCoordinator = new DisplayTopologyCoordinator( this::isExtendedDisplayAllowed, this::shouldIncludeDefaultDisplayInTopology, topologyChangedCallback, new HandlerExecutor(mHandler), mSyncRoot, backupManager::dataChanged, mFlags); backupManager::dataChanged, mFlags, displayId -> getDisplayInfoInternal(displayId, Process.myUid())); } else { mDisplayTopologyCoordinator = null; } Loading Loading @@ -6376,4 +6377,9 @@ public final class DisplayManagerService extends SystemService { return android.os.Flags.binderFrozenStateChangeCallback() && com.android.server.am.Flags.deferDisplayEventsWhenFrozen(); } interface DisplayInfoProvider { @Nullable DisplayInfo get(int displayId); } } services/core/java/com/android/server/display/DisplayTopologyCoordinator.java +8 −19 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.server.display; import android.annotation.Nullable; import android.hardware.display.DisplayManagerInternal; import android.hardware.display.DisplayTopology; import android.hardware.display.DisplayTopologyGraph; import android.util.Pair; Loading @@ -28,7 +26,6 @@ import android.view.DisplayInfo; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.server.LocalServices; import com.android.server.display.feature.DisplayManagerFlags; import java.io.PrintWriter; Loading @@ -52,8 +49,6 @@ class DisplayTopologyCoordinator { return info.uniqueId; } private final Injector mInjector; // Persistent data store for display topologies. private final DisplayTopologyStore mTopologyStore; Loading Loading @@ -88,15 +83,17 @@ class DisplayTopologyCoordinator { private final DisplayManagerService.SyncRoot mSyncRoot; private final Runnable mTopologySavedCallback; private final DisplayManagerFlags mFlags; private final DisplayManagerService.DisplayInfoProvider mDisplayInfoProvider; DisplayTopologyCoordinator(BooleanSupplier isExtendedDisplayAllowed, BooleanSupplier shouldIncludeDefaultDisplayInTopology, Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> onTopologyChangedCallback, Executor topologyChangeExecutor, DisplayManagerService.SyncRoot syncRoot, Runnable topologySavedCallback, DisplayManagerFlags flags) { Runnable topologySavedCallback, DisplayManagerFlags flags, DisplayManagerService.DisplayInfoProvider displayInfoProvider) { this(new Injector(), isExtendedDisplayAllowed, shouldIncludeDefaultDisplayInTopology, onTopologyChangedCallback, topologyChangeExecutor, syncRoot, topologySavedCallback, flags); flags, displayInfoProvider); } @VisibleForTesting Loading @@ -104,8 +101,8 @@ class DisplayTopologyCoordinator { BooleanSupplier shouldIncludeDefaultDisplayInTopology, Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> onTopologyChangedCallback, Executor topologyChangeExecutor, DisplayManagerService.SyncRoot syncRoot, Runnable topologySavedCallback, DisplayManagerFlags flags) { mInjector = injector; Runnable topologySavedCallback, DisplayManagerFlags flags, DisplayManagerService.DisplayInfoProvider displayInfoProvider) { mTopology = injector.getTopology(); mIsExtendedDisplayAllowed = isExtendedDisplayAllowed; mShouldIncludeDefaultDisplayInTopology = shouldIncludeDefaultDisplayInTopology; Loading @@ -116,6 +113,7 @@ class DisplayTopologyCoordinator { mDisplayIdToUniqueIdMapping, mUniqueIdToDisplayIdMapping); mTopologySavedCallback = topologySavedCallback; mFlags = flags; mDisplayInfoProvider = displayInfoProvider; } /** Loading Loading @@ -182,7 +180,7 @@ class DisplayTopologyCoordinator { if (displayId != Display.DEFAULT_DISPLAY && !mShouldIncludeDefaultDisplayInTopology.getAsBoolean() && mTopology.isEmpty()) { onDisplayAdded(mInjector.getDisplayInfo(Display.DEFAULT_DISPLAY)); onDisplayAdded(mDisplayInfoProvider.get(Display.DEFAULT_DISPLAY)); } } } Loading Loading @@ -318,9 +316,6 @@ class DisplayTopologyCoordinator { @VisibleForTesting static class Injector { private final DisplayManagerInternal mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class); DisplayTopology getTopology() { return new DisplayTopology(); } Loading @@ -340,11 +335,5 @@ class DisplayTopologyCoordinator { } }); } @Nullable DisplayInfo getDisplayInfo(int displayId) { return mDisplayManagerInternal == null ? null : mDisplayManagerInternal.getDisplayInfo(displayId); } } } services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt +2 −4 Original line number Diff line number Diff line Loading @@ -69,9 +69,7 @@ class DisplayTopologyCoordinatorTest { override fun createTopologyStore( displayIdToUniqueId: SparseArray<String>, uniqueIdToDisplayId: MutableMap<String, Int> ) = mockTopologyStore override fun getDisplayInfo(displayId: Int) = displayInfos.get(displayId) ) = mockTopologyStore } whenever(mockIsExtendedDisplayAllowed()).thenReturn(true) whenever(mockTopology.copy()).thenReturn(mockTopologyCopy) Loading @@ -79,7 +77,7 @@ class DisplayTopologyCoordinatorTest { coordinator = DisplayTopologyCoordinator(injector, mockIsExtendedDisplayAllowed, mockShouldIncludeDefaultDisplayInTopology, mockTopologyChangedCallback, topologyChangeExecutor, DisplayManagerService.SyncRoot(), mockTopologySavedCallback, mockFlags) mockFlags, displayInfos::get) } @Test Loading Loading
services/core/java/com/android/server/display/DisplayManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -699,7 +699,8 @@ public final class DisplayManagerService extends SystemService { mDisplayTopologyCoordinator = new DisplayTopologyCoordinator( this::isExtendedDisplayAllowed, this::shouldIncludeDefaultDisplayInTopology, topologyChangedCallback, new HandlerExecutor(mHandler), mSyncRoot, backupManager::dataChanged, mFlags); backupManager::dataChanged, mFlags, displayId -> getDisplayInfoInternal(displayId, Process.myUid())); } else { mDisplayTopologyCoordinator = null; } Loading Loading @@ -6376,4 +6377,9 @@ public final class DisplayManagerService extends SystemService { return android.os.Flags.binderFrozenStateChangeCallback() && com.android.server.am.Flags.deferDisplayEventsWhenFrozen(); } interface DisplayInfoProvider { @Nullable DisplayInfo get(int displayId); } }
services/core/java/com/android/server/display/DisplayTopologyCoordinator.java +8 −19 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.server.display; import android.annotation.Nullable; import android.hardware.display.DisplayManagerInternal; import android.hardware.display.DisplayTopology; import android.hardware.display.DisplayTopologyGraph; import android.util.Pair; Loading @@ -28,7 +26,6 @@ import android.view.DisplayInfo; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.server.LocalServices; import com.android.server.display.feature.DisplayManagerFlags; import java.io.PrintWriter; Loading @@ -52,8 +49,6 @@ class DisplayTopologyCoordinator { return info.uniqueId; } private final Injector mInjector; // Persistent data store for display topologies. private final DisplayTopologyStore mTopologyStore; Loading Loading @@ -88,15 +83,17 @@ class DisplayTopologyCoordinator { private final DisplayManagerService.SyncRoot mSyncRoot; private final Runnable mTopologySavedCallback; private final DisplayManagerFlags mFlags; private final DisplayManagerService.DisplayInfoProvider mDisplayInfoProvider; DisplayTopologyCoordinator(BooleanSupplier isExtendedDisplayAllowed, BooleanSupplier shouldIncludeDefaultDisplayInTopology, Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> onTopologyChangedCallback, Executor topologyChangeExecutor, DisplayManagerService.SyncRoot syncRoot, Runnable topologySavedCallback, DisplayManagerFlags flags) { Runnable topologySavedCallback, DisplayManagerFlags flags, DisplayManagerService.DisplayInfoProvider displayInfoProvider) { this(new Injector(), isExtendedDisplayAllowed, shouldIncludeDefaultDisplayInTopology, onTopologyChangedCallback, topologyChangeExecutor, syncRoot, topologySavedCallback, flags); flags, displayInfoProvider); } @VisibleForTesting Loading @@ -104,8 +101,8 @@ class DisplayTopologyCoordinator { BooleanSupplier shouldIncludeDefaultDisplayInTopology, Consumer<Pair<DisplayTopology, DisplayTopologyGraph>> onTopologyChangedCallback, Executor topologyChangeExecutor, DisplayManagerService.SyncRoot syncRoot, Runnable topologySavedCallback, DisplayManagerFlags flags) { mInjector = injector; Runnable topologySavedCallback, DisplayManagerFlags flags, DisplayManagerService.DisplayInfoProvider displayInfoProvider) { mTopology = injector.getTopology(); mIsExtendedDisplayAllowed = isExtendedDisplayAllowed; mShouldIncludeDefaultDisplayInTopology = shouldIncludeDefaultDisplayInTopology; Loading @@ -116,6 +113,7 @@ class DisplayTopologyCoordinator { mDisplayIdToUniqueIdMapping, mUniqueIdToDisplayIdMapping); mTopologySavedCallback = topologySavedCallback; mFlags = flags; mDisplayInfoProvider = displayInfoProvider; } /** Loading Loading @@ -182,7 +180,7 @@ class DisplayTopologyCoordinator { if (displayId != Display.DEFAULT_DISPLAY && !mShouldIncludeDefaultDisplayInTopology.getAsBoolean() && mTopology.isEmpty()) { onDisplayAdded(mInjector.getDisplayInfo(Display.DEFAULT_DISPLAY)); onDisplayAdded(mDisplayInfoProvider.get(Display.DEFAULT_DISPLAY)); } } } Loading Loading @@ -318,9 +316,6 @@ class DisplayTopologyCoordinator { @VisibleForTesting static class Injector { private final DisplayManagerInternal mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class); DisplayTopology getTopology() { return new DisplayTopology(); } Loading @@ -340,11 +335,5 @@ class DisplayTopologyCoordinator { } }); } @Nullable DisplayInfo getDisplayInfo(int displayId) { return mDisplayManagerInternal == null ? null : mDisplayManagerInternal.getDisplayInfo(displayId); } } }
services/tests/displayservicetests/src/com/android/server/display/DisplayTopologyCoordinatorTest.kt +2 −4 Original line number Diff line number Diff line Loading @@ -69,9 +69,7 @@ class DisplayTopologyCoordinatorTest { override fun createTopologyStore( displayIdToUniqueId: SparseArray<String>, uniqueIdToDisplayId: MutableMap<String, Int> ) = mockTopologyStore override fun getDisplayInfo(displayId: Int) = displayInfos.get(displayId) ) = mockTopologyStore } whenever(mockIsExtendedDisplayAllowed()).thenReturn(true) whenever(mockTopology.copy()).thenReturn(mockTopologyCopy) Loading @@ -79,7 +77,7 @@ class DisplayTopologyCoordinatorTest { coordinator = DisplayTopologyCoordinator(injector, mockIsExtendedDisplayAllowed, mockShouldIncludeDefaultDisplayInTopology, mockTopologyChangedCallback, topologyChangeExecutor, DisplayManagerService.SyncRoot(), mockTopologySavedCallback, mockFlags) mockFlags, displayInfos::get) } @Test Loading