diff --git a/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java b/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java index 35ff2ec5cf4..e21bb7563bf 100644 --- a/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java +++ b/src/com/android/settings/gestures/PreventRingingSwitchPreferenceController.java @@ -61,6 +61,17 @@ public class PreventRingingSwitchPreferenceController extends AbstractPreference LayoutPreference pref = screen.findPreference(getPreferenceKey()); if (pref != null) { mSettingObserver = new SettingObserver(pref); + pref.setOnPreferenceClickListener(preference -> { + int preventRinging = Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.VOLUME_HUSH_GESTURE, + Settings.Secure.VOLUME_HUSH_VIBRATE); + boolean isChecked = preventRinging != Settings.Secure.VOLUME_HUSH_OFF; + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.VOLUME_HUSH_GESTURE, isChecked + ? Settings.Secure.VOLUME_HUSH_OFF + : Settings.Secure.VOLUME_HUSH_VIBRATE); + return true; + }); mSwitch = pref.findViewById(R.id.switch_bar); if (mSwitch != null) { mSwitch.addOnSwitchChangeListener(this); diff --git a/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java index 5f221f578f7..85eeacc4ce2 100644 --- a/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/gestures/PreventRingingSwitchPreferenceControllerTest.java @@ -18,6 +18,7 @@ package com.android.settings.gestures; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; @@ -29,8 +30,10 @@ import android.content.res.Resources; import android.provider.Settings; import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; import com.android.settings.widget.SwitchBar; +import com.android.settingslib.widget.LayoutPreference; import org.junit.Before; import org.junit.Test; @@ -95,4 +98,16 @@ public class PreventRingingSwitchPreferenceControllerTest { mController.updateState(mPreference); verify(mController.mSwitch, times(1)).setChecked(true); } + + @Test + public void testPreferenceClickListenerAttached() { + PreferenceScreen preferenceScreen = mock(PreferenceScreen.class); + LayoutPreference mLayoutPreference = mock(LayoutPreference.class); + when(preferenceScreen.findPreference(mController.getPreferenceKey())).thenReturn( + mLayoutPreference); + mController.displayPreference(preferenceScreen); + + verify(mLayoutPreference, times(1)) + .setOnPreferenceClickListener(any()); + } }