Merge "Adding the missing display mode strings to persistentDataStore" into tm-qpr-dev
This commit is contained in:
@@ -1759,9 +1759,13 @@ public final class DisplayManagerService extends SystemService {
|
||||
if (displayDevice == null) {
|
||||
return;
|
||||
}
|
||||
mPersistentDataStore.setUserPreferredResolution(
|
||||
displayDevice, resolutionWidth, resolutionHeight);
|
||||
mPersistentDataStore.setUserPreferredRefreshRate(displayDevice, refreshRate);
|
||||
try {
|
||||
mPersistentDataStore.setUserPreferredResolution(
|
||||
displayDevice, resolutionWidth, resolutionHeight);
|
||||
mPersistentDataStore.setUserPreferredRefreshRate(displayDevice, refreshRate);
|
||||
} finally {
|
||||
mPersistentDataStore.saveIfNeeded();
|
||||
}
|
||||
}
|
||||
|
||||
private void setUserPreferredModeForDisplayLocked(int displayId, Display.Mode mode) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user