From 986f2ecc55b2b40f04c4508e8eb160f5894bc96f Mon Sep 17 00:00:00 2001 From: Beverly Date: Thu, 21 Feb 2019 10:53:48 -0500 Subject: [PATCH] Make PreventRingingSwitch preference clickable - Talk back says the preference is clickable Test: make ROBOTEST_FILTER=PreventRingingSwitchPreferenceControllerTest RunSettingsRoboTests -j40 Bug: 124827588 Change-Id: Ia409bbc6516f6aa11975726691131f1fad1518fd --- .../PreventRingingSwitchPreferenceController.java | 11 +++++++++++ ...ventRingingSwitchPreferenceControllerTest.java | 15 +++++++++++++++ 2 files changed, 26 insertions(+) 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()); + } }