CD settings: minimal DisplayDevice metadata class
This saves tests from interacting with DisplayManager completely, simplifies the Injector API, and makes mocking that API easier. This addresses the first difficulty I had in converting our tests to Robolectric. Bug: b/399743032 Flag: com.android.settings.flags.display_topology_pane_in_display_list Test: verify disabled and enabled displays appear correctly in display list fragment Test: atest ExternalDisplayPreferenceFragmentTest.java Test: atest ExternalDisplayUpdaterTest.java Test: atest ResolutionPreferenceFragmentTest.java Change-Id: Id43d2f108f3e85e6596eb2271b1de6b1afd2338f
This commit is contained in:
@@ -21,7 +21,6 @@ import static android.view.Display.INVALID_DISPLAY;
|
||||
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.DISPLAY_ID_ARG;
|
||||
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_HELP_URL;
|
||||
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.EXTERNAL_DISPLAY_NOT_FOUND_RESOURCE;
|
||||
import static com.android.settings.connecteddevice.display.ExternalDisplaySettingsConfiguration.isDisplayAllowed;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
@@ -29,7 +28,6 @@ import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.view.Display;
|
||||
import android.view.Display.Mode;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
@@ -50,6 +48,7 @@ import com.android.settingslib.widget.SelectorWithWidgetPreference;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase {
|
||||
private static final String TAG = "ResolutionPreference";
|
||||
@@ -164,7 +163,7 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
return;
|
||||
}
|
||||
var display = mInjector.getDisplay(getDisplayIdArg());
|
||||
if (display == null || !isDisplayAllowed(display, mInjector)) {
|
||||
if (display == null) {
|
||||
screen.removeAll();
|
||||
mTopOptionsPreference = null;
|
||||
mMoreOptionsPreference = null;
|
||||
@@ -210,9 +209,9 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
}
|
||||
|
||||
private void addRemainingPreferences(@NonNull Context context,
|
||||
@NonNull PreferenceCategory group, @NonNull Display display,
|
||||
boolean isSelectedModeFound, @NonNull Mode[] moreModes) {
|
||||
if (moreModes.length == 0) {
|
||||
@NonNull PreferenceCategory group, @NonNull DisplayDevice display,
|
||||
boolean isSelectedModeFound, @NonNull List<Mode> moreModes) {
|
||||
if (moreModes.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
mMoreOptionsExpanded |= !isSelectedModeFound;
|
||||
@@ -220,12 +219,12 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
addModePreferences(context, group, moreModes, /*checkMode=*/ null, display);
|
||||
}
|
||||
|
||||
private Pair<Boolean, Mode[]> addModePreferences(@NonNull Context context,
|
||||
private Pair<Boolean, List<Mode>> addModePreferences(@NonNull Context context,
|
||||
@NonNull PreferenceGroup group,
|
||||
@NonNull Mode[] modes,
|
||||
@NonNull List<Mode> modes,
|
||||
@Nullable ToBooleanFunction<Mode> checkMode,
|
||||
@NonNull Display display) {
|
||||
Display.Mode curMode = display.getMode();
|
||||
@NonNull DisplayDevice display) {
|
||||
Mode curMode = display.getMode();
|
||||
var currentResolution = curMode.getPhysicalWidth() + "x" + curMode.getPhysicalHeight();
|
||||
var rotatedResolution = curMode.getPhysicalHeight() + "x" + curMode.getPhysicalWidth();
|
||||
var skippedModes = new ArrayList<Mode>();
|
||||
@@ -260,7 +259,7 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
isAnyOfModesSelected |= isCurrentMode;
|
||||
group.addPreference(pref);
|
||||
}
|
||||
return new Pair<>(isAnyOfModesSelected, skippedModes.toArray(Mode.EMPTY_ARRAY));
|
||||
return new Pair<>(isAnyOfModesSelected, skippedModes);
|
||||
}
|
||||
|
||||
private boolean isTopMode(@NonNull Mode mode) {
|
||||
@@ -309,7 +308,7 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
}
|
||||
|
||||
private void onDisplayModeClicked(@NonNull SelectorWithWidgetPreference preference,
|
||||
@NonNull Display display) {
|
||||
@NonNull DisplayDevice display) {
|
||||
if (mInjector == null) {
|
||||
return;
|
||||
}
|
||||
@@ -319,7 +318,7 @@ public class ResolutionPreferenceFragment extends SettingsPreferenceFragmentBase
|
||||
for (var mode : display.getSupportedModes()) {
|
||||
if (mode.getPhysicalWidth() == width && mode.getPhysicalHeight() == height
|
||||
&& isAllowedMode(mode)) {
|
||||
mInjector.setUserPreferredDisplayMode(display.getDisplayId(), mode);
|
||||
mInjector.setUserPreferredDisplayMode(display.getId(), mode);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user