diff --git a/src/com/android/settings/InstrumentedActivity.java b/src/com/android/settings/InstrumentedActivity.java new file mode 100644 index 00000000000..4a0e03adf9b --- /dev/null +++ b/src/com/android/settings/InstrumentedActivity.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings; + +import com.android.internal.logging.MetricsLogger; + +import android.app.Activity; + +/** + * Instrumented activity that logs visibility state. + */ +public abstract class InstrumentedActivity extends Activity { + /** + * Declare the view of this category. + * + * Categories are defined in {@link com.android.internal.logging.MetricsLogger} + * or if there is no relevant existing category you may define one in + * {@link com.android.settings.InstrumentedFragment}. + */ + protected abstract int getMetricsCategory(); + + @Override + public void onResume() { + super.onResume(); + MetricsLogger.visible(this, getMetricsCategory()); + } + + @Override + public void onPause() { + super.onPause(); + MetricsLogger.hidden(this, getMetricsCategory()); + } +} diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java b/src/com/android/settings/fingerprint/FingerprintEnrollBase.java index 430f2202743..781efa33375 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollBase.java @@ -28,6 +28,7 @@ import android.widget.Button; import android.widget.TextView; import com.android.settings.ChooseLockSettingsHelper; +import com.android.settings.InstrumentedActivity; import com.android.settings.R; import com.android.setupwizardlib.SetupWizardLayout; import com.android.setupwizardlib.view.NavigationBar; @@ -35,7 +36,8 @@ import com.android.setupwizardlib.view.NavigationBar; /** * Base activity for all fingerprint enrollment steps. */ -public class FingerprintEnrollBase extends Activity implements View.OnClickListener { +public abstract class FingerprintEnrollBase extends InstrumentedActivity + implements View.OnClickListener { /** * Used by the choose fingerprint wizard to indicate the wizard is diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java index 5d4edbd4c40..3d2ce4d0df2 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java @@ -38,6 +38,7 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; +import com.android.internal.logging.MetricsLogger; import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; @@ -380,6 +381,11 @@ public class FingerprintEnrollEnrolling extends FingerprintEnrollBase } }; + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLLING; + } + public static class IconTouchDialog extends DialogFragment { @Override diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java index bbed42c491d..886482252fd 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; +import com.android.internal.logging.MetricsLogger; import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; @@ -105,4 +106,9 @@ public class FingerprintEnrollFindSensor extends FingerprintEnrollBase { finish(); } } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_FIND_SENSOR; + } } diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java index 29f14d738c0..6691e20e4c6 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java @@ -25,6 +25,7 @@ import android.preference.Preference; import android.view.View; import android.widget.Button; +import com.android.internal.logging.MetricsLogger; import com.android.settings.R; import com.android.settings.fingerprint.FingerprintSettings.FingerprintPreference; @@ -70,4 +71,9 @@ public class FingerprintEnrollFinish extends FingerprintEnrollBase { } super.onClick(v); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLL_FINISH; + } } diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java index de5bf24f19f..beb1a8fd19a 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java @@ -22,6 +22,7 @@ import android.os.Bundle; import android.os.UserHandle; import android.view.View; +import com.android.internal.logging.MetricsLogger; import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.HelpUtils; import com.android.settings.R; @@ -92,4 +93,9 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase { getString(R.string.help_url_fingerprint), getClass().getName()); startActivity(helpIntent); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLL_INTRO; + } } diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java b/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java index e81b0ffdd59..0990459c23e 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; +import com.android.internal.logging.MetricsLogger; import com.android.settings.ChooseLockGeneric; import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; @@ -82,4 +83,9 @@ public class FingerprintEnrollOnboard extends FingerprintEnrollBase { protected Intent getFindSensorIntent() { return new Intent(this, FingerprintEnrollFindSensor.class); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLL_ONBOARD; + } } diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java index 6a47dc498ef..5b677f8b33f 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java @@ -24,12 +24,14 @@ import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; +import com.android.internal.logging.MetricsLogger; import com.android.settings.ChooseLockSettingsHelper; +import com.android.settings.InstrumentedFragment; /** * Sidecar fragment to handle the state around fingerprint enrollment. */ -public class FingerprintEnrollSidecar extends Fragment { +public class FingerprintEnrollSidecar extends InstrumentedFragment { private int mEnrollmentSteps = -1; private int mEnrollmentRemaining = 0; @@ -140,6 +142,11 @@ public class FingerprintEnrollSidecar extends Fragment { } }; + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLL_SIDECAR; + } + public interface Listener { void onEnrollmentHelp(CharSequence helpString); void onEnrollmentError(CharSequence errString); diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java index a5c99633f76..1a6da2f68cc 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/fingerprint/FingerprintSettings.java @@ -403,7 +403,7 @@ public class FingerprintSettings extends SubSettings { } private void showRenameDeleteDialog(final Fingerprint fp) { - RenameDeleteDialog renameDeleteDialog = new RenameDeleteDialog(); + RenameDeleteDialog renameDeleteDialog = new RenameDeleteDialog(getContext()); Bundle args = new Bundle(); args.putParcelable("fingerprint", fp); renameDeleteDialog.setArguments(args); @@ -527,6 +527,7 @@ public class FingerprintSettings extends SubSettings { public static class RenameDeleteDialog extends DialogFragment { + private final Context mContext; private Fingerprint mFp; private EditText mDialogTextField; private String mFingerName; @@ -534,6 +535,10 @@ public class FingerprintSettings extends SubSettings { private int mTextSelectionStart; private int mTextSelectionEnd; + public RenameDeleteDialog(Context context) { + mContext = context; + } + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { mFp = getArguments().getParcelable("fingerprint"); @@ -556,6 +561,9 @@ public class FingerprintSettings extends SubSettings { if (DEBUG) { Log.v(TAG, "rename " + name + " to " + newName); } + MetricsLogger.action(mContext, + MetricsLogger.ACTION_FINGERPRINT_RENAME, + mFp.getFingerId()); FingerprintSettingsFragment parent = (FingerprintSettingsFragment) getTargetFragment(); @@ -598,6 +606,8 @@ public class FingerprintSettings extends SubSettings { private void onDeleteClick(DialogInterface dialog) { if (DEBUG) Log.v(TAG, "Removing fpId=" + mFp.getFingerId()); + MetricsLogger.action(mContext, MetricsLogger.ACTION_FINGERPRINT_DELETE, + mFp.getFingerId()); FingerprintSettingsFragment parent = (FingerprintSettingsFragment) getTargetFragment(); if (parent.mFingerprintManager.getEnrolledFingerprints().size() > 1) { diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java index fc7b803fb25..0a3073c672d 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.view.View; import android.widget.Button; +import com.android.internal.logging.MetricsLogger; import com.android.settings.R; import com.android.settings.SetupWizardUtils; import com.android.setupwizardlib.view.NavigationBar; @@ -71,4 +72,9 @@ public class SetupFingerprintEnrollEnrolling extends FingerprintEnrollEnrolling setResult(RESULT_SKIP); finish(); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLLING_SETUP; + } } diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java index 17c06719b6d..1483c838d2e 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.view.View; import android.widget.Button; +import com.android.internal.logging.MetricsLogger; import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.SetupWizardUtils; @@ -70,4 +71,9 @@ public class SetupFingerprintEnrollFindSensor extends FingerprintEnrollFindSenso public void onNavigateNext() { onNextButtonClick(); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_FIND_SENSOR_SETUP; + } } diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java index 351cd576bea..8f37a111a2d 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java @@ -22,6 +22,7 @@ import android.view.View; import android.widget.Button; import android.widget.TextView; +import com.android.internal.logging.MetricsLogger; import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.R; import com.android.settings.SetupWizardUtils; @@ -78,4 +79,9 @@ public class SetupFingerprintEnrollFinish extends FingerprintEnrollFinish public void onNavigateNext() { onNextButtonClick(); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLL_FINISH_SETUP; + } } diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java index 416d53f5145..c7e39e5780e 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.view.View; import android.widget.Button; +import com.android.internal.logging.MetricsLogger; import com.android.settings.R; import com.android.settings.SetupWizardUtils; import com.android.setupwizardlib.view.NavigationBar; @@ -74,4 +75,9 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu public void onNavigateNext() { onNextButtonClick(); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLL_INTRO_SETUP; + } } diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java index bee0cdec081..7fca35a1a19 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.view.View; import android.widget.Button; +import com.android.internal.logging.MetricsLogger; import com.android.settings.R; import com.android.settings.SetupChooseLockGeneric; import com.android.settings.SetupWizardUtils; @@ -75,4 +76,9 @@ public class SetupFingerprintEnrollOnboard extends FingerprintEnrollOnboard public void onNavigateNext() { onNextButtonClick(); } + + @Override + protected int getMetricsCategory() { + return MetricsLogger.FINGERPRINT_ENROLL_ONBOARD_SETUP; + } }