Update voice interaction layer for new UI design.

Can switch from a pure overlay at the top of the screen,
to interactive mode with the voice UI drawing at the bottom
and pushing its target activity up like an IME.

Add mechanism to get assist data to the voice interaction UI.

Add some basic visualization of the assist data, outlining
where on the screen we have text.

Add a test ACTION_ASSIST handler, which can propagate the
assist data it gets to the voice interaction session so
you can see what kind of data we are getting from different
apps.

Change-Id: I18312fe1601d7926d1fb96a817638d60f6263771
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index c0d54e1..231a6bd 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -1130,32 +1130,34 @@
     }
 
     @Override
-    public void dump(PrintWriter pw) {
-        pw.print(" " + this);
-        pw.print("  mAppTransitionState="); pw.println(appStateToString());
+    public void dump(PrintWriter pw, String prefix) {
+        pw.print(prefix); pw.println(this);
+        pw.print(prefix); pw.print("mAppTransitionState="); pw.println(appStateToString());
         if (mNextAppTransitionType != NEXT_TRANSIT_TYPE_NONE) {
-            pw.print("  mNextAppTransitionType="); pw.println(transitTypeToString());
+            pw.print(prefix); pw.print("mNextAppTransitionType=");
+                    pw.println(transitTypeToString());
         }
         switch (mNextAppTransitionType) {
             case NEXT_TRANSIT_TYPE_CUSTOM:
-                pw.print("  mNextAppTransitionPackage=");
+                pw.print(prefix); pw.print("mNextAppTransitionPackage=");
                         pw.println(mNextAppTransitionPackage);
-                pw.print("  mNextAppTransitionEnter=0x");
+                pw.print(prefix); pw.print("mNextAppTransitionEnter=0x");
                         pw.print(Integer.toHexString(mNextAppTransitionEnter));
                         pw.print(" mNextAppTransitionExit=0x");
                         pw.println(Integer.toHexString(mNextAppTransitionExit));
                 break;
             case NEXT_TRANSIT_TYPE_CUSTOM_IN_PLACE:
-                pw.print("  mNextAppTransitionPackage=");
+                pw.print(prefix); pw.print("mNextAppTransitionPackage=");
                         pw.println(mNextAppTransitionPackage);
-                pw.print("  mNextAppTransitionInPlace=0x");
+                pw.print(prefix); pw.print("mNextAppTransitionInPlace=0x");
                         pw.print(Integer.toHexString(mNextAppTransitionInPlace));
                 break;
             case NEXT_TRANSIT_TYPE_SCALE_UP:
-                pw.print("  mNextAppTransitionStartX="); pw.print(mNextAppTransitionStartX);
+                pw.print(prefix); pw.print("mNextAppTransitionStartX=");
+                        pw.print(mNextAppTransitionStartX);
                         pw.print(" mNextAppTransitionStartY=");
                         pw.println(mNextAppTransitionStartY);
-                pw.print("  mNextAppTransitionStartWidth=");
+                pw.print(prefix); pw.print("mNextAppTransitionStartWidth=");
                         pw.print(mNextAppTransitionStartWidth);
                         pw.print(" mNextAppTransitionStartHeight=");
                         pw.println(mNextAppTransitionStartHeight);
@@ -1164,22 +1166,23 @@
             case NEXT_TRANSIT_TYPE_THUMBNAIL_SCALE_DOWN:
             case NEXT_TRANSIT_TYPE_THUMBNAIL_ASPECT_SCALE_UP:
             case NEXT_TRANSIT_TYPE_THUMBNAIL_ASPECT_SCALE_DOWN:
-                pw.print("  mNextAppTransitionThumbnail=");
+                pw.print(prefix); pw.print("mNextAppTransitionThumbnail=");
                         pw.print(mNextAppTransitionThumbnail);
                         pw.print(" mNextAppTransitionStartX=");
                         pw.print(mNextAppTransitionStartX);
                         pw.print(" mNextAppTransitionStartY=");
                         pw.println(mNextAppTransitionStartY);
-                        pw.print(" mNextAppTransitionStartWidth=");
+                pw.print(prefix); pw.print("mNextAppTransitionStartWidth=");
                         pw.print(mNextAppTransitionStartWidth);
                         pw.print(" mNextAppTransitionStartHeight=");
                         pw.println(mNextAppTransitionStartHeight);
-                pw.print("  mNextAppTransitionScaleUp="); pw.println(mNextAppTransitionScaleUp);
+                pw.print(prefix); pw.print("mNextAppTransitionScaleUp=");
+                        pw.println(mNextAppTransitionScaleUp);
                 break;
         }
         if (mNextAppTransitionCallback != null) {
-            pw.print("  mNextAppTransitionCallback=");
-            pw.println(mNextAppTransitionCallback);
+            pw.print(prefix); pw.print("mNextAppTransitionCallback=");
+                    pw.println(mNextAppTransitionCallback);
         }
     }