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

Commit c80c5d09 authored by Kriti Dang's avatar Kriti Dang Committed by Automerger Merge Worker
Browse files

Merge "Adding the missing display mode strings to persistentDataStore" into...

Merge "Adding the missing display mode strings to persistentDataStore" into tm-qpr-dev am: 9d945ba7 am: 649dd54d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20069086



Change-Id: Id69bc569b2c93fca093892761c94f9fa531618d8
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 8b0ce1fb 649dd54d
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;
 *                  &lt;/brightness-curve>
 *              &lt;/brightness-configuration>
 *          &lt;/brightness-configurations>
 *          &lt;display-mode>0&lt;
 *              &lt;resolution-width>1080&lt;/resolution-width>
 *              &lt;resolution-height>1920&lt;/resolution-height>
 *              &lt;refresh-rate>60&lt;/refresh-rate>
 *          &lt;/display-mode>
 *      &lt;/display>
 *  &lt;/display-states>
 *  &lt;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;