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

Commit 649dd54d 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

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



Change-Id: Id39f06a905b9d94953d25489258ba92df3c47f61
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 95988d54 9d945ba7
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;