Improved output for 'dumpsys window displays'
New format makes it easier to parse during CTS testing.
Bug: 19225708
Change-Id: Ia9a75ca92b6c10eefcb07cabea9852e514807b08
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 5942198..51787b0 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -570,38 +570,19 @@
pw.print("x"); pw.println(mDisplayInfo.largestNominalAppHeight);
pw.print(subPrefix); pw.print("deferred="); pw.print(mDeferredRemoval);
pw.print(" layoutNeeded="); pw.println(layoutNeeded);
- for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
- final TaskStack stack = mStacks.get(stackNdx);
- pw.print(prefix); pw.print("mStacks[" + stackNdx + "]"); pw.println(stack.mStackId);
- stack.dump(prefix + " ", pw);
- }
+
pw.println();
pw.println(" Application tokens in top down Z order:");
- int ndx = 0;
for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
final TaskStack stack = mStacks.get(stackNdx);
- pw.print(" mStackId="); pw.println(stack.mStackId);
- ArrayList<Task> tasks = stack.getTasks();
- for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
- final Task task = tasks.get(taskNdx);
- pw.print(" mTaskId="); pw.println(task.mTaskId);
- AppTokenList tokens = task.mAppTokens;
- for (int tokenNdx = tokens.size() - 1; tokenNdx >= 0; --tokenNdx, ++ndx) {
- final AppWindowToken wtoken = tokens.get(tokenNdx);
- pw.print(" Activity #"); pw.print(tokenNdx);
- pw.print(' '); pw.print(wtoken); pw.println(":");
- wtoken.dump(pw, " ");
- }
- }
+ stack.dump(prefix + " ", pw);
}
- if (ndx == 0) {
- pw.println(" None");
- }
+
pw.println();
if (!mExitingTokens.isEmpty()) {
pw.println();
pw.println(" Exiting tokens:");
- for (int i=mExitingTokens.size()-1; i>=0; i--) {
+ for (int i = mExitingTokens.size() - 1; i >= 0; i--) {
WindowToken token = mExitingTokens.get(i);
pw.print(" Exiting #"); pw.print(i);
pw.print(' '); pw.print(token);
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 223e03a..72970f6 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -603,12 +603,23 @@
return "Task=" + mTaskId;
}
- public void printTo(String prefix, PrintWriter pw) {
- pw.print(prefix); pw.print("taskId="); pw.println(mTaskId);
- pw.print(prefix + prefix); pw.print("mFullscreen="); pw.println(mFullscreen);
- pw.print(prefix + prefix); pw.print("mBounds="); pw.println(mBounds.toShortString());
- pw.print(prefix + prefix); pw.print("mdr="); pw.println(mDeferRemoval);
- pw.print(prefix + prefix); pw.print("appTokens="); pw.println(mAppTokens);
- pw.print(prefix + prefix); pw.print("mTempInsetBounds="); pw.println(mTempInsetBounds);
+ public void dump(String prefix, PrintWriter pw) {
+ final String doublePrefix = prefix + " ";
+
+ pw.println(prefix + "taskId=" + mTaskId);
+ pw.println(doublePrefix + "mFullscreen=" + mFullscreen);
+ pw.println(doublePrefix + "mBounds=" + mBounds.toShortString());
+ pw.println(doublePrefix + "mdr=" + mDeferRemoval);
+ pw.println(doublePrefix + "appTokens=" + mAppTokens);
+ pw.println(doublePrefix + "mTempInsetBounds=" + mTempInsetBounds.toShortString());
+
+ final String triplePrefix = doublePrefix + " ";
+
+ for (int i = mAppTokens.size() - 1; i >= 0; i--) {
+ final AppWindowToken wtoken = mAppTokens.get(i);
+ pw.println(triplePrefix + "Activity #" + i + " " + wtoken);
+ wtoken.dump(pw, triplePrefix);
+ }
+
}
}
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 67debe6..fc6ad70 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -619,16 +619,15 @@
}
public void dump(String prefix, PrintWriter pw) {
- pw.print(prefix); pw.print("mStackId="); pw.println(mStackId);
- pw.print(prefix); pw.print("mDeferDetach="); pw.println(mDeferDetach);
- pw.print(prefix); pw.print("mFullscreen="); pw.println(mFullscreen);
- pw.print(prefix); pw.print("mBounds="); pw.println(mBounds.toShortString());
- for (int taskNdx = 0; taskNdx < mTasks.size(); ++taskNdx) {
- pw.print(prefix);
- mTasks.get(taskNdx).printTo(prefix + " ", pw);
+ pw.println(prefix + "mStackId=" + mStackId);
+ pw.println(prefix + "mDeferDetach=" + mDeferDetach);
+ pw.println(prefix + "mFullscreen=" + mFullscreen);
+ pw.println(prefix + "mBounds=" + mBounds.toShortString());
+ for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; taskNdx--) {
+ mTasks.get(taskNdx).dump(prefix + " ", pw);
}
if (mAnimationBackgroundSurface.isDimming()) {
- pw.print(prefix); pw.println("mWindowAnimationBackgroundSurface:");
+ pw.println(prefix + "mWindowAnimationBackgroundSurface:");
mAnimationBackgroundSurface.printTo(prefix + " ", pw);
}
if (!mExitingAppTokens.isEmpty()) {
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index f7b81cb..2998bc81 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -9783,6 +9783,10 @@
if ("visible".equals(name) || "visible-apps".equals(name)) {
final boolean appsOnly = "visible-apps".equals(name);
synchronized(mWindowMap) {
+ if (appsOnly) {
+ dumpDisplayContentsLocked(pw, true);
+ }
+
final int numDisplays = mDisplayContents.size();
for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
final WindowList windowList =