From 012123b16528b5c16f359768f25f2b44485b6d75 Mon Sep 17 00:00:00 2001 From: Matthew DeVore Date: Wed, 29 Jan 2025 05:14:42 +0000 Subject: [PATCH] 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 --- .../display/ExternalDisplayPreferenceFragment.java | 6 +++--- .../ExternalDisplaySettingsConfiguration.java | 12 ++++-------- .../display/ExternalDisplayUpdater.java | 5 ----- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java index 8707005c7a1..225ff8d2424 100644 --- a/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java +++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayPreferenceFragment.java @@ -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 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)); diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java index cd62e7bd391..c76d28c32bf 100644 --- a/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java +++ b/src/com/android/settings/connecteddevice/display/ExternalDisplaySettingsConfiguration.java @@ -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); diff --git a/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java b/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java index 99a248fe477..64dd7bb2fdf 100644 --- a/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java +++ b/src/com/android/settings/connecteddevice/display/ExternalDisplayUpdater.java @@ -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);