Merge "Fixes foldable autorotation setting being out of sync in QS and Settings" into tm-qpr-dev

This commit is contained in:
Treehugger Robot
2023-04-27 13:59:48 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 9 deletions

View File

@@ -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();
}

View File

@@ -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(