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

Commit 930650e9 authored by Piotr Wilczyński's avatar Piotr Wilczyński Committed by Android (Google) Code Review
Browse files

Merge "DisplayInfoProvider for DisplayTopologyCoordinator" into main

parents a6e6daf4 f3a92ba2
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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;
        }
@@ -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);
    }
}
+8 −19
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -52,8 +49,6 @@ class DisplayTopologyCoordinator {
        return info.uniqueId;
    }

    private final Injector mInjector;

    // Persistent data store for display topologies.
    private final DisplayTopologyStore mTopologyStore;

@@ -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
@@ -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;
@@ -116,6 +113,7 @@ class DisplayTopologyCoordinator {
                mDisplayIdToUniqueIdMapping, mUniqueIdToDisplayIdMapping);
        mTopologySavedCallback = topologySavedCallback;
        mFlags = flags;
        mDisplayInfoProvider = displayInfoProvider;
    }

    /**
@@ -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));
            }
        }
    }
@@ -318,9 +316,6 @@ class DisplayTopologyCoordinator {

    @VisibleForTesting
    static class Injector {
        private final DisplayManagerInternal mDisplayManagerInternal
                = LocalServices.getService(DisplayManagerInternal.class);

        DisplayTopology getTopology() {
            return new DisplayTopology();
        }
@@ -340,11 +335,5 @@ class DisplayTopologyCoordinator {
                }
            });
        }

        @Nullable
        DisplayInfo getDisplayInfo(int displayId) {
            return mDisplayManagerInternal == null ? null
                    : mDisplayManagerInternal.getDisplayInfo(displayId);
        }
    }
}
+2 −4
Original line number Diff line number Diff line
@@ -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)
@@ -79,7 +77,7 @@ class DisplayTopologyCoordinatorTest {
        coordinator = DisplayTopologyCoordinator(injector, mockIsExtendedDisplayAllowed,
            mockShouldIncludeDefaultDisplayInTopology, mockTopologyChangedCallback,
            topologyChangeExecutor, DisplayManagerService.SyncRoot(), mockTopologySavedCallback,
            mockFlags)
            mockFlags, displayInfos::get)
    }

    @Test