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 mPostureRotationLockSettings;
private SparseIntArray mPostureDefaultRotationLockSettings; private SparseIntArray mPostureDefaultRotationLockSettings;
private SparseIntArray mPostureRotationLockFallbackSettings; private SparseIntArray mPostureRotationLockFallbackSettings;
private String mLastSettingValue;
private List<SettableDeviceState> mSettableDeviceStates; private List<SettableDeviceState> mSettableDeviceStates;
@VisibleForTesting @VisibleForTesting
@@ -209,10 +208,7 @@ public final class DeviceStateRotationLockSettingsManager {
} }
private void initializeInMemoryMap() { private void initializeInMemoryMap() {
String serializedSetting = String serializedSetting = getPersistedSettingValue();
mSecureSettings.getStringForUser(
Settings.Secure.DEVICE_STATE_ROTATION_LOCK,
UserHandle.USER_CURRENT);
if (TextUtils.isEmpty(serializedSetting)) { if (TextUtils.isEmpty(serializedSetting)) {
// No settings saved, we should load the defaults and persist them. // No settings saved, we should load the defaults and persist them.
fallbackOnDefaults(); fallbackOnDefaults();
@@ -290,19 +286,25 @@ public final class DeviceStateRotationLockSettingsManager {
} }
private void persistSettingIfChanged(String newSettingValue) { private void persistSettingIfChanged(String newSettingValue) {
String lastSettingValue = getPersistedSettingValue();
Log.v(TAG, "persistSettingIfChanged: " Log.v(TAG, "persistSettingIfChanged: "
+ "last=" + mLastSettingValue + ", " + "last=" + lastSettingValue + ", "
+ "new=" + newSettingValue); + "new=" + newSettingValue);
if (TextUtils.equals(mLastSettingValue, newSettingValue)) { if (TextUtils.equals(lastSettingValue, newSettingValue)) {
return; return;
} }
mLastSettingValue = newSettingValue;
mSecureSettings.putStringForUser( mSecureSettings.putStringForUser(
Settings.Secure.DEVICE_STATE_ROTATION_LOCK, Settings.Secure.DEVICE_STATE_ROTATION_LOCK,
/* value= */ newSettingValue, /* value= */ newSettingValue,
UserHandle.USER_CURRENT); UserHandle.USER_CURRENT);
} }
private String getPersistedSettingValue() {
return mSecureSettings.getStringForUser(
Settings.Secure.DEVICE_STATE_ROTATION_LOCK,
UserHandle.USER_CURRENT);
}
private void loadDefaults() { private void loadDefaults() {
mSettableDeviceStates = new ArrayList<>(mPostureRotationLockDefaults.length); mSettableDeviceStates = new ArrayList<>(mPostureRotationLockDefaults.length);
mPostureDefaultRotationLockSettings = new SparseIntArray( mPostureDefaultRotationLockSettings = new SparseIntArray(
@@ -351,7 +353,6 @@ public final class DeviceStateRotationLockSettingsManager {
pw.println("mDeviceStateRotationLockSettings: " + mPostureRotationLockSettings); pw.println("mDeviceStateRotationLockSettings: " + mPostureRotationLockSettings);
pw.println("mPostureRotationLockFallbackSettings: " + mPostureRotationLockFallbackSettings); pw.println("mPostureRotationLockFallbackSettings: " + mPostureRotationLockFallbackSettings);
pw.println("mSettableDeviceStates: " + mSettableDeviceStates); pw.println("mSettableDeviceStates: " + mSettableDeviceStates);
pw.println("mLastSettingValue: " + mLastSettingValue);
pw.decreaseIndent(); pw.decreaseIndent();
} }

View File

@@ -113,6 +113,21 @@ public class DeviceStateRotationLockSettingsManagerTest {
assertThat(mNumSettingsChanges).isEqualTo(3); 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 @Test
public void getSettableDeviceStates_returnsExpectedValuesInOriginalOrder() { public void getSettableDeviceStates_returnsExpectedValuesInOriginalOrder() {
when(mMockResources.getStringArray( when(mMockResources.getStringArray(