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

Commit 012123b1 authored by Matthew DeVore's avatar Matthew DeVore
Browse files

Do not show entry point when no CD attached

Do not show External Displays entry point unless one (or more) external
displays is actually attached.

Flag: com.android.settings.flags.display_topology_pane_in_display_list
Bug: b/352648432
Test: atest ExternalDisplayPreferenceFragmentTest.java
Test: attach one external display and open CD settings - verify the topology pane is shown
Test: add and remove an external display and verify the connected device entry point is added and removed
Change-Id: If263e98aeaf7be2778c1e8a1cbafc7e2345bb0c5
parent fe0c7809
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -21,8 +21,8 @@ import static android.view.Display.INVALID_DISPLAY;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_HELP_URL;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.forceShowDisplayList;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isTopologyPaneEnabled;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isUseDisplaySettingEnabled;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isResolutionSettingEnabled;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isRotationSettingEnabled;
@@ -366,7 +366,7 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
    private void updateScreenForDisplayId(final int displayId,
            @NonNull final PrefRefresh screen, @NonNull Context context) {
        final boolean forceShowList = displayId == INVALID_DISPLAY
                && mInjector != null && forceShowDisplayList(mInjector.getFlags());
                && isTopologyPaneEnabled(mInjector);
        final var displaysToShow = externalDisplaysToShow(displayId);

        if (!forceShowList && displaysToShow.isEmpty() && displayId == INVALID_DISPLAY) {
@@ -430,7 +430,7 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen

    private void showDisplaysList(@NonNull List<Display> displaysToShow,
                                  @NonNull PrefRefresh screen, @NonNull Context context) {
        if (mInjector != null && mInjector.getFlags().displayTopologyPaneInDisplayList()) {
        if (isTopologyPaneEnabled(mInjector)) {
            screen.addPreference(getDisplayTopologyPreference(context));
            if (!displaysToShow.isEmpty()) {
                screen.addPreference(getMirrorPreference(context));
+4 −8
Original line number Diff line number Diff line
@@ -323,14 +323,6 @@ public class ExternalDisplaySettingsConfiguration {
                || flags.displayTopologyPaneInDisplayList();
    }

    /**
     * If true, indicates the display list activity should be shown even if there is only one
     * display.
     */
    public static boolean forceShowDisplayList(@NonNull FeatureFlags flags) {
        return flags.displayTopologyPaneInDisplayList();
    }

    static boolean isDisplayAllowed(@NonNull Display display,
            @NonNull SystemServicesProvider props) {
        return display.getType() == Display.TYPE_EXTERNAL
@@ -338,6 +330,10 @@ public class ExternalDisplaySettingsConfiguration {
                || isVirtualDisplayAllowed(display, props);
    }

    static boolean isTopologyPaneEnabled(@Nullable Injector injector) {
        return injector != null && injector.getFlags().displayTopologyPaneInDisplayList();
    }

    static boolean isVirtualDisplayAllowed(@NonNull Display display,
            @NonNull SystemServicesProvider properties) {
        var sysProp = properties.getSystemProperty(VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY);
+0 −5
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.settings.connecteddevice.display;

import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.forceShowDisplayList;
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed;

import android.content.Context;
@@ -143,10 +142,6 @@ public class ExternalDisplayUpdater {
            }
        }

        if (forceShowDisplayList(mInjector.getFlags())) {
            return context.getString(R.string.external_display_off);
        }

        for (var display : mInjector.getAllDisplays()) {
            if (display != null && isDisplayAllowed(display, mInjector)) {
                return context.getString(R.string.external_display_off);