diff --git a/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceController.java index fc582d4b862..69ea2369d57 100644 --- a/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.biometrics.face; import static android.provider.Settings.Secure.FACE_APP_ENABLED; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.face.FaceManager; import android.provider.Settings; @@ -49,6 +50,8 @@ public class FaceSettingsAppsPreferenceController extends @Override public boolean setChecked(boolean isChecked) { + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_FACE_ENABLED_FOR_APP, isChecked); return Settings.Secure.putIntForUser(mContext.getContentResolver(), FACE_APP_ENABLED, isChecked ? ON : OFF, getUserId()); } diff --git a/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceController.java index c7e2141c53a..5ca0665e1cc 100644 --- a/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceSettingsAttentionPreferenceController.java @@ -16,6 +16,7 @@ package com.android.settings.biometrics.face; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.face.FaceManager; import android.provider.Settings; @@ -122,6 +123,8 @@ public class FaceSettingsAttentionPreferenceController extends FaceSettingsPrefe @Override public boolean setChecked(boolean isChecked) { + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_FACE_REQUIRE_ATTENTION_SETTINGS, isChecked); // Optimistically update state and set to disabled until we know it succeeded. mPreference.setEnabled(false); mPreference.setChecked(isChecked); diff --git a/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceController.java index db9175cbb9c..5262f9a75c6 100644 --- a/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.biometrics.face; import static android.provider.Settings.Secure.FACE_KEYGUARD_ENABLED; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.face.FaceManager; import android.provider.Settings; @@ -50,6 +51,8 @@ public class FaceSettingsKeyguardUnlockPreferenceController extends @Override public boolean setChecked(boolean isChecked) { + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_FACE_ENABLED_ON_KEYGUARD, isChecked); return Settings.Secure.putIntForUser(mContext.getContentResolver(), FACE_KEYGUARD_ENABLED, isChecked ? ON : OFF, getUserId()); } diff --git a/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java index bda078f2711..87b8f536cfe 100644 --- a/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceSettingsPreferenceController.java @@ -20,8 +20,10 @@ import android.app.admin.DevicePolicyManager; import android.content.Context; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedLockUtilsInternal; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** * Abstract base class for all face settings toggles. @@ -29,9 +31,11 @@ import com.android.settingslib.RestrictedLockUtilsInternal; public abstract class FaceSettingsPreferenceController extends TogglePreferenceController { private int mUserId; + protected MetricsFeatureProvider mMetricsFeatureProvider; public FaceSettingsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } public void setUserId(int userId) { diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 31ebeb7c705..3d879c06da5 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -1716,6 +1716,10 @@ public class FingerprintSettings extends SubSettings { @Override public void onAuthenticationError( int errorCode, @NonNull CharSequence errString) { + mMetricsFeatureProvider.action( + getContext(), + SettingsEnums.ACTION_CHECK_FINGERPRINT, + false); dialog.dismiss(); } @@ -1726,6 +1730,10 @@ public class FingerprintSettings extends SubSettings { FingerprintSettingsFragment parent = (FingerprintSettingsFragment) getTargetFragment(); parent.highlightFingerprintItem(fingerId); + mMetricsFeatureProvider.action( + getContext(), + SettingsEnums.ACTION_CHECK_FINGERPRINT, + true); dialog.dismiss(); } diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceController.java index e53ba85bea5..f2a49f6edef 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.biometrics.fingerprint; import static android.provider.Settings.Secure.FINGERPRINT_APP_ENABLED; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.fingerprint.FingerprintManager; import android.provider.Settings; @@ -50,6 +51,8 @@ public class FingerprintSettingsAppsPreferenceController @Override public boolean setChecked(boolean isChecked) { + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_FINGERPRINT_ENABLED_FOR_APP, isChecked); return Settings.Secure.putIntForUser(mContext.getContentResolver(), FINGERPRINT_APP_ENABLED, isChecked ? ON : OFF, getUserId()); } diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceController.java index 6b17584320f..aa1a87016ee 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceController.java @@ -18,6 +18,7 @@ package com.android.settings.biometrics.fingerprint; import static android.provider.Settings.Secure.FINGERPRINT_KEYGUARD_ENABLED; +import android.app.settings.SettingsEnums; import android.content.Context; import android.hardware.fingerprint.FingerprintManager; import android.provider.Settings; @@ -51,6 +52,8 @@ public class FingerprintSettingsKeyguardUnlockPreferenceController @Override public boolean setChecked(boolean isChecked) { + mMetricsFeatureProvider.action(mContext, + SettingsEnums.ACTION_FINGERPRINT_ENABLED_ON_KEYGUARD, isChecked); return Settings.Secure.putIntForUser(mContext.getContentResolver(), FINGERPRINT_KEYGUARD_ENABLED, isChecked ? ON : OFF, getUserId()); } diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsPreferenceController.java index 2ca5da8928e..433f3bce381 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsPreferenceController.java @@ -20,8 +20,10 @@ import android.app.admin.DevicePolicyManager; import android.content.Context; import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedLockUtilsInternal; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** * Abstract base class for all fingerprint settings toggles. @@ -29,9 +31,11 @@ import com.android.settingslib.RestrictedLockUtilsInternal; public abstract class FingerprintSettingsPreferenceController extends TogglePreferenceController { private int mUserId; + protected MetricsFeatureProvider mMetricsFeatureProvider; public FingerprintSettingsPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } public void setUserId(int userId) { diff --git a/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceControllerTest.java index bf96cacbeef..3161c9d2fca 100644 --- a/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsAppsPreferenceControllerTest.java @@ -18,11 +18,18 @@ package com.android.settings.biometrics.face; 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 androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.testutils.FakeFeatureFactory; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,10 +38,12 @@ import org.junit.runner.RunWith; public class FaceSettingsAppsPreferenceControllerTest { private Context mContext; private FaceSettingsAppsPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new FaceSettingsAppsPreferenceController( mContext, "biometric_settings_face_app"); } @@ -43,4 +52,18 @@ public class FaceSettingsAppsPreferenceControllerTest { public void isSliceable_returnFalse() { assertThat(mController.isSliceable()).isFalse(); } + + @Test + public void setChecked_checked_updateMetrics() { + mController.setChecked(true); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FACE_ENABLED_FOR_APP), eq(true)); + } + + @Test + public void setChecked_unchecked_updateMetrics() { + mController.setChecked(false); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FACE_ENABLED_FOR_APP), eq(false)); + } } diff --git a/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceControllerTest.java b/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceControllerTest.java index 4eb7d3edcaa..db906b912f0 100644 --- a/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/biometrics/face/FaceSettingsKeyguardUnlockPreferenceControllerTest.java @@ -18,11 +18,18 @@ package com.android.settings.biometrics.face; 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 androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.testutils.FakeFeatureFactory; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,10 +38,12 @@ import org.junit.runner.RunWith; public class FaceSettingsKeyguardUnlockPreferenceControllerTest { private Context mContext; private FaceSettingsKeyguardUnlockPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new FaceSettingsKeyguardUnlockPreferenceController( mContext, "biometric_settings_face_keyguard"); } @@ -43,4 +52,18 @@ public class FaceSettingsKeyguardUnlockPreferenceControllerTest { public void isSliceable_returnFalse() { assertThat(mController.isSliceable()).isFalse(); } + + @Test + public void setChecked_checked_updateMetrics() { + mController.setChecked(true); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FACE_ENABLED_ON_KEYGUARD), eq(true)); + } + + @Test + public void setChecked_unchecked_updateMetrics() { + mController.setChecked(false); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FACE_ENABLED_ON_KEYGUARD), eq(false)); + } } diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceControllerTest.java index 4aa21b88f3c..6105aee4760 100644 --- a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsAppsPreferenceControllerTest.java @@ -18,11 +18,18 @@ package com.android.settings.biometrics.fingerprint; 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 androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.testutils.FakeFeatureFactory; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,10 +38,12 @@ import org.junit.runner.RunWith; public class FingerprintSettingsAppsPreferenceControllerTest { private Context mContext; private FingerprintSettingsAppsPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new FingerprintSettingsAppsPreferenceController( mContext, "biometric_settings_fingerprint_app"); } @@ -43,4 +52,18 @@ public class FingerprintSettingsAppsPreferenceControllerTest { public void isSliceable_returnFalse() { assertThat(mController.isSliceable()).isFalse(); } + + @Test + public void setChecked_checked_updateMetrics() { + mController.setChecked(true); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FINGERPRINT_ENABLED_FOR_APP), eq(true)); + } + + @Test + public void setChecked_unchecked_updateMetrics() { + mController.setChecked(false); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FINGERPRINT_ENABLED_FOR_APP), eq(false)); + } } diff --git a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceControllerTest.java b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceControllerTest.java index 13a58b1ea63..462b5ebf3ef 100644 --- a/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsKeyguardUnlockPreferenceControllerTest.java @@ -18,11 +18,18 @@ package com.android.settings.biometrics.fingerprint; 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 androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.testutils.FakeFeatureFactory; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -31,10 +38,12 @@ import org.junit.runner.RunWith; public class FingerprintSettingsKeyguardUnlockPreferenceControllerTest { private Context mContext; private FingerprintSettingsKeyguardUnlockPreferenceController mController; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { mContext = ApplicationProvider.getApplicationContext(); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mController = new FingerprintSettingsKeyguardUnlockPreferenceController( mContext, "biometric_settings_fingerprint_keyguard"); } @@ -43,4 +52,18 @@ public class FingerprintSettingsKeyguardUnlockPreferenceControllerTest { public void isSliceable_returnFalse() { assertThat(mController.isSliceable()).isFalse(); } + + @Test + public void setChecked_checked_updateMetrics() { + mController.setChecked(true); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FINGERPRINT_ENABLED_ON_KEYGUARD), eq(true)); + } + + @Test + public void setChecked_unchecked_updateMetrics() { + mController.setChecked(false); + verify(mFeatureFactory.metricsFeatureProvider).action(any(), + eq(SettingsEnums.ACTION_FINGERPRINT_ENABLED_ON_KEYGUARD), eq(false)); + } }