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
This commit is contained in:
@@ -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.EXTERNAL_DISPLAY_HELP_URL;
|
||||||
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG;
|
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.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.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.isUseDisplaySettingEnabled;
|
||||||
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isResolutionSettingEnabled;
|
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isResolutionSettingEnabled;
|
||||||
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isRotationSettingEnabled;
|
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isRotationSettingEnabled;
|
||||||
@@ -366,7 +366,7 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
|
|||||||
private void updateScreenForDisplayId(final int displayId,
|
private void updateScreenForDisplayId(final int displayId,
|
||||||
@NonNull final PrefRefresh screen, @NonNull Context context) {
|
@NonNull final PrefRefresh screen, @NonNull Context context) {
|
||||||
final boolean forceShowList = displayId == INVALID_DISPLAY
|
final boolean forceShowList = displayId == INVALID_DISPLAY
|
||||||
&& mInjector != null && forceShowDisplayList(mInjector.getFlags());
|
&& isTopologyPaneEnabled(mInjector);
|
||||||
final var displaysToShow = externalDisplaysToShow(displayId);
|
final var displaysToShow = externalDisplaysToShow(displayId);
|
||||||
|
|
||||||
if (!forceShowList && displaysToShow.isEmpty() && displayId == INVALID_DISPLAY) {
|
if (!forceShowList && displaysToShow.isEmpty() && displayId == INVALID_DISPLAY) {
|
||||||
@@ -430,7 +430,7 @@ public class ExternalDisplayPreferenceFragment extends SettingsPreferenceFragmen
|
|||||||
|
|
||||||
private void showDisplaysList(@NonNull List<Display> displaysToShow,
|
private void showDisplaysList(@NonNull List<Display> displaysToShow,
|
||||||
@NonNull PrefRefresh screen, @NonNull Context context) {
|
@NonNull PrefRefresh screen, @NonNull Context context) {
|
||||||
if (mInjector != null && mInjector.getFlags().displayTopologyPaneInDisplayList()) {
|
if (isTopologyPaneEnabled(mInjector)) {
|
||||||
screen.addPreference(getDisplayTopologyPreference(context));
|
screen.addPreference(getDisplayTopologyPreference(context));
|
||||||
if (!displaysToShow.isEmpty()) {
|
if (!displaysToShow.isEmpty()) {
|
||||||
screen.addPreference(getMirrorPreference(context));
|
screen.addPreference(getMirrorPreference(context));
|
||||||
|
@@ -323,14 +323,6 @@ public class ExternalDisplaySettingsConfiguration {
|
|||||||
|| flags.displayTopologyPaneInDisplayList();
|
|| 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,
|
static boolean isDisplayAllowed(@NonNull Display display,
|
||||||
@NonNull SystemServicesProvider props) {
|
@NonNull SystemServicesProvider props) {
|
||||||
return display.getType() == Display.TYPE_EXTERNAL
|
return display.getType() == Display.TYPE_EXTERNAL
|
||||||
@@ -338,6 +330,10 @@ public class ExternalDisplaySettingsConfiguration {
|
|||||||
|| isVirtualDisplayAllowed(display, props);
|
|| isVirtualDisplayAllowed(display, props);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean isTopologyPaneEnabled(@Nullable Injector injector) {
|
||||||
|
return injector != null && injector.getFlags().displayTopologyPaneInDisplayList();
|
||||||
|
}
|
||||||
|
|
||||||
static boolean isVirtualDisplayAllowed(@NonNull Display display,
|
static boolean isVirtualDisplayAllowed(@NonNull Display display,
|
||||||
@NonNull SystemServicesProvider properties) {
|
@NonNull SystemServicesProvider properties) {
|
||||||
var sysProp = properties.getSystemProperty(VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY);
|
var sysProp = properties.getSystemProperty(VIRTUAL_DISPLAY_PACKAGE_NAME_SYSTEM_PROPERTY);
|
||||||
|
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package com.android.settings.connecteddevice.display;
|
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 static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed;
|
||||||
|
|
||||||
import android.content.Context;
|
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()) {
|
for (var display : mInjector.getAllDisplays()) {
|
||||||
if (display != null && isDisplayAllowed(display, mInjector)) {
|
if (display != null && isDisplayAllowed(display, mInjector)) {
|
||||||
return context.getString(R.string.external_display_off);
|
return context.getString(R.string.external_display_off);
|
||||||
|
Reference in New Issue
Block a user