am a18e6ffe: am 8b98ef6f: am 15ff8af7: Merge "instrument fingerprint settings" into mnc-dr-dev

* commit 'a18e6ffe9a3c53daa57d622965f594b56dd559a5':
  instrument fingerprint settings
diff --git a/src/com/android/settings/InstrumentedActivity.java b/src/com/android/settings/InstrumentedActivity.java
new file mode 100644
index 0000000..4a0e03a
--- /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 430f220..781efa3 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollBase.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollBase.java
@@ -28,6 +28,7 @@
 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 @@
 /**
  * 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 5d4edbd..3d2ce4d 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollEnrolling.java
@@ -38,6 +38,7 @@
 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 @@
         }
     };
 
+    @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 bbed42c..8864822 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFindSensor.java
@@ -21,6 +21,7 @@
 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 @@
             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 29f14d7..6691e20 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollFinish.java
@@ -25,6 +25,7 @@
 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 @@
         }
         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 de5bf24..beb1a8f 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java
@@ -22,6 +22,7 @@
 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 @@
                 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 e81b0ff..0990459 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollOnboard.java
@@ -21,6 +21,7 @@
 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 @@
     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 6a47dc4..5b677f8 100644
--- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
+++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java
@@ -24,12 +24,14 @@
 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 @@
         }
     };
 
+    @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 a5c9963..1a6da2f 100644
--- a/src/com/android/settings/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/fingerprint/FingerprintSettings.java
@@ -403,7 +403,7 @@
         }
 
         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 static class RenameDeleteDialog extends DialogFragment {
 
+            private final Context mContext;
             private Fingerprint mFp;
             private EditText mDialogTextField;
             private String mFingerName;
@@ -534,6 +535,10 @@
             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 @@
                                             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 @@
 
             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 fc7b803..0a3073c 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollEnrolling.java
@@ -21,6 +21,7 @@
 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 @@
         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 17c0671..1483c83 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFindSensor.java
@@ -21,6 +21,7 @@
 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 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 351cd57..8f37a11 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollFinish.java
@@ -22,6 +22,7 @@
 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 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 416d53f..c7e39e5 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java
@@ -21,6 +21,7 @@
 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 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 bee0cde..7fca35a 100644
--- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java
+++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollOnboard.java
@@ -21,6 +21,7 @@
 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 void onNavigateNext() {
         onNextButtonClick();
     }
+
+    @Override
+    protected int getMetricsCategory() {
+        return MetricsLogger.FINGERPRINT_ENROLL_ONBOARD_SETUP;
+    }
 }