diff options
| author | 2016-01-06 12:36:34 -0800 | |
|---|---|---|
| committer | 2016-01-06 13:01:29 -0800 | |
| commit | b429e6826d394a63f81d1702efd714d640ddfb49 (patch) | |
| tree | 4ecaf9933078623a262c8fcc02ed932c119a9ca2 | |
| parent | 1a3d9ba7ccedf097c7b35c67d3295ded360185e7 (diff) | |
Improved output for 'dumpsys window displays'
New format makes it easier to parse during CTS testing.
Bug: 19225708
Change-Id: Ia9a75ca92b6c10eefcb07cabea9852e514807b08
4 files changed, 33 insertions, 38 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 59421984dc1f..51787b066859 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 @@ class DisplayContent { 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, " "); - } - } - } - if (ndx == 0) { - pw.println(" None"); + stack.dump(prefix + " ", pw); } + 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 223e03ad4cc4..72970f6c7545 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 @@ class Task implements DimLayer.DimLayerUser { 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 67debe6e3773..fc6ad70513b1 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 class TaskStack implements DimLayer.DimLayerUser { } 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 f7b81cb9634e..2998bc81eee3 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 @@ public class WindowManagerService extends IWindowManager.Stub 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 = |