Merge "Import translations. DO NOT MERGE ANYWHERE" into tm-d1-dev
diff --git a/src/com/android/settings/display/ScreenResolutionFragment.java b/src/com/android/settings/display/ScreenResolutionFragment.java
index bc82514..914d4be 100644
--- a/src/com/android/settings/display/ScreenResolutionFragment.java
+++ b/src/com/android/settings/display/ScreenResolutionFragment.java
@@ -26,6 +26,7 @@
 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 @@
     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<Point> mResolutions;
@@ -157,6 +159,17 @@
     @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 @@
     protected boolean setDefaultKey(final String key) {
         int width = getWidthForResoluitonKey(key);
         if (width < 0) {
-          return false;
+            return false;
         }
 
         setDisplayMode(width);
@@ -200,9 +213,8 @@
         String selectedKey = selected.getKey();
         int selectedWidth = getWidthForResoluitonKey(selectedKey);
         if (!mDisplayObserver.setPendingResolutionChange(selectedWidth)) {
-          return;
+            return;
         }
-
         super.onRadioButtonClicked(selected);
     }
 
@@ -318,7 +330,7 @@
             }
 
             if (!isDensityChanged() || !isResolutionChangeApplied()) {
-              return;
+                return;
             }
 
             restoreDensity();
@@ -353,10 +365,10 @@
             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 @@
 
         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 b7d37df..4e674d2 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 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 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 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 @@
     @Test
     @UiThreadTest
     public void setDefaultKey_FHD() {
+        doReturn(mContext).when(mFragment).getContext();
         mFragment.onAttach(mContext);
 
         mFragment.setDefaultKey(mFragment.getKeyForResolution(FHD_WIDTH));
@@ -84,6 +84,7 @@
     @Test
     @UiThreadTest
     public void setDefaultKey_QHD() {
+        doReturn(mContext).when(mFragment).getContext();
         mFragment.onAttach(mContext);
 
         mFragment.setDefaultKey(mFragment.getKeyForResolution(QHD_WIDTH));
@@ -94,6 +95,7 @@
     @Test
     @UiThreadTest
     public void bindPreferenceExtra_setSummary() {
+        doReturn(mContext).when(mFragment).getContext();
         mFragment.onAttach(mContext);
         SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext);
         ScreenResolutionFragment.ScreenResolutionCandidateInfo candidates =