diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-04-27 17:56:09 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-04-27 17:56:09 +0000 |
commit | 0a9e9cd931afdb90f22b10304f6f6e603fab800d (patch) | |
tree | 954f7a51d115a0436a1f069ef42c2f32d1092d8b | |
parent | c7751afa287670dc14c0775fb03c8f1d4d5ac919 (diff) | |
parent | 6247e9a50ccdf1c5de7bb90f8f731ce028e139fd (diff) | |
download | base-0a9e9cd931afdb90f22b10304f6f6e603fab800d.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/22885816'] into sparse-10020972-L41700000960264209.
SPARSE_CHANGE: I3f28027d5e24796ceb01fc1eb164aac8814a1753
Change-Id: I60c53ea74b5e6b538dc3cdb650c9359668979539
2 files changed, 25 insertions, 9 deletions
diff --git a/packages/SettingsLib/DeviceStateRotationLock/src/com.android.settingslib.devicestate/DeviceStateRotationLockSettingsManager.java b/packages/SettingsLib/DeviceStateRotationLock/src/com.android.settingslib.devicestate/DeviceStateRotationLockSettingsManager.java index 76e1df1459e3..ea4ac2c928ce 100644 --- a/packages/SettingsLib/DeviceStateRotationLock/src/com.android.settingslib.devicestate/DeviceStateRotationLockSettingsManager.java +++ b/packages/SettingsLib/DeviceStateRotationLock/src/com.android.settingslib.devicestate/DeviceStateRotationLockSettingsManager.java @@ -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(); } diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/devicestate/DeviceStateRotationLockSettingsManagerTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/devicestate/DeviceStateRotationLockSettingsManagerTest.java index fdefcde3a170..52c2a87cc961 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/devicestate/DeviceStateRotationLockSettingsManagerTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/devicestate/DeviceStateRotationLockSettingsManagerTest.java @@ -114,6 +114,21 @@ public class DeviceStateRotationLockSettingsManagerTest { } @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( R.array.config_perDeviceStateRotationLockDefaults)).thenReturn( |