diff options
| author | Ioana Stefan <ioanastefan@google.com> | 2020-09-29 15:27:30 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-09-29 15:27:30 +0000 |
| commit | 88cefeb2c9a4020c5cca30c33a8752eea9877474 (patch) | |
| tree | 462195222fd6b2358decb6b614f789aaaf484d97 /core/java/android/view/InsetsController.java | |
| parent | 3fb439536cd291794a28d1c6458b4799bb8a0cf2 (diff) | |
| parent | cf9e5123ce04dfe1d03b942a6a5632ca1b9b27fd (diff) | |
Merge "Add proto-based client side dumping for IME tracing"
Diffstat (limited to 'core/java/android/view/InsetsController.java')
| -rw-r--r-- | core/java/android/view/InsetsController.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index b438f8f0b1dd..652781a310b9 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -16,6 +16,8 @@ package android.view; +import static android.view.InsetsControllerProto.CONTROL; +import static android.view.InsetsControllerProto.STATE; import static android.view.InsetsState.ITYPE_CAPTION_BAR; import static android.view.InsetsState.ITYPE_IME; import static android.view.InsetsState.toInternalType; @@ -41,6 +43,8 @@ import android.util.ArraySet; import android.util.Log; import android.util.Pair; import android.util.SparseArray; +import android.util.imetracing.ImeTracing; +import android.util.proto.ProtoOutputStream; import android.view.InsetsSourceConsumer.ShowResult; import android.view.InsetsState.InternalInsetsType; import android.view.SurfaceControl.Transaction; @@ -298,6 +302,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation @Override public void onReady(WindowInsetsAnimationController controller, int types) { + if ((types & ime()) != 0) { + ImeTracing.getInstance().triggerDump(); + } + mController = controller; if (DEBUG) Log.d(TAG, "default animation onReady types: " + types); @@ -812,6 +820,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation @VisibleForTesting public void show(@InsetsType int types, boolean fromIme) { + if (fromIme) { + ImeTracing.getInstance().triggerDump(); + } // Handle pending request ready in case there was one set. if (fromIme && mPendingImeControlRequest != null) { PendingControlRequest pendingRequest = mPendingImeControlRequest; @@ -860,6 +871,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } void hide(@InsetsType int types, boolean fromIme) { + if (fromIme) { + ImeTracing.getInstance().triggerDump(); + } int typesReady = 0; final ArraySet<Integer> internalTypes = InsetsState.toInternalType(types); for (int i = internalTypes.size() - 1; i >= 0; i--) { @@ -894,6 +908,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation listener.onCancelled(null); return; } + if (fromIme) { + ImeTracing.getInstance().triggerDump(); + } controlAnimationUnchecked(types, cancellationSignal, listener, mFrame, fromIme, durationMs, interpolator, animationType, getLayoutInsetsDuringAnimationMode(types), @@ -1292,6 +1309,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation private void hideDirectly( @InsetsType int types, boolean animationFinished, @AnimationType int animationType) { + if ((types & ime()) != 0) { + ImeTracing.getInstance().triggerDump(); + } final ArraySet<Integer> internalTypes = InsetsState.toInternalType(types); for (int i = internalTypes.size() - 1; i >= 0; i--) { getSourceConsumer(internalTypes.valueAt(i)).hide(animationFinished, animationType); @@ -1299,6 +1319,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } private void showDirectly(@InsetsType int types) { + if ((types & ime()) != 0) { + ImeTracing.getInstance().triggerDump(); + } final ArraySet<Integer> internalTypes = InsetsState.toInternalType(types); for (int i = internalTypes.size() - 1; i >= 0; i--) { getSourceConsumer(internalTypes.valueAt(i)).show(false /* fromIme */); @@ -1318,6 +1341,16 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation mState.dump(prefix + " ", pw); } + void dumpDebug(ProtoOutputStream proto, long fieldId) { + final long token = proto.start(fieldId); + mState.dumpDebug(proto, STATE); + for (int i = mRunningAnimations.size() - 1; i >= 0; i--) { + InsetsAnimationControlRunner runner = mRunningAnimations.get(i).runner; + runner.dumpDebug(proto, CONTROL); + } + proto.end(token); + } + @VisibleForTesting @Override public void startAnimation(InsetsAnimationControlImpl controller, |
