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

Commit 55a7023a authored by Wilson Wu's avatar Wilson Wu
Browse files

Add metrics for keyboard vibration settings

Log the state when keyboard vibration settings changed.

Bug: 289107579
Test: atest KeyboardVibrationTogglePreferenceControllerTest
Change-Id: I96999fe49a86514561c85c5b589a7b90e3c3cb67
parent 889de5bd
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ import static android.provider.Settings.System.KEYBOARD_VIBRATION_ENABLED;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;


import android.app.settings.SettingsEnums;
import android.content.Context;
import android.database.ContentObserver;
import android.net.Uri;
@@ -42,6 +42,8 @@ import androidx.preference.TwoStatePreference;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;


/**
@@ -62,6 +64,8 @@ public class KeyboardVibrationTogglePreferenceController extends TogglePreferenc
    @Nullable
    private TwoStatePreference mPreference;

    private MetricsFeatureProvider mMetricsFeatureProvider;

    public KeyboardVibrationTogglePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mVibrator = context.getSystemService(Vibrator.class);
@@ -75,6 +79,7 @@ public class KeyboardVibrationTogglePreferenceController extends TogglePreferenc
                }
            }
        };
        mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
    }

    @Override
@@ -120,6 +125,8 @@ public class KeyboardVibrationTogglePreferenceController extends TogglePreferenc
    @Override
    public boolean setChecked(boolean isChecked) {
        final boolean success = updateKeyboardVibrationSetting(isChecked);
        mMetricsFeatureProvider.action(mContext,
                SettingsEnums.ACTION_KEYBOARD_VIBRATION_CHANGED, isChecked);
        if (success && isChecked) {
            // Play the preview vibration effect when the toggle is on.
            final VibrationAttributes touchAttrs =
+11 −2
Original line number Diff line number Diff line
@@ -23,9 +23,13 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_

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

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.res.Resources;
import android.os.vibrator.Flags;
@@ -37,6 +41,7 @@ import androidx.preference.SwitchPreference;
import androidx.test.core.app.ApplicationProvider;

import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;

import org.junit.Before;
import org.junit.Rule;
@@ -49,7 +54,6 @@ import org.robolectric.RobolectricTestRunner;
/** Tests for {@link KeyboardVibrationTogglePreferenceController}. */
@RunWith(RobolectricTestRunner.class)
public class KeyboardVibrationTogglePreferenceControllerTest {

    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

@@ -59,8 +63,8 @@ public class KeyboardVibrationTogglePreferenceControllerTest {
    private Context mContext;
    private Resources mResources;
    private KeyboardVibrationTogglePreferenceController mController;

    private SwitchPreference mPreference;
    private FakeFeatureFactory mFeatureFactory;

    @Before
    public void setUp() {
@@ -68,6 +72,7 @@ public class KeyboardVibrationTogglePreferenceControllerTest {
        mContext = spy(ApplicationProvider.getApplicationContext());
        mResources = spy(mContext.getResources());
        when(mContext.getResources()).thenReturn(mResources);
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mController = new KeyboardVibrationTogglePreferenceController(mContext, "preferenceKey");
        mPreference = new SwitchPreference(mContext);
        when(mPreferenceScreen.findPreference(
@@ -148,6 +153,8 @@ public class KeyboardVibrationTogglePreferenceControllerTest {
        mController.setChecked(true);

        assertThat(readSystemSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED)).isEqualTo(ON);
        verify(mFeatureFactory.metricsFeatureProvider).action(any(),
                eq(SettingsEnums.ACTION_KEYBOARD_VIBRATION_CHANGED), eq(true));
    }

    @Test
@@ -160,6 +167,8 @@ public class KeyboardVibrationTogglePreferenceControllerTest {
        mController.setChecked(false);

        assertThat(readSystemSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED)).isEqualTo(OFF);
        verify(mFeatureFactory.metricsFeatureProvider).action(any(),
                eq(SettingsEnums.ACTION_KEYBOARD_VIBRATION_CHANGED), eq(false));
    }

    private void updateSystemSetting(String key, int value) {