Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e000a210 authored by Lais Andrade's avatar Lais Andrade
Browse files

Enable touch feedback settings when the phone is in silent mode

Allow users to change this settings when the phone is in silent mode, if
they prefer to make all interactions as silent as possible in that
context.

Fix: 165478128
Test: [Alarm|HapticFeedback|Media]Vibration[Intensity|Toggle]PreferenceControllerTest
Change-Id: I68f90559b2bf8088f22397412c149e2a4b91cf13
parent 6368af8b
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -37,12 +37,6 @@ public class HapticFeedbackIntensityPreferenceController
                    VibrationAttributes.USAGE_TOUCH);
        }

        @Override
        public boolean isRestrictedByRingerModeSilent() {
            // Touch feedback is disabled when the phone is in silent mode.
            return true;
        }

        @Override
        public int readIntensity() {
            final int hapticFeedbackEnabled = Settings.System.getInt(mContentResolver,
+26 −1
Original line number Diff line number Diff line
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.media.AudioManager;
import android.os.VibrationAttributes;
import android.os.Vibrator;
import android.provider.Settings;
@@ -45,6 +47,7 @@ public class AlarmVibrationIntensityPreferenceControllerTest {
    private static final String PREFERENCE_KEY = "preference_key";

    @Mock private PreferenceScreen mScreen;
    @Mock private AudioManager mAudioManager;

    private Lifecycle mLifecycle;
    private Context mContext;
@@ -56,7 +59,9 @@ public class AlarmVibrationIntensityPreferenceControllerTest {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mLifecycle = new Lifecycle(() -> mLifecycle);
        mContext = ApplicationProvider.getApplicationContext();
        mContext = spy(ApplicationProvider.getApplicationContext());
        when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
        mVibrator = mContext.getSystemService(Vibrator.class);
        mController = new AlarmVibrationIntensityPreferenceController(mContext, PREFERENCE_KEY,
                Vibrator.VIBRATION_INTENSITY_HIGH);
@@ -87,6 +92,26 @@ public class AlarmVibrationIntensityPreferenceControllerTest {
                mVibrator.getDefaultVibrationIntensity(VibrationAttributes.USAGE_ALARM));
    }

    @Test
    public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
        updateSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
        mController.updateState(mPreference);
        assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
        mController.updateState(mPreference);
        assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
        mController.updateState(mPreference);
        assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
        assertThat(mPreference.isEnabled()).isTrue();
    }

    @Test
    public void updateState_shouldDisplayIntensityInSliderPosition() {
        updateSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
+26 −1
Original line number Diff line number Diff line
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.media.AudioManager;
import android.os.VibrationAttributes;
import android.os.Vibrator;
import android.provider.Settings;
@@ -45,6 +47,7 @@ public class AlarmVibrationTogglePreferenceControllerTest {
    private static final String PREFERENCE_KEY = "preference_key";

    @Mock private PreferenceScreen mScreen;
    @Mock AudioManager mAudioManager;

    private Lifecycle mLifecycle;
    private Context mContext;
@@ -56,7 +59,9 @@ public class AlarmVibrationTogglePreferenceControllerTest {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mLifecycle = new Lifecycle(() -> mLifecycle);
        mContext = ApplicationProvider.getApplicationContext();
        mContext = spy(ApplicationProvider.getApplicationContext());
        when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
        mVibrator = mContext.getSystemService(Vibrator.class);
        mController = new AlarmVibrationTogglePreferenceController(mContext, PREFERENCE_KEY);
        mLifecycle.addObserver(mController);
@@ -83,6 +88,26 @@ public class AlarmVibrationTogglePreferenceControllerTest {
        assertThat(mPreference.isChecked()).isTrue();
    }

    @Test
    public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
        updateSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
        mController.updateState(mPreference);
        assertThat(mPreference.isChecked()).isTrue();
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
        mController.updateState(mPreference);
        assertThat(mPreference.isChecked()).isTrue();
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
        mController.updateState(mPreference);
        assertThat(mPreference.isChecked()).isTrue();
        assertThat(mPreference.isEnabled()).isTrue();
    }

    @Test
    public void updateState_shouldDisplayOnOffState() {
        updateSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
+3 −9
Original line number Diff line number Diff line
@@ -94,28 +94,22 @@ public class HapticFeedbackIntensityPreferenceControllerTest {
    }

    @Test
    public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
    public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
        updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
        mController.updateState(mPreference);
        assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
        assertThat(mPreference.getSummary()).isNull();
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
        mController.updateState(mPreference);
        assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
        // TODO(b/136805769): summary is broken in SeekBarPreference, enable this once fixed
//        assertThat(mPreference.getSummary()).isNotNull();
//        assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
//                R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
        assertThat(mPreference.isEnabled()).isFalse();
        assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
        mController.updateState(mPreference);
        assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
        assertThat(mPreference.getSummary()).isNull();
        assertThat(mPreference.isEnabled()).isTrue();
    }

+3 −10
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import androidx.test.core.app.ApplicationProvider;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;

@@ -90,29 +89,23 @@ public class HapticFeedbackTogglePreferenceControllerTest {
        assertThat(mPreference.isChecked()).isTrue();
    }


    @Test
    public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
    public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
        updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
        mController.updateState(mPreference);
        assertThat(mPreference.isChecked()).isTrue();
        assertThat(mPreference.getSummary()).isNull();
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
        mController.updateState(mPreference);
        assertThat(mPreference.isChecked()).isFalse();
        assertThat(mPreference.getSummary()).isNotNull();
        assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
                R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
        assertThat(mPreference.isEnabled()).isFalse();
        assertThat(mPreference.isChecked()).isTrue();
        assertThat(mPreference.isEnabled()).isTrue();

        when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
        mController.updateState(mPreference);
        assertThat(mPreference.isChecked()).isTrue();
        assertThat(mPreference.getSummary()).isNull();
        assertThat(mPreference.isEnabled()).isTrue();
    }

Loading