diff --git a/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceController.java b/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceController.java index 4270e0076b1..7c893be719e 100644 --- a/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceController.java +++ b/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceController.java @@ -81,8 +81,12 @@ public class ShowSurfaceUpdatesPreferenceController extends DeveloperOptionsPref @Override protected void onDeveloperOptionsSwitchDisabled() { - writeShowUpdatesSetting(false); - mPreference.setChecked(false); + if (mPreference.isChecked()) { + // Writing false to the preference when the setting is already off will have a + // side effect of turning on the preference that we wish to avoid + writeShowUpdatesSetting(false); + mPreference.setChecked(false); + } mPreference.setEnabled(false); } diff --git a/tests/robotests/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceControllerTest.java index c3a3a8297f2..57c4ae3cf42 100644 --- a/tests/robotests/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/ShowSurfaceUpdatesPreferenceControllerTest.java @@ -24,6 +24,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -110,7 +111,18 @@ public class ShowSurfaceUpdatesPreferenceControllerTest { } @Test - public void onDeveloperOptionsSwitchDisabled_shouldDisablePreference() { + public void onDeveloperOptionsSwitchDisabled_preferenceUnchecked_shouldNotTurnOffPreference() { + when(mPreference.isChecked()).thenReturn(false); + mController.onDeveloperOptionsSwitchDisabled(); + + verify(mController, never()).writeShowUpdatesSetting(anyBoolean()); + verify(mPreference, never()).setChecked(anyBoolean()); + verify(mPreference).setEnabled(false); + } + + @Test + public void onDeveloperOptionsSwitchDisabled_preferenceChecked_shouldTurnOffPreference() { + when(mPreference.isChecked()).thenReturn(true); mController.onDeveloperOptionsSwitchDisabled(); verify(mController).writeShowUpdatesSetting(false);