Show built-in display if topology is visible

The topology in the External Displays list will include the built-in
display. For consistency, also show the built-in display along with the
connected displays, so there is a 1:1 correspondence between blocks in
the topology pane and display preference items.

Test: launch external display fragment with zero or one external display, verify built-in display item appears and opens Display settings if tapped
Flag: com.android.settings.flags.display_topology_pane_in_display_list
Bug: b/352648432
Change-Id: Id067034f6af5d0d6fe32f4a8091bc77d1ed75698
This commit is contained in:
Matthew DeVore
2024-11-26 00:31:22 +00:00
parent 0f7bf3062a
commit 4a3af3a735
3 changed files with 86 additions and 10 deletions

View File

@@ -71,6 +71,7 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
private ExternalDisplayPreferenceFragment mFragment;
private int mPreferenceIdFromResource;
private int mDisplayIdArg = INVALID_DISPLAY;
private boolean mLaunchedBuiltinSettings;
private int mResolutionSelectorDisplayId = INVALID_DISPLAY;
@Mock
private MetricsLogger mMockedMetricsLogger;
@@ -106,6 +107,10 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
pref = mPreferenceScreen.findPreference(DisplayTopologyKt.PREFERENCE_KEY);
assertThat(pref).isNull();
pref = mPreferenceScreen.findPreference(
ExternalDisplayPreferenceFragment.BUILTIN_DISPLAY_LIST_PREFERENCE_KEY);
assertThat(pref).isNull();
}
@Test
@@ -124,6 +129,11 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY);
assertThat(listPref).isNotNull();
assertThat(listPref.getPreferenceCount()).isEqualTo(1);
listPref = mPreferenceScreen.findPreference(
ExternalDisplayPreferenceFragment.BUILTIN_DISPLAY_LIST_PREFERENCE_KEY);
assertThat(listPref).isNotNull();
assertThat(listPref.getPreferenceCount()).isEqualTo(1);
}
@Test
@@ -138,11 +148,18 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
var pref = mPreferenceScreen.findPreference(DisplayTopologyKt.PREFERENCE_KEY);
assertThat(pref).isNotNull();
// TODO: add the built-in display to the list, which will cause this preference to not be
// null.
PreferenceCategory listPref =
mPreferenceScreen.findPreference(DISPLAYS_LIST_PREFERENCE_KEY);
assertThat(listPref).isNull();
listPref = mPreferenceScreen.findPreference(
ExternalDisplayPreferenceFragment.BUILTIN_DISPLAY_LIST_PREFERENCE_KEY);
assertThat(listPref).isNotNull();
assertThat(listPref.getPreferenceCount()).isEqualTo(1);
var builtinPref = listPref.getPreference(0);
assertThat(builtinPref.getOnPreferenceClickListener().onPreferenceClick(builtinPref))
.isTrue();
assertThat(mLaunchedBuiltinSettings).isTrue();
}
@Test
@@ -428,10 +445,15 @@ public class ExternalDisplayPreferenceFragmentTest extends ExternalDisplayTestBa
}
@Override
protected void launchDisplaySettings(final int displayId) {
protected void launchExternalDisplaySettings(final int displayId) {
mDisplayIdArg = displayId;
}
@Override
protected void launchBuiltinDisplaySettings() {
mLaunchedBuiltinSettings = true;
}
@Override
protected void writePreferenceClickMetric(Preference preference) {
mLogger.writePreferenceClickMetric(preference);