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 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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user