diff --git a/src/com/android/settings/display/ScreenResolutionFragment.java b/src/com/android/settings/display/ScreenResolutionFragment.java index bc825149c9c..914d4be568a 100644 --- a/src/com/android/settings/display/ScreenResolutionFragment.java +++ b/src/com/android/settings/display/ScreenResolutionFragment.java @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.hardware.display.DisplayManager; +import android.provider.Settings; import android.text.TextUtils; import android.view.Display; @@ -56,6 +57,7 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { private Resources mResources; private static final int FHD_INDEX = 0; private static final int QHD_INDEX = 1; + private static final String RESOLUTION_METRIC_SETTING_KEY = "user_selected_resolution"; private Display mDefaultDisplay; private String[] mScreenResolutionOptions; private Set mResolutions; @@ -157,6 +159,17 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { @VisibleForTesting public void setDisplayMode(final int width) { mDisplayObserver.startObserve(); + + /** For store settings globally. */ + /** TODO(b/238061217): Moving to an atom with the same string */ + Settings.System.putString( + getContext().getContentResolver(), + RESOLUTION_METRIC_SETTING_KEY, + getPreferMode(width).getPhysicalWidth() + + "x" + + getPreferMode(width).getPhysicalHeight()); + + /** Apply the resolution change. */ mDefaultDisplay.setUserPreferredDisplayMode(getPreferMode(width)); } @@ -186,7 +199,7 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { protected boolean setDefaultKey(final String key) { int width = getWidthForResoluitonKey(key); if (width < 0) { - return false; + return false; } setDisplayMode(width); @@ -200,9 +213,8 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { String selectedKey = selected.getKey(); int selectedWidth = getWidthForResoluitonKey(selectedKey); if (!mDisplayObserver.setPendingResolutionChange(selectedWidth)) { - return; + return; } - super.onRadioButtonClicked(selected); } @@ -318,7 +330,7 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { } if (!isDensityChanged() || !isResolutionChangeApplied()) { - return; + return; } restoreDensity(); @@ -353,10 +365,10 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { int currentWidth = getCurrentWidth(); if (selectedWidth == currentWidth) { - return false; + return false; } if (mPreviousWidth.get() != -1 && !isResolutionChangeApplied()) { - return false; + return false; } mPreviousWidth.set(currentWidth); @@ -366,7 +378,7 @@ public class ScreenResolutionFragment extends RadioButtonPickerFragment { private boolean isResolutionChangeApplied() { if (mPreviousWidth.get() == getCurrentWidth()) { - return false; + return false; } return true; diff --git a/tests/unit/src/com/android/settings/display/ScreenResolutionFragmentTest.java b/tests/unit/src/com/android/settings/display/ScreenResolutionFragmentTest.java index b7d37df0d19..4e674d271cb 100644 --- a/tests/unit/src/com/android/settings/display/ScreenResolutionFragmentTest.java +++ b/tests/unit/src/com/android/settings/display/ScreenResolutionFragmentTest.java @@ -27,15 +27,12 @@ import android.view.Display; import androidx.test.annotation.UiThreadTest; import androidx.test.core.app.ApplicationProvider; -import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.settingslib.widget.SelectorWithWidgetPreference; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -@RunWith(AndroidJUnit4.class) public class ScreenResolutionFragmentTest { private Context mContext; @@ -56,6 +53,7 @@ public class ScreenResolutionFragmentTest { public void getDefaultKey_FHD() { Display.Mode mode = new Display.Mode(0, FHD_WIDTH, 0, 0); doReturn(mode).when(mFragment).getDisplayMode(); + doReturn(mContext).when(mFragment).getContext(); mFragment.onAttach(mContext); assertThat(mFragment.getDefaultKey()).isEqualTo(mFragment.getKeyForResolution(FHD_WIDTH)); @@ -66,6 +64,7 @@ public class ScreenResolutionFragmentTest { public void getDefaultKey_QHD() { Display.Mode mode = new Display.Mode(0, QHD_WIDTH, 0, 0); doReturn(mode).when(mFragment).getDisplayMode(); + doReturn(mContext).when(mFragment).getContext(); mFragment.onAttach(mContext); assertThat(mFragment.getDefaultKey()).isEqualTo(mFragment.getKeyForResolution(QHD_WIDTH)); @@ -74,6 +73,7 @@ public class ScreenResolutionFragmentTest { @Test @UiThreadTest public void setDefaultKey_FHD() { + doReturn(mContext).when(mFragment).getContext(); mFragment.onAttach(mContext); mFragment.setDefaultKey(mFragment.getKeyForResolution(FHD_WIDTH)); @@ -84,6 +84,7 @@ public class ScreenResolutionFragmentTest { @Test @UiThreadTest public void setDefaultKey_QHD() { + doReturn(mContext).when(mFragment).getContext(); mFragment.onAttach(mContext); mFragment.setDefaultKey(mFragment.getKeyForResolution(QHD_WIDTH)); @@ -94,6 +95,7 @@ public class ScreenResolutionFragmentTest { @Test @UiThreadTest public void bindPreferenceExtra_setSummary() { + doReturn(mContext).when(mFragment).getContext(); mFragment.onAttach(mContext); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); ScreenResolutionFragment.ScreenResolutionCandidateInfo candidates =