diff options
| author | 2020-06-05 00:44:26 +0800 | |
|---|---|---|
| committer | 2020-06-09 19:21:38 +0800 | |
| commit | 4f088b6c3083a0b11c13e665cad22c99ac6ba8f7 (patch) | |
| tree | 6fb6b77f6dd9883b672baa43500478a77c6af52c | |
| parent | ebb7ae667942ffa0d685edd91dc0700cf2079695 (diff) | |
Call WindowContainer#dump in all levels
In order to know if there is an animating window container. And
all derived classes should call super because the dump method is
annotated as CallSuper.
This fixes that TaskDisplayArea and ActivityStack don't call super
and the overridden Task#dump is never called. Also adjust the output
format so it is easier to read.
Bug: 157743122
Test: "adb shell dumpsys activity activities" and check the section
"Task display areas in top down Z order".
Change-Id: I8396e1fbce1960dc9dcd9de8c5cd47bfd18ba31a
8 files changed, 35 insertions, 39 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index fe2b144bcdd6..f643fffc68c4 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -7539,7 +7539,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A public String toString() { if (stringName != null) { return stringName + " t" + (task == null ? INVALID_TASK_ID : task.mTaskId) + - (finishing ? " f}" : "") + (mIsExiting ? " mIsExiting=" : "") + "}"; + (finishing ? " f}" : "") + (mIsExiting ? " isExiting" : "") + "}"; } StringBuilder sb = new StringBuilder(128); sb.append("ActivityRecord{"); diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index 0d5621dc0e4f..2146f77e210d 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -3230,22 +3230,22 @@ class ActivityStack extends Task { @Override void dump(PrintWriter pw, String prefix, boolean dumpAll) { - pw.println(prefix + "mStackId=" + getRootTaskId()); - pw.println(prefix + "mDeferRemoval=" + mDeferRemoval); - pw.println(prefix + "mBounds=" + getRawBounds().toShortString()); - for (int taskNdx = mChildren.size() - 1; taskNdx >= 0; taskNdx--) { - mChildren.get(taskNdx).dump(pw, prefix + " ", dumpAll); + if (mDeferRemoval) { + pw.println(prefix + "mDeferRemoval=true"); } + super.dump(pw, prefix, dumpAll); if (!mExitingActivities.isEmpty()) { pw.println(); - pw.println(" Exiting application tokens:"); + pw.println(prefix + "Exiting application tokens:"); + final String doublePrefix = prefix + " "; for (int i = mExitingActivities.size() - 1; i >= 0; i--) { WindowToken token = mExitingActivities.get(i); - pw.print(" Exiting App #"); pw.print(i); + pw.print(doublePrefix + "Exiting App #" + i); pw.print(' '); pw.print(token); pw.println(':'); - token.dump(pw, " ", dumpAll); + token.dump(pw, doublePrefix, dumpAll); } + pw.println(); } mAnimatingActivityRegistry.dump(pw, "AnimatingApps:", prefix); } diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java index b7ca1a9aeab8..1f9e8609c2ad 100644 --- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java @@ -1886,7 +1886,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { public void dump(PrintWriter pw, String prefix) { pw.println(); pw.println("ActivityStackSupervisor state:"); - mRootWindowContainer.dump(pw, prefix); + mRootWindowContainer.dump(pw, prefix, true /* dumpAll */); getKeyguardController().dump(pw, prefix); mService.getLockTaskController().dump(pw, prefix); pw.print(prefix); diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index a5b94b327699..05594c8596d6 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -2977,12 +2977,10 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo pw.println(); mWallpaperController.dump(pw, " "); - pw.println(); - pw.print("mSystemGestureExclusion="); if (mSystemGestureExclusionListeners.getRegisteredCallbackCount() > 0) { + pw.println(); + pw.print(" mSystemGestureExclusion="); pw.println(mSystemGestureExclusion); - } else { - pw.println("<no lstnrs>"); } pw.println(); diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index ae5adcae5b9b..583663c5455f 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -3570,12 +3570,14 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } } - public void dump(PrintWriter pw, String prefix) { + @Override + public void dump(PrintWriter pw, String prefix, boolean dumpAll) { + super.dump(pw, prefix, dumpAll); pw.print(prefix); pw.println("topDisplayFocusedStack=" + getTopDisplayFocusedStack()); for (int i = getChildCount() - 1; i >= 0; --i) { final DisplayContent display = getChildAt(i); - display.dump(pw, prefix, true /* dumpAll */); + display.dump(pw, prefix, dumpAll); } pw.println(); } diff --git a/services/core/java/com/android/server/wm/SurfaceAnimator.java b/services/core/java/com/android/server/wm/SurfaceAnimator.java index 1b77fd2e8782..0e5d7d910084 100644 --- a/services/core/java/com/android/server/wm/SurfaceAnimator.java +++ b/services/core/java/com/android/server/wm/SurfaceAnimator.java @@ -428,16 +428,11 @@ class SurfaceAnimator { void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mLeash="); pw.print(mLeash); - if (mAnimationStartDelayed) { - pw.print(" mAnimationStartDelayed="); pw.println(mAnimationStartDelayed); - } else { - pw.println(); - } - pw.print(prefix); pw.println("Animation:"); + pw.print(" mAnimationType=" + mAnimationType); + pw.println(mAnimationStartDelayed ? " mAnimationStartDelayed=true" : ""); + pw.print(prefix); pw.print("Animation: "); pw.println(mAnimation); if (mAnimation != null) { mAnimation.dump(pw, prefix + " "); - } else { - pw.print(prefix); pw.println("null"); } } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 48609e17ba40..3ee7ee7a4276 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -3519,20 +3519,17 @@ class Task extends WindowContainer<WindowContainer> { @Override void dump(PrintWriter pw, String prefix, boolean dumpAll) { super.dump(pw, prefix, dumpAll); + pw.println(prefix + "bounds=" + getBounds().toShortString()); final String doublePrefix = prefix + " "; - - pw.println(prefix + "taskId=" + mTaskId); - pw.println(doublePrefix + "mBounds=" + getBounds().toShortString()); - pw.println(doublePrefix + "appTokens=" + mChildren); - - final String triplePrefix = doublePrefix + " "; - final String quadruplePrefix = triplePrefix + " "; - - int[] index = { 0 }; - forAllActivities((r) -> { - pw.println(triplePrefix + "Activity #" + index[0]++ + " " + r); - r.dump(pw, quadruplePrefix, dumpAll); - }); + for (int i = mChildren.size() - 1; i >= 0; i--) { + final WindowContainer<?> child = mChildren.get(i); + pw.println(prefix + "* " + child); + // Only dump non-activity because full activity info is already printed by + // RootWindowContainer#dumpActivities. + if (child.asActivityRecord() == null) { + child.dump(pw, doublePrefix, dumpAll); + } + } } /** diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 22054db20bbd..102c2a6364f4 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -1772,16 +1772,20 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> { @Override void dump(PrintWriter pw, String prefix, boolean dumpAll) { pw.println(prefix + "TaskDisplayArea " + getName()); + super.dump(pw, prefix, dumpAll); if (mPreferredTopFocusableStack != null) { pw.println(prefix + " mPreferredTopFocusableStack=" + mPreferredTopFocusableStack); } if (mLastFocusedStack != null) { pw.println(prefix + " mLastFocusedStack=" + mLastFocusedStack); } - pw.println(prefix + " Application tokens in top down Z order:"); + final String doublePrefix = prefix + " "; + final String triplePrefix = doublePrefix + " "; + pw.println(doublePrefix + "Application tokens in top down Z order:"); for (int stackNdx = getChildCount() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = getChildAt(stackNdx); - stack.dump(pw, prefix + " ", dumpAll); + pw.println(doublePrefix + "* " + stack); + stack.dump(pw, triplePrefix, dumpAll); } } } |