Add LatencyTracker to track important SystemUI latencies for testing

Add a new class that can record latencies for various actions. Add a
new system property debug.systemui.latency_tracking to enable/disable
latency as well as a broadcast to reload the property if it changes.

This will be used to write lab latency tests to track important
transitions/latencies.

Change-Id: I11f96f1c410d83f2d3dbbdf903b29e3035744fb8
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
index 47ea59e..4425c5e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
@@ -33,6 +33,7 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.os.Trace;
 import android.util.AttributeSet;
 import android.view.ActionMode;
 import android.view.InputQueue;
@@ -225,6 +226,10 @@
 
     @Override
     public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getActionMasked() == MotionEvent.ACTION_DOWN
+                && mNotificationPanel.getExpandedHeight() == 0f) {
+            mNotificationPanel.startExpandLatencyTracking();
+        }
         mFalsingManager.onTouchEvent(ev, getWidth(), getHeight());
         if (mBrightnessMirror != null && mBrightnessMirror.getVisibility() == VISIBLE) {
             // Disallow new pointers while the brightness mirror is visible. This is so that you