diff --git a/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java b/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java index d79db43d6e5..fa7b372d709 100644 --- a/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java +++ b/src/com/android/settings/inputmethod/ModifierKeysPickerDialogFragment.java @@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; +import android.app.settings.SettingsEnums; import android.content.Context; import android.graphics.drawable.Drawable; import android.hardware.input.InputManager; @@ -47,6 +48,7 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.Utils; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.ArrayList; import java.util.Arrays; @@ -68,6 +70,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { private TextView mLeftBracket; private TextView mRightBracket; private ImageView mActionKeyIcon; + private MetricsFeatureProvider mMetricsFeatureProvider; private List mRemappableKeyList = new ArrayList<>(Arrays.asList( @@ -92,6 +95,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { mActivity = getActivity(); FeatureFactory featureFactory = FeatureFactory.getFeatureFactory(); + mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider(); mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider(); InputManager inputManager = mActivity.getSystemService(InputManager.class); mKeyDefaultName = getArguments().getString(DEFAULT_KEY); @@ -139,6 +143,7 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { doneButton.setOnClickListener(v -> { String selectedItem = modifierKeys.get(adapter.getCurrentItem()); Spannable itemSummary; + logMetricsForRemapping(selectedItem); if (selectedItem.equals(mKeyDefaultName)) { itemSummary = new SpannableString( mActivity.getString(R.string.modifier_keys_default_summary)); @@ -189,6 +194,28 @@ public class ModifierKeysPickerDialogFragment extends DialogFragment { return modifierKeyDialog; } + private void logMetricsForRemapping(String selectedItem) { + if (mKeyDefaultName.equals("Caps lock")) { + mMetricsFeatureProvider.action( + mActivity, SettingsEnums.ACTION_FROM_CAPS_LOCK_TO, selectedItem); + } + + if (mKeyDefaultName.equals("Ctrl")) { + mMetricsFeatureProvider.action( + mActivity, SettingsEnums.ACTION_FROM_CTRL_TO, selectedItem); + } + + if (mKeyDefaultName.equals("Action key")) { + mMetricsFeatureProvider.action( + mActivity, SettingsEnums.ACTION_FROM_ACTION_KEY_TO, selectedItem); + } + + if (mKeyDefaultName.equals("Alt")) { + mMetricsFeatureProvider.action( + mActivity, SettingsEnums.ACTION_FROM_ALT_TO, selectedItem); + } + } + private void setInitialFocusItem( List modifierKeys, ModifierKeyAdapter adapter) { if (modifierKeys.indexOf(mKeyFocus) == -1) { diff --git a/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java b/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java index 070968ca422..d49fbd1ceae 100644 --- a/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java +++ b/src/com/android/settings/inputmethod/ModifierKeysResetDialogFragment.java @@ -21,6 +21,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; +import android.app.settings.SettingsEnums; import android.hardware.input.InputManager; import android.os.Bundle; import android.view.LayoutInflater; @@ -31,6 +32,8 @@ import android.widget.Button; import androidx.fragment.app.DialogFragment; import com.android.settings.R; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class ModifierKeysResetDialogFragment extends DialogFragment { @@ -39,6 +42,8 @@ public class ModifierKeysResetDialogFragment extends DialogFragment { private static final String MODIFIER_KEYS_META = "modifier_keys_meta"; private static final String MODIFIER_KEYS_ALT = "modifier_keys_alt"; + private MetricsFeatureProvider mMetricsFeatureProvider; + private String[] mKeys = { MODIFIER_KEYS_CAPS_LOCK, MODIFIER_KEYS_CTRL, @@ -52,6 +57,7 @@ public class ModifierKeysResetDialogFragment extends DialogFragment { super.onCreateDialog(savedInstanceState); Activity activity = getActivity(); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); InputManager inputManager = activity.getSystemService(InputManager.class); View dialoglayout = LayoutInflater.from(activity).inflate(R.layout.modifier_key_reset_dialog, null); @@ -61,6 +67,7 @@ public class ModifierKeysResetDialogFragment extends DialogFragment { Button restoreButton = dialoglayout.findViewById(R.id.modifier_key_reset_restore_button); restoreButton.setOnClickListener(v -> { + mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_CLEAR_REMAPPINGS); inputManager.clearAllModifierKeyRemappings(); dismiss(); activity.recreate(); diff --git a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java index e63d7d1af99..879f1341f19 100644 --- a/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java +++ b/src/com/android/settings/inputmethod/NewKeyboardLayoutPickerController.java @@ -16,6 +16,7 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.InputManager; @@ -30,7 +31,9 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.TickButtonPreference; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; @@ -53,13 +56,16 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController private KeyboardLayout[] mKeyboardLayouts; private PreferenceScreen mScreen; private String mPreviousSelection; + private String mFinalSelectedLayout; private String mLayout; + private MetricsFeatureProvider mMetricsFeatureProvider; public NewKeyboardLayoutPickerController(Context context, String key) { super(context, key); mIm = context.getSystemService(InputManager.class); mInputDeviceId = -1; mPreferenceMap = new HashMap<>(); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } public void initialize(Fragment parent) { @@ -74,6 +80,7 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController mInputMethodSubtype = arguments.getParcelable(NewKeyboardSettingsUtils.EXTRA_INPUT_METHOD_SUBTYPE); mLayout = getSelectedLayoutLabel(); + mFinalSelectedLayout = mLayout; mKeyboardLayouts = mIm.getKeyboardLayoutListForInputDevice( mInputDeviceIdentifier, mUserId, mInputMethodInfo, mInputMethodSubtype); parent.getActivity().setTitle(mTitle); @@ -92,6 +99,11 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController @Override public void onStop() { + if (!mLayout.equals(mFinalSelectedLayout)) { + String change = "From:" + mLayout + ", to:" + mFinalSelectedLayout; + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_PK_LAYOUT_CHANGED, change); + } mIm.unregisterInputDeviceListener(this); mInputDeviceId = -1; } @@ -122,6 +134,7 @@ public class NewKeyboardLayoutPickerController extends BasePreferenceController } setLayout(pref); mPreviousSelection = preference.getKey(); + mFinalSelectedLayout = pref.getTitle().toString(); return true; } diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java index ea2d4b93f55..1ca9ee65cdb 100644 --- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java +++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java @@ -108,6 +108,7 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment SHOW_VIRTUAL_KEYBOARD_SWITCH)); FeatureFactory featureFactory = FeatureFactory.getFeatureFactory(); + mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider(); mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider(); mSupportsFirmwareUpdate = mFeatureProvider.supportsFirmwareUpdate(); if (mSupportsFirmwareUpdate) { @@ -124,6 +125,10 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment KeyboardLayoutPickerFragment.EXTRA_INPUT_DEVICE_IDENTIFIER); int intentFromWhere = activity.getIntent().getIntExtra(android.provider.Settings.EXTRA_ENTRYPOINT, -1); + if (intentFromWhere != -1) { + mMetricsFeatureProvider.action( + getContext(), SettingsEnums.ACTION_OPEN_PK_SETTINGS_FROM, intentFromWhere); + } if (inputDeviceIdentifier != null) { mAutoInputDeviceIdentifier = inputDeviceIdentifier; } @@ -254,6 +259,16 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment }); } category.addPreference(pref); + StringBuilder vendorAndProductId = new StringBuilder(); + String vendorId = String.valueOf(hardKeyboardDeviceInfo.mVendorId); + String productId = String.valueOf(hardKeyboardDeviceInfo.mProductId); + vendorAndProductId.append(vendorId); + vendorAndProductId.append("-"); + vendorAndProductId.append(productId); + mMetricsFeatureProvider.action( + getContext(), + SettingsEnums.ACTION_USE_SPECIFIC_KEYBOARD, + vendorAndProductId.toString()); } mKeyboardAssistanceCategory.setOrder(1); preferenceScreen.addPreference(mKeyboardAssistanceCategory); @@ -374,7 +389,9 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment device.getName(), device.getIdentifier(), getLayoutLabel(device, context, im), - device.getBluetoothAddress())); + device.getBluetoothAddress(), + device.getVendorId(), + device.getProductId())); } // We intentionally don't reuse Comparator because Collator may not be thread-safe. @@ -403,16 +420,24 @@ public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment public final String mLayoutLabel; @Nullable public final String mBluetoothAddress; + @NonNull + public final int mVendorId; + @NonNull + public final int mProductId; public HardKeyboardDeviceInfo( @Nullable String deviceName, @NonNull InputDeviceIdentifier deviceIdentifier, @NonNull String layoutLabel, - @Nullable String bluetoothAddress) { + @Nullable String bluetoothAddress, + @NonNull int vendorId, + @NonNull int productId) { mDeviceName = TextUtils.emptyIfNull(deviceName); mDeviceIdentifier = deviceIdentifier; mLayoutLabel = layoutLabel; mBluetoothAddress = bluetoothAddress; + mVendorId = vendorId; + mProductId = productId; } @Override diff --git a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java index bbe65c11fb8..648a3e62f03 100644 --- a/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java +++ b/src/com/android/settings/inputmethod/TouchGesturesButtonPreferenceController.java @@ -16,6 +16,7 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.util.FeatureFlagUtils; @@ -23,6 +24,8 @@ import androidx.fragment.app.Fragment; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.widget.ButtonPreference; public class TouchGesturesButtonPreferenceController extends BasePreferenceController { @@ -33,9 +36,11 @@ public class TouchGesturesButtonPreferenceController extends BasePreferenceContr private static final String GESTURE_DIALOG_TAG = "GESTURE_DIALOG_TAG"; private Fragment mParent; + private MetricsFeatureProvider mMetricsFeatureProvider; public TouchGesturesButtonPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } public void setFragment(Fragment parent) { @@ -67,6 +72,7 @@ public class TouchGesturesButtonPreferenceController extends BasePreferenceContr } private void showTouchpadGestureEducation() { + mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_LEARN_TOUCHPAD_GESTURE_CLICK); TrackpadGestureDialogFragment fragment = new TrackpadGestureDialogFragment(); fragment.setTargetFragment(mParent, 0); fragment.show(mParent.getActivity().getSupportFragmentManager(), GESTURE_DIALOG_TAG); diff --git a/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java index 5133d0438d3..d410a1ba4d8 100644 --- a/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadBottomPreferenceController.java @@ -16,16 +16,22 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputSettings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadBottomPreferenceController extends TogglePreferenceController { + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadBottomPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -36,6 +42,8 @@ public class TrackpadBottomPreferenceController extends TogglePreferenceControll @Override public boolean setChecked(boolean isChecked) { InputSettings.setTouchpadRightClickZone(mContext, isChecked); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_BOTTOM_RIGHT_TAP_CHANGED, isChecked); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java index 017689d6987..36fb0c07c8f 100644 --- a/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceController.java @@ -16,18 +16,24 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadGoBackPreferenceController extends TogglePreferenceController { private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_BACK_ENABLED; + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadGoBackPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -38,6 +44,8 @@ public class TrackpadGoBackPreferenceController extends TogglePreferenceControll @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_GO_BACK_CHANGED, isChecked); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java b/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java index 18699e3e3a1..dbc706ee2f3 100644 --- a/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceController.java @@ -16,18 +16,24 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadGoHomePreferenceController extends TogglePreferenceController { private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_HOME_ENABLED; + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadGoHomePreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -38,6 +44,8 @@ public class TrackpadGoHomePreferenceController extends TogglePreferenceControll @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_GO_HOME_CHANGED, isChecked); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java index 21f04a37f94..d430e4d4c76 100644 --- a/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceController.java @@ -16,18 +16,24 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadNotificationsPreferenceController extends TogglePreferenceController { private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_NOTIFICATION_ENABLED; + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadNotificationsPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -38,6 +44,8 @@ public class TrackpadNotificationsPreferenceController extends TogglePreferenceC @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_NOTIFICATION_CHANGED, isChecked); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java index 71b4119a7bc..d024546a394 100644 --- a/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceController.java @@ -16,20 +16,25 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputSettings; import androidx.preference.PreferenceScreen; import com.android.settings.core.SliderPreferenceController; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.SeekBarPreference; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadPointerSpeedPreferenceController extends SliderPreferenceController { private SeekBarPreference mPreference; + private MetricsFeatureProvider mMetricsFeatureProvider; public TrackpadPointerSpeedPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -53,6 +58,8 @@ public class TrackpadPointerSpeedPreferenceController extends SliderPreferenceCo return false; } InputSettings.setTouchpadPointerSpeed(mContext, position); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_POINTER_SPEED_CHANGED, position); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java index eab2b330968..44a56e72ab1 100644 --- a/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceController.java @@ -16,18 +16,24 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadRecentAppsPreferenceController extends TogglePreferenceController { private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_OVERVIEW_ENABLED; + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadRecentAppsPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -38,6 +44,8 @@ public class TrackpadRecentAppsPreferenceController extends TogglePreferenceCont @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_RECENT_APPS_CHANGED, isChecked); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java index 10d30139b6c..042126da549 100644 --- a/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceController.java @@ -16,16 +16,22 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputSettings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadReverseScrollingPreferenceController extends TogglePreferenceController { + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadReverseScrollingPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -36,6 +42,8 @@ public class TrackpadReverseScrollingPreferenceController extends TogglePreferen @Override public boolean setChecked(boolean isChecked) { InputSettings.setTouchpadNaturalScrolling(mContext, !isChecked); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_REVERSE_SCROLLING_CHANGED, isChecked); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java index 84de64e9494..2b11411c186 100644 --- a/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceController.java @@ -16,18 +16,24 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadSwitchAppsPreferenceController extends TogglePreferenceController { private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_QUICK_SWITCH_ENABLED; + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadSwitchAppsPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -38,6 +44,8 @@ public class TrackpadSwitchAppsPreferenceController extends TogglePreferenceCont @Override public boolean setChecked(boolean isChecked) { Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, isChecked ? 1 : 0); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_SWITCH_APPS_CHANGED, isChecked); return true; } diff --git a/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java index 86553070a55..f78c81e2b93 100644 --- a/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java +++ b/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceController.java @@ -16,16 +16,22 @@ package com.android.settings.inputmethod; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputSettings; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class TrackpadTapToClickPreferenceController extends TogglePreferenceController { + private MetricsFeatureProvider mMetricsFeatureProvider; + public TrackpadTapToClickPreferenceController(Context context, String key) { super(context, key); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @Override @@ -36,6 +42,8 @@ public class TrackpadTapToClickPreferenceController extends TogglePreferenceCont @Override public boolean setChecked(boolean isChecked) { InputSettings.setTouchpadTapToClick(mContext, isChecked); + mMetricsFeatureProvider.action( + mContext, SettingsEnums.ACTION_GESTURE_TAP_TO_CLICK_CHANGED, isChecked); return true; } diff --git a/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java index 4806b8a9f5e..b8070d38c5d 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/KeyboardSettingsPreferenceControllerTest.java @@ -56,6 +56,9 @@ import java.util.List; }) public class KeyboardSettingsPreferenceControllerTest { + private static final int VENDOR_ID = 123; + private static final int PRODUCT_ID = 456; + @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); @@ -88,7 +91,9 @@ public class KeyboardSettingsPreferenceControllerTest { "TEST_DEVICE", mInputDeviceIdentifier, "TEST_DEVICE_LABEL", - address); + address, + VENDOR_ID, + PRODUCT_ID); List keyboards = new ArrayList<>(); keyboards.add(deviceInfo); when(mController.getHardKeyboardList()).thenReturn(keyboards); diff --git a/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java index df052037507..9ddfd5b4482 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/PhysicalKeyboardPreferenceControllerTest.java @@ -52,6 +52,8 @@ public class PhysicalKeyboardPreferenceControllerTest { private static final String DEVICE_NAME = "deviceName"; private static final String LAYOUT_LABEL = "deviceLayutLabel"; private static final String BLUETOOTHADDRESS = "deviceBluetoothAddress"; + private static final int VENDOR_ID = 123; + private static final int PRODUCT_ID = 456; @Mock private Context mContext; @@ -84,7 +86,9 @@ public class PhysicalKeyboardPreferenceControllerTest { DEVICE_NAME, mIdentifier, LAYOUT_LABEL, - BLUETOOTHADDRESS)); + BLUETOOTHADDRESS, + VENDOR_ID, + PRODUCT_ID)); mController = spy(new PhysicalKeyboardPreferenceController(context, null)); when(mController.getKeyboards()).thenReturn(keyboards); diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java index bf2d8b00a6c..fa737685bd6 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadBottomPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.os.UserHandle; import android.provider.Settings; @@ -26,10 +31,14 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @@ -39,16 +48,20 @@ import org.robolectric.annotation.Config; com.android.settings.testutils.shadow.ShadowSystemSettings.class, }) public class TrackpadBottomPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "trackpad_bottom_right_tap"; private static final String SETTING_KEY = Settings.System.TOUCHPAD_RIGHT_CLICK_ZONE; private Context mContext; private TrackpadBottomPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadBottomPreferenceController(mContext, PREFERENCE_KEY); } @@ -74,6 +87,10 @@ public class TrackpadBottomPreferenceControllerTest { UserHandle.USER_CURRENT); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_BOTTOM_RIGHT_TAP_CHANGED), + eq(true)); } @Test @@ -87,6 +104,10 @@ public class TrackpadBottomPreferenceControllerTest { UserHandle.USER_CURRENT); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_BOTTOM_RIGHT_TAP_CHANGED), + eq(false)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java index 0e1705e6d00..85d56ef834b 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoBackPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; @@ -25,25 +30,33 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; /** Tests for {@link TrackpadGoBackPreferenceController} */ @RunWith(RobolectricTestRunner.class) public class TrackpadGoBackPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "gesture_go_back"; private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_BACK_ENABLED; private Context mContext; private TrackpadGoBackPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadGoBackPreferenceController(mContext, PREFERENCE_KEY); } @@ -65,6 +78,10 @@ public class TrackpadGoBackPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_GO_BACK_CHANGED), + eq(true)); } @Test @@ -74,6 +91,10 @@ public class TrackpadGoBackPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_GO_BACK_CHANGED), + eq(false)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java index 3289bccbd52..6b3b3f5a86d 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadGoHomePreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; @@ -25,25 +30,33 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; /** Tests for {@link TrackpadGoHomePreferenceController} */ @RunWith(RobolectricTestRunner.class) public class TrackpadGoHomePreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "gesture_go_home"; private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_HOME_ENABLED; private Context mContext; private TrackpadGoHomePreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadGoHomePreferenceController(mContext, PREFERENCE_KEY); } @@ -65,6 +78,10 @@ public class TrackpadGoHomePreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_GO_HOME_CHANGED), + eq(true)); } @Test @@ -74,6 +91,10 @@ public class TrackpadGoHomePreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_GO_HOME_CHANGED), + eq(false)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java index 3df16272655..005bc9fcf23 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadNotificationsPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; @@ -25,25 +30,33 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; /** Tests for {@link TrackpadNotificationsPreferenceController} */ @RunWith(RobolectricTestRunner.class) public class TrackpadNotificationsPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "gesture_notifications"; private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_NOTIFICATION_ENABLED; private Context mContext; private TrackpadNotificationsPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadNotificationsPreferenceController(mContext, PREFERENCE_KEY); } @@ -65,6 +78,10 @@ public class TrackpadNotificationsPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_NOTIFICATION_CHANGED), + eq(true)); } @Test @@ -74,6 +91,10 @@ public class TrackpadNotificationsPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_NOTIFICATION_CHANGED), + eq(false)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java index 25fd962cef4..8449dbaac16 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadPointerSpeedPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.input.InputSettings; import android.os.UserHandle; @@ -26,10 +31,14 @@ import android.provider.Settings; import androidx.test.core.app.ApplicationProvider; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @@ -39,6 +48,8 @@ import org.robolectric.annotation.Config; com.android.settings.testutils.shadow.ShadowSystemSettings.class, }) public class TrackpadPointerSpeedPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "trackpad_pointer_speed"; private static final String SETTING_KEY = Settings.System.TOUCHPAD_POINTER_SPEED; @@ -46,10 +57,12 @@ public class TrackpadPointerSpeedPreferenceControllerTest { private Context mContext; private TrackpadPointerSpeedPreferenceController mController; private int mDefaultSpeed; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadPointerSpeedPreferenceController(mContext, PREFERENCE_KEY); mDefaultSpeed = Settings.System.getIntForUser( mContext.getContentResolver(), @@ -89,6 +102,10 @@ public class TrackpadPointerSpeedPreferenceControllerTest { assertThat(result).isTrue(); assertThat(mController.getSliderPosition()).isEqualTo(inputSpeed); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_POINTER_SPEED_CHANGED), + eq(1)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java index dbed5421a00..2ef53a67aeb 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadRecentAppsPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; @@ -25,25 +30,33 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; /** Tests for {@link TrackpadRecentAppsPreferenceController} */ @RunWith(RobolectricTestRunner.class) public class TrackpadRecentAppsPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "gesture_recent_apps"; private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_OVERVIEW_ENABLED; private Context mContext; private TrackpadRecentAppsPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadRecentAppsPreferenceController(mContext, PREFERENCE_KEY); } @@ -65,6 +78,10 @@ public class TrackpadRecentAppsPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_RECENT_APPS_CHANGED), + eq(true)); } @Test @@ -74,6 +91,10 @@ public class TrackpadRecentAppsPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_RECENT_APPS_CHANGED), + eq(false)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java index fbe74076ade..f545c382063 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadReverseScrollingPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.os.UserHandle; import android.provider.Settings; @@ -26,10 +31,14 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @@ -39,16 +48,20 @@ import org.robolectric.annotation.Config; com.android.settings.testutils.shadow.ShadowSystemSettings.class, }) public class TrackpadReverseScrollingPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "trackpad_reverse_scrolling"; private static final String SETTING_KEY = Settings.System.TOUCHPAD_NATURAL_SCROLLING; private Context mContext; private TrackpadReverseScrollingPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadReverseScrollingPreferenceController(mContext, PREFERENCE_KEY); } @@ -74,6 +87,10 @@ public class TrackpadReverseScrollingPreferenceControllerTest { UserHandle.USER_CURRENT); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_REVERSE_SCROLLING_CHANGED), + eq(true)); } @Test @@ -87,6 +104,10 @@ public class TrackpadReverseScrollingPreferenceControllerTest { UserHandle.USER_CURRENT); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_REVERSE_SCROLLING_CHANGED), + eq(false)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java index 3f160258e29..5e354d2ca18 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadSwitchAppsPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.provider.Settings; @@ -25,25 +30,33 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; /** Tests for {@link TrackpadSwitchAppsPreferenceController} */ @RunWith(RobolectricTestRunner.class) public class TrackpadSwitchAppsPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "gesture_switch_apps"; private static final String SETTING_KEY = Settings.Secure.TRACKPAD_GESTURE_QUICK_SWITCH_ENABLED; private Context mContext; private TrackpadSwitchAppsPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadSwitchAppsPreferenceController(mContext, PREFERENCE_KEY); } @@ -65,6 +78,10 @@ public class TrackpadSwitchAppsPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_SWITCH_APPS_CHANGED), + eq(true)); } @Test @@ -74,6 +91,10 @@ public class TrackpadSwitchAppsPreferenceControllerTest { int result = Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 1); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_SWITCH_APPS_CHANGED), + eq(false)); } @Test diff --git a/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java index 241e3df70ff..8e9d026d0ec 100644 --- a/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/inputmethod/TrackpadTapToClickPreferenceControllerTest.java @@ -18,6 +18,11 @@ package com.android.settings.inputmethod; 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.verify; + +import android.app.settings.SettingsEnums; import android.content.Context; import android.os.UserHandle; import android.provider.Settings; @@ -26,10 +31,14 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @@ -39,16 +48,20 @@ import org.robolectric.annotation.Config; com.android.settings.testutils.shadow.ShadowSystemSettings.class, }) public class TrackpadTapToClickPreferenceControllerTest { + @Rule + public MockitoRule rule = MockitoJUnit.rule(); private static final String PREFERENCE_KEY = "trackpad_tap_to_click"; private static final String SETTING_KEY = Settings.System.TOUCHPAD_TAP_TO_CLICK; private Context mContext; private TrackpadTapToClickPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new TrackpadTapToClickPreferenceController(mContext, PREFERENCE_KEY); } @@ -74,6 +87,10 @@ public class TrackpadTapToClickPreferenceControllerTest { UserHandle.USER_CURRENT); assertThat(result).isEqualTo(1); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_TAP_TO_CLICK_CHANGED), + eq(true)); } @Test @@ -87,6 +104,10 @@ public class TrackpadTapToClickPreferenceControllerTest { UserHandle.USER_CURRENT); assertThat(result).isEqualTo(0); + verify(mFeatureFactory.metricsFeatureProvider).action( + any(), + eq(SettingsEnums.ACTION_GESTURE_TAP_TO_CLICK_CHANGED), + eq(false)); } @Test