Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c37a4f3 authored by Kriti Dang's avatar Kriti Dang
Browse files

Adding the missing display mode strings to persistentDataStore

Bug: 244768501
Test: atest PersistentDataStoreTest#testStoreAndRestoreResolution
Test: atest PersistentDataStoreTest#testStoreAndRestoreRefreshRate
Change-Id: I24e123652a0591b55b02819e946ac77c7f31817d
parent 6bf944b7
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -1759,9 +1759,13 @@ public final class DisplayManagerService extends SystemService {
        if (displayDevice == null) {
            return;
        }
        try {
            mPersistentDataStore.setUserPreferredResolution(
                    displayDevice, resolutionWidth, resolutionHeight);
            mPersistentDataStore.setUserPreferredRefreshRate(displayDevice, refreshRate);
        } finally {
            mPersistentDataStore.saveIfNeeded();
        }
    }

    private void setUserPreferredModeForDisplayLocked(int displayId, Display.Mode mode) {
+35 −0
Original line number Diff line number Diff line
@@ -75,6 +75,11 @@ import java.util.Objects;
 *                  </brightness-curve>
 *              </brightness-configuration>
 *          </brightness-configurations>
 *          <display-mode>0<
 *              <resolution-width>1080</resolution-width>
 *              <resolution-height>1920</resolution-height>
 *              <refresh-rate>60</refresh-rate>
 *          </display-mode>
 *      </display>
 *  </display-states>
 *  <stable-device-values>
@@ -121,6 +126,10 @@ final class PersistentDataStore {
    private static final String ATTR_PACKAGE_NAME = "package-name";
    private static final String ATTR_TIME_STAMP = "timestamp";

    private static final String TAG_RESOLUTION_WIDTH = "resolution-width";
    private static final String TAG_RESOLUTION_HEIGHT = "resolution-height";
    private static final String TAG_REFRESH_RATE = "refresh-rate";

    // Remembered Wifi display devices.
    private ArrayList<WifiDisplay> mRememberedWifiDisplays = new ArrayList<WifiDisplay>();

@@ -696,6 +705,18 @@ final class PersistentDataStore {
                    case TAG_BRIGHTNESS_CONFIGURATIONS:
                        mDisplayBrightnessConfigurations.loadFromXml(parser);
                        break;
                    case TAG_RESOLUTION_WIDTH:
                        String width = parser.nextText();
                        mWidth = Integer.parseInt(width);
                        break;
                    case TAG_RESOLUTION_HEIGHT:
                        String height = parser.nextText();
                        mHeight = Integer.parseInt(height);
                        break;
                    case TAG_REFRESH_RATE:
                        String refreshRate = parser.nextText();
                        mRefreshRate = Float.parseFloat(refreshRate);
                        break;
                }
            }
        }
@@ -712,6 +733,18 @@ final class PersistentDataStore {
            serializer.startTag(null, TAG_BRIGHTNESS_CONFIGURATIONS);
            mDisplayBrightnessConfigurations.saveToXml(serializer);
            serializer.endTag(null, TAG_BRIGHTNESS_CONFIGURATIONS);

            serializer.startTag(null, TAG_RESOLUTION_WIDTH);
            serializer.text(Integer.toString(mWidth));
            serializer.endTag(null, TAG_RESOLUTION_WIDTH);

            serializer.startTag(null, TAG_RESOLUTION_HEIGHT);
            serializer.text(Integer.toString(mHeight));
            serializer.endTag(null, TAG_RESOLUTION_HEIGHT);

            serializer.startTag(null, TAG_REFRESH_RATE);
            serializer.text(Float.toString(mRefreshRate));
            serializer.endTag(null, TAG_REFRESH_RATE);
        }

        public void dump(final PrintWriter pw, final String prefix) {
@@ -719,6 +752,8 @@ final class PersistentDataStore {
            pw.println(prefix + "BrightnessValue=" + mBrightness);
            pw.println(prefix + "DisplayBrightnessConfigurations: ");
            mDisplayBrightnessConfigurations.dump(pw, prefix);
            pw.println(prefix + "Resolution=" + mWidth + " " + mHeight);
            pw.println(prefix + "RefreshRate=" + mRefreshRate);
        }
    }

+69 −0
Original line number Diff line number Diff line
@@ -275,6 +275,75 @@ public class PersistentDataStoreTest {
        assertNull(mDataStore.getBrightnessConfiguration(userSerial));
    }

    @Test
    public void testStoreAndRestoreResolution() {
        final String uniqueDisplayId = "test:123";
        DisplayDevice testDisplayDevice = new DisplayDevice(null, null, uniqueDisplayId, null) {
            @Override
            public boolean hasStableUniqueId() {
                return true;
            }

            @Override
            public DisplayDeviceInfo getDisplayDeviceInfoLocked() {
                return null;
            }
        };
        int width = 35;
        int height = 45;
        mDataStore.loadIfNeeded();
        mDataStore.setUserPreferredResolution(testDisplayDevice, width, height);

        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        mInjector.setWriteStream(baos);
        mDataStore.saveIfNeeded();
        mTestLooper.dispatchAll();
        assertTrue(mInjector.wasWriteSuccessful());
        TestInjector newInjector = new TestInjector();
        PersistentDataStore newDataStore = new PersistentDataStore(newInjector);
        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
        newInjector.setReadStream(bais);
        newDataStore.loadIfNeeded();
        assertNotNull(newDataStore.getUserPreferredResolution(testDisplayDevice));
        assertEquals(35, newDataStore.getUserPreferredResolution(testDisplayDevice).x);
        assertEquals(35, mDataStore.getUserPreferredResolution(testDisplayDevice).x);
        assertEquals(45, newDataStore.getUserPreferredResolution(testDisplayDevice).y);
        assertEquals(45, mDataStore.getUserPreferredResolution(testDisplayDevice).y);
    }

    @Test
    public void testStoreAndRestoreRefreshRate() {
        final String uniqueDisplayId = "test:123";
        DisplayDevice testDisplayDevice = new DisplayDevice(null, null, uniqueDisplayId, null) {
            @Override
            public boolean hasStableUniqueId() {
                return true;
            }

            @Override
            public DisplayDeviceInfo getDisplayDeviceInfoLocked() {
                return null;
            }
        };
        float refreshRate = 85.3f;
        mDataStore.loadIfNeeded();
        mDataStore.setUserPreferredRefreshRate(testDisplayDevice, refreshRate);

        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        mInjector.setWriteStream(baos);
        mDataStore.saveIfNeeded();
        mTestLooper.dispatchAll();
        assertTrue(mInjector.wasWriteSuccessful());
        TestInjector newInjector = new TestInjector();
        PersistentDataStore newDataStore = new PersistentDataStore(newInjector);
        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
        newInjector.setReadStream(bais);
        newDataStore.loadIfNeeded();
        assertNotNull(newDataStore.getUserPreferredRefreshRate(testDisplayDevice));
        assertEquals(85.3f, mDataStore.getUserPreferredRefreshRate(testDisplayDevice), 01.f);
        assertEquals(85.3f, newDataStore.getUserPreferredRefreshRate(testDisplayDevice), 0.1f);
    }

    public class TestInjector extends PersistentDataStore.Injector {
        private InputStream mReadStream;
        private OutputStream mWriteStream;