Merge "Fixes foldable autorotation setting being out of sync in QS and Settings" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b8dfb743ba
@@ -62,7 +62,6 @@ public final class DeviceStateRotationLockSettingsManager {
|
||||
private SparseIntArray mPostureRotationLockSettings;
|
||||
private SparseIntArray mPostureDefaultRotationLockSettings;
|
||||
private SparseIntArray mPostureRotationLockFallbackSettings;
|
||||
private String mLastSettingValue;
|
||||
private List<SettableDeviceState> mSettableDeviceStates;
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -209,10 +208,7 @@ public final class DeviceStateRotationLockSettingsManager {
|
||||
}
|
||||
|
||||
private void initializeInMemoryMap() {
|
||||
String serializedSetting =
|
||||
mSecureSettings.getStringForUser(
|
||||
Settings.Secure.DEVICE_STATE_ROTATION_LOCK,
|
||||
UserHandle.USER_CURRENT);
|
||||
String serializedSetting = getPersistedSettingValue();
|
||||
if (TextUtils.isEmpty(serializedSetting)) {
|
||||
// No settings saved, we should load the defaults and persist them.
|
||||
fallbackOnDefaults();
|
||||
@@ -290,19 +286,25 @@ public final class DeviceStateRotationLockSettingsManager {
|
||||
}
|
||||
|
||||
private void persistSettingIfChanged(String newSettingValue) {
|
||||
String lastSettingValue = getPersistedSettingValue();
|
||||
Log.v(TAG, "persistSettingIfChanged: "
|
||||
+ "last=" + mLastSettingValue + ", "
|
||||
+ "last=" + lastSettingValue + ", "
|
||||
+ "new=" + newSettingValue);
|
||||
if (TextUtils.equals(mLastSettingValue, newSettingValue)) {
|
||||
if (TextUtils.equals(lastSettingValue, newSettingValue)) {
|
||||
return;
|
||||
}
|
||||
mLastSettingValue = newSettingValue;
|
||||
mSecureSettings.putStringForUser(
|
||||
Settings.Secure.DEVICE_STATE_ROTATION_LOCK,
|
||||
/* value= */ newSettingValue,
|
||||
UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
private String getPersistedSettingValue() {
|
||||
return mSecureSettings.getStringForUser(
|
||||
Settings.Secure.DEVICE_STATE_ROTATION_LOCK,
|
||||
UserHandle.USER_CURRENT);
|
||||
}
|
||||
|
||||
private void loadDefaults() {
|
||||
mSettableDeviceStates = new ArrayList<>(mPostureRotationLockDefaults.length);
|
||||
mPostureDefaultRotationLockSettings = new SparseIntArray(
|
||||
@@ -351,7 +353,6 @@ public final class DeviceStateRotationLockSettingsManager {
|
||||
pw.println("mDeviceStateRotationLockSettings: " + mPostureRotationLockSettings);
|
||||
pw.println("mPostureRotationLockFallbackSettings: " + mPostureRotationLockFallbackSettings);
|
||||
pw.println("mSettableDeviceStates: " + mSettableDeviceStates);
|
||||
pw.println("mLastSettingValue: " + mLastSettingValue);
|
||||
pw.decreaseIndent();
|
||||
}
|
||||
|
||||
|
||||
@@ -113,6 +113,21 @@ public class DeviceStateRotationLockSettingsManagerTest {
|
||||
assertThat(mNumSettingsChanges).isEqualTo(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateSetting_twiceWithSameValue_persistedValueDifferent_persistsAgain() {
|
||||
mManager.updateSetting(/* deviceState= */ 1, /* rotationLocked= */ true);
|
||||
// This persists a different setting than what was set above. It simulates the persisted
|
||||
// setting being changed from a different process.
|
||||
persistSettings("0:1:1:2:2:2");
|
||||
mNumSettingsChanges = 0;
|
||||
|
||||
// Updating again with the same value as in the first line of the test should persist the
|
||||
// setting, as it is different to what is actually persisted.
|
||||
mManager.updateSetting(/* deviceState= */ 1, /* rotationLocked= */ true);
|
||||
|
||||
assertThat(mNumSettingsChanges).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSettableDeviceStates_returnsExpectedValuesInOriginalOrder() {
|
||||
when(mMockResources.getStringArray(
|
||||
|
||||
Reference in New Issue
Block a user