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

Commit 0736fbfd authored by Kriti Dang's avatar Kriti Dang Committed by Android (Google) Code Review
Browse files

Merge "Initialise the brightness value with Float.NaN in PersistentDataStore" into tm-qpr-dev

parents 6d4dc228 f49d3de3
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -619,7 +619,7 @@ final class PersistentDataStore {

    private static final class DisplayState {
        private int mColorMode;
        private float mBrightness;
        private float mBrightness = Float.NaN;
        private int mWidth;
        private int mHeight;
        private float mRefreshRate;
@@ -700,7 +700,11 @@ final class PersistentDataStore {
                        break;
                    case TAG_BRIGHTNESS_VALUE:
                        String brightness = parser.nextText();
                        try {
                            mBrightness = Float.parseFloat(brightness);
                        } catch (NumberFormatException e) {
                            mBrightness = Float.NaN;
                        }
                        break;
                    case TAG_BRIGHTNESS_CONFIGURATIONS:
                        mDisplayBrightnessConfigurations.loadFromXml(parser);
@@ -727,7 +731,9 @@ final class PersistentDataStore {
            serializer.endTag(null, TAG_COLOR_MODE);

            serializer.startTag(null, TAG_BRIGHTNESS_VALUE);
            if (!Float.isNaN(mBrightness)) {
                serializer.text(Float.toString(mBrightness));
            }
            serializer.endTag(null, TAG_BRIGHTNESS_VALUE);

            serializer.startTag(null, TAG_BRIGHTNESS_CONFIGURATIONS);
+34 −0
Original line number Diff line number Diff line
@@ -344,6 +344,40 @@ public class PersistentDataStoreTest {
        assertEquals(85.3f, newDataStore.getUserPreferredRefreshRate(testDisplayDevice), 0.1f);
    }

    @Test
    public void testBrightnessInitialisesWithInvalidFloat() {
        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;
            }
        };

        // Set any value which initialises Display state
        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();
        assertTrue(Float.isNaN(mDataStore.getBrightness(testDisplayDevice)));
    }


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