diff --git a/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceController.java b/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceController.java index 858b374db75..869443c5fae 100644 --- a/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceController.java +++ b/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceController.java @@ -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 = diff --git a/tests/robotests/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceControllerTest.java index 6bf83c6126a..cf12e341337 100644 --- a/tests/robotests/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/KeyboardVibrationTogglePreferenceControllerTest.java @@ -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) {