WM: Unify windows and activities proto dumps (88/n)

Can no longer be put off since we need to redo things for task/stack
merge.

Bug: 80414790
Bug: 143460940
Test: Existing tests pass.
Change-Id: Id6c60264220a42c290190e338945f1662a075b6f
diff --git a/core/proto/android/server/activitymanagerservice.proto b/core/proto/android/server/activitymanagerservice.proto
index 1426932..0a2fd70 100644
--- a/core/proto/android/server/activitymanagerservice.proto
+++ b/core/proto/android/server/activitymanagerservice.proto
@@ -55,87 +55,8 @@
 message ActivityManagerServiceDumpActivitiesProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
 
-    optional ActivityStackSupervisorProto activity_stack_supervisor = 1;
-}
-
-message ActivityStackSupervisorProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    repeated ActivityDisplayProto displays = 2;
-    optional KeyguardControllerProto keyguard_controller = 3;
-    // TODO(b/111541062): Focused stack and resumed activity are now per-display. Topmost instances
-    // can be obtained from top display and these fields can be removed.
-    optional int32 focused_stack_id = 4;
-    optional .com.android.server.wm.IdentifierProto resumed_activity = 5;
-    // Whether or not the home activity is the recents activity. This is needed for the CTS tests to
-    // know what activity types to check for when invoking splitscreen multi-window.
-    optional bool is_home_recents_component = 6;
-    repeated .com.android.server.wm.IdentifierProto pending_activities = 7;
-    optional .com.android.server.wm.RootWindowContainerProto root_window_container = 8;
-}
-
-/* represents ActivityStackSupervisor.ActivityDisplay */
-message ActivityDisplayProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    optional int32 id = 2;
-    repeated ActivityStackProto stacks = 3;
-    optional int32 focused_stack_id = 4;
-    optional .com.android.server.wm.IdentifierProto resumed_activity = 5;
-    optional bool single_task_instance = 6;
-    optional .com.android.server.wm.DisplayContentProto display = 7;
-}
-
-message ActivityStackProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    optional int32 id = 2;
-    repeated TaskRecordProto tasks = 3;
-    optional .com.android.server.wm.IdentifierProto resumed_activity = 4;
-    optional int32 display_id = 5;
-    optional bool fullscreen = 6;
-    optional .android.graphics.RectProto bounds = 7;
-    optional .com.android.server.wm.StackProto stack = 8;
-}
-
-message TaskRecordProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    optional int32 id = 2;
-    repeated .com.android.server.wm.ActivityRecordProto activities = 3;
-    optional int32 stack_id = 4;
-    optional .android.graphics.RectProto last_non_fullscreen_bounds = 5;
-    optional string real_activity = 6;
-    optional string orig_activity = 7;
-    optional int32 activity_type = 8;
-    optional int32 resize_mode = 9;
-    optional bool fullscreen = 10;
-    optional .android.graphics.RectProto bounds = 11;
-    optional int32 min_width = 12;
-    optional int32 min_height = 13;
-    optional .com.android.server.wm.TaskProto task = 14;
-}
-
-message KeyguardControllerProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional bool keyguard_showing = 1;
-    repeated KeyguardOccludedProto keyguard_occluded_states= 2;
-    optional bool aod_showing = 3;
-}
-
-message KeyguardOccludedProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 display_id = 1;
-    optional bool keyguard_occluded = 2;
+    reserved 1; // activity_stack_supervisor
+    optional .com.android.server.wm.RootWindowContainerProto root_window_container = 2;
 }
 
 // "dumpsys activity --proto broadcasts"
@@ -669,8 +590,6 @@
     optional int64 previous_proc_visible_time_ms = 17;
     optional ProcessRecordProto heavy_weight_proc = 18;
     optional .android.content.ConfigurationProto global_configuration = 19;
-    // ActivityStackSupervisorProto dumps these values as well, still here?
-    // repeated ActivityDisplayProto displays = 20;
 
     optional bool config_will_change = 21;
 
diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto
index 7c8f62c..b0b9ce6f 100644
--- a/core/proto/android/server/windowmanagerservice.proto
+++ b/core/proto/android/server/windowmanagerservice.proto
@@ -54,8 +54,14 @@
 
     optional WindowContainerProto window_container = 1;
     repeated DisplayContentProto displays = 2;
+    reserved 3; // IdentifierProto windows
     /* window references in top down z order */
-    repeated IdentifierProto windows = 3;
+    repeated WindowStateProto windows = 4;
+    optional KeyguardControllerProto keyguard_controller = 5;
+    // Whether or not the home activity is the recents activity. This is needed for the CTS tests to
+    // know what activity types to check for when invoking splitscreen multi-window.
+    optional bool is_home_recents_component = 6;
+    repeated IdentifierProto pending_activities = 7;
 }
 
 message BarControllerProto {
@@ -94,6 +100,21 @@
     optional InteractiveState interactive_state = 5;
 }
 
+message KeyguardControllerProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional bool keyguard_showing = 1;
+    repeated KeyguardOccludedProto keyguard_occluded_states = 2;
+    optional bool aod_showing = 3;
+}
+
+message KeyguardOccludedProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional int32 display_id = 1;
+    optional bool keyguard_occluded = 2;
+}
+
 /* represents PhoneWindowManager */
 message WindowManagerPolicyProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
@@ -145,7 +166,7 @@
 
     optional WindowContainerProto window_container = 1;
     optional int32 id = 2;
-    repeated StackProto stacks = 3;
+    reserved 3; // stacks
     optional DockedStackDividerControllerProto docked_stack_divider_controller = 4;
     // Will be removed soon.
     optional PinnedStackControllerProto pinned_stack_controller = 5 [deprecated=true];
@@ -166,6 +187,12 @@
     repeated IdentifierProto changing_apps = 19;
     repeated WindowTokenProto overlay_windows = 20;
     optional DisplayAreaProto root_display_area = 21;
+
+
+    optional bool single_task_instance = 22;
+    optional int32 focused_root_task_id = 23;
+    optional .com.android.server.wm.IdentifierProto resumed_activity = 24;
+    repeated TaskProto tasks = 25;
 }
 
 /* represents DisplayArea object */
@@ -191,7 +218,6 @@
     repeated string unknown = 3;
 }
 
-
 /* represents DisplayFrames */
 message DisplayFramesProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
@@ -214,39 +240,41 @@
     optional .android.graphics.RectProto movement_bounds = 2 [deprecated=true];
 }
 
-/* represents TaskStack */
-message StackProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional WindowContainerProto window_container = 1;
-    optional int32 id = 2;
-    repeated TaskProto tasks = 3;
-    optional bool fills_parent = 4;
-    optional .android.graphics.RectProto bounds = 5;
-    optional bool animation_background_surface_is_dimming = 6 [deprecated=true];
-    optional bool defer_removal = 7;
-    optional float minimize_amount = 8;
-    optional bool adjusted_for_ime = 9;
-    optional float adjust_ime_amount = 10;
-    optional float adjust_divider_amount = 11;
-    optional .android.graphics.RectProto adjusted_bounds = 12;
-    optional bool animating_bounds = 13;
-}
-
 /* represents Task */
 message TaskProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
 
     optional WindowContainerProto window_container = 1;
     optional int32 id = 2;
-    repeated ActivityRecordProto activity = 3;
+    reserved 3; // activity
     optional bool fills_parent = 4;
     optional .android.graphics.RectProto bounds = 5;
     optional .android.graphics.RectProto displayed_bounds = 6;
-    // Will be removed soon.
-    optional bool defer_removal = 7 [deprecated=true];
+    optional bool defer_removal = 7;
     optional int32 surface_width = 8;
     optional int32 surface_height = 9;
+
+    repeated TaskProto tasks = 10;
+    repeated ActivityRecordProto activities = 11;
+
+    optional .com.android.server.wm.IdentifierProto resumed_activity = 12;
+    optional string real_activity = 13;
+    optional string orig_activity = 14;
+
+    optional int32 display_id = 15;
+    optional int32 root_task_id = 16;
+    optional int32 activity_type = 17;
+    optional int32 resize_mode = 18;
+    optional int32 min_width = 19;
+    optional int32 min_height = 20;
+
+    optional .android.graphics.RectProto adjusted_bounds = 21;
+    optional .android.graphics.RectProto last_non_fullscreen_bounds = 22;
+    optional bool adjusted_for_ime = 23;
+    optional float adjust_ime_amount = 24;
+    optional float adjust_divider_amount = 25;
+    optional bool animating_bounds = 26;
+    optional float minimize_amount = 27;
 }
 
 /* represents ActivityRecordProto */
@@ -271,17 +299,15 @@
     optional int32 num_drawn_windows = 15;
     optional bool all_drawn = 16;
     optional bool last_all_drawn = 17;
-    // Will be removed soon
-    optional bool removed = 18 [deprecated=true];
+    reserved 18; // removed
     optional IdentifierProto starting_window = 19;
     optional bool starting_displayed = 20;
-    optional bool starting_moved = 21;
+    optional bool starting_moved = 201;
     optional bool visible_set_from_transferred_starting_window = 22;
     repeated .android.graphics.RectProto frozen_bounds = 23;
     optional bool visible = 24;
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 25 [deprecated=true];
-    optional .com.android.server.wm.IdentifierProto identifier = 26;
+    reserved 25; // configuration_container
+    optional IdentifierProto identifier = 26;
     optional string state = 27;
     optional bool front_of_task = 28;
     optional int32 proc_id = 29;
diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
index 2ef0015..0502d0b 100644
--- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
@@ -1212,7 +1212,7 @@
         final ProtoOutputStream protoOutputStream =
                 new ProtoOutputStream(LAUNCH_OBSERVER_ACTIVITY_RECORD_PROTO_CHUNK_SIZE);
         // Write this data out as the top-most ActivityRecordProto (i.e. it is not a sub-object).
-        record.dumpDebug(protoOutputStream);
+        record.dumpDebug(protoOutputStream, WindowTraceLogLevel.ALL);
         final byte[] bytes = protoOutputStream.getBytes();
 
         Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index b05c250..5a65643 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -7502,17 +7502,19 @@
      * Write all fields to an {@code ActivityRecordProto}. This assumes the
      * {@code ActivityRecordProto} is the outer-most proto data.
      */
-    void dumpDebug(ProtoOutputStream proto) {
+    void dumpDebug(ProtoOutputStream proto, @WindowTraceLogLevel int logLevel) {
         writeNameToProto(proto, NAME);
-        super.dumpDebug(proto, WINDOW_TOKEN, WindowTraceLogLevel.ALL);
+        super.dumpDebug(proto, WINDOW_TOKEN, logLevel);
         proto.write(LAST_SURFACE_SHOWING, mLastSurfaceShowing);
         proto.write(IS_WAITING_FOR_TRANSITION_START, isWaitingForTransitionStart());
-        proto.write(IS_ANIMATING, isAnimating());
-        if (mThumbnail != null) {
+        proto.write(IS_ANIMATING, isAnimating(PARENTS));
+        if (mThumbnail != null){
             mThumbnail.dumpDebug(proto, THUMBNAIL);
         }
         proto.write(FILLS_PARENT, mOccludesParent);
         proto.write(APP_STOPPED, mAppStopped);
+        proto.write(TRANSLUCENT, !occludesParent());
+        proto.write(VISIBLE, mVisible);
         proto.write(VISIBLE_REQUESTED, mVisibleRequested);
         proto.write(CLIENT_VISIBLE, mClientVisible);
         proto.write(DEFER_HIDING_CLIENT, mDeferHidingClient);
@@ -7535,24 +7537,12 @@
 
         writeIdentifierToProto(proto, IDENTIFIER);
         proto.write(STATE, mState.toString());
-        proto.write(VISIBLE_REQUESTED, mVisibleRequested);
         proto.write(FRONT_OF_TASK, isRootOfTask());
         if (hasProcess()) {
             proto.write(PROC_ID, app.getPid());
         }
-        proto.write(TRANSLUCENT, !occludesParent());
-        proto.write(VISIBLE, mVisible);
     }
 
-    public void dumpDebug(ProtoOutputStream proto, long fieldId) {
-        final long token = proto.start(fieldId);
-        dumpDebug(proto);
-        proto.end(token);
-    }
-
-    /**
-     * Copied from old AppWindowToken.
-     */
     @Override
     public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
@@ -7562,36 +7552,7 @@
         }
 
         final long token = proto.start(fieldId);
-        writeNameToProto(proto, NAME);
-        super.dumpDebug(proto, WINDOW_TOKEN, logLevel);
-        proto.write(LAST_SURFACE_SHOWING, mLastSurfaceShowing);
-        proto.write(IS_WAITING_FOR_TRANSITION_START, isWaitingForTransitionStart());
-        proto.write(IS_ANIMATING, isAnimating(PARENTS));
-        if (mThumbnail != null){
-            mThumbnail.dumpDebug(proto, THUMBNAIL);
-        }
-        proto.write(FILLS_PARENT, mOccludesParent);
-        proto.write(APP_STOPPED, mAppStopped);
-        proto.write(VISIBLE_REQUESTED, mVisibleRequested);
-        proto.write(CLIENT_VISIBLE, mClientVisible);
-        proto.write(DEFER_HIDING_CLIENT, mDeferHidingClient);
-        proto.write(REPORTED_DRAWN, reportedDrawn);
-        proto.write(REPORTED_VISIBLE, reportedVisible);
-        proto.write(NUM_INTERESTING_WINDOWS, mNumInterestingWindows);
-        proto.write(NUM_DRAWN_WINDOWS, mNumDrawnWindows);
-        proto.write(ALL_DRAWN, allDrawn);
-        proto.write(LAST_ALL_DRAWN, mLastAllDrawn);
-        if (startingWindow != null) {
-            startingWindow.writeIdentifierToProto(proto, STARTING_WINDOW);
-        }
-        proto.write(STARTING_DISPLAYED, startingDisplayed);
-        proto.write(STARTING_MOVED, startingMoved);
-        proto.write(VISIBLE_SET_FROM_TRANSFERRED_STARTING_WINDOW,
-                mVisibleSetFromTransferredStartingWindow);
-        for (Rect bounds : mFrozenBounds) {
-            bounds.dumpDebug(proto, FROZEN_BOUNDS);
-        }
-        proto.write(VISIBLE, mVisible);
+        dumpDebug(proto, logLevel);
         proto.end(token);
     }
 
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index 0d72d84..d5961a8 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -60,10 +60,18 @@
 import static android.view.WindowManager.TRANSIT_TASK_TO_BACK;
 import static android.view.WindowManager.TRANSIT_TASK_TO_FRONT;
 
-import static com.android.server.am.ActivityStackProto.DISPLAY_ID;
-import static com.android.server.am.ActivityStackProto.FULLSCREEN;
-import static com.android.server.am.ActivityStackProto.RESUMED_ACTIVITY;
-import static com.android.server.am.ActivityStackProto.STACK;
+import static com.android.server.wm.TaskProto.ACTIVITIES;
+import static com.android.server.wm.TaskProto.ACTIVITY_TYPE;
+import static com.android.server.wm.TaskProto.BOUNDS;
+import static com.android.server.wm.TaskProto.DISPLAYED_BOUNDS;
+import static com.android.server.wm.TaskProto.DISPLAY_ID;
+import static com.android.server.wm.TaskProto.LAST_NON_FULLSCREEN_BOUNDS;
+import static com.android.server.wm.TaskProto.MIN_HEIGHT;
+import static com.android.server.wm.TaskProto.MIN_WIDTH;
+import static com.android.server.wm.TaskProto.ORIG_ACTIVITY;
+import static com.android.server.wm.TaskProto.REAL_ACTIVITY;
+import static com.android.server.wm.TaskProto.RESIZE_MODE;
+import static com.android.server.wm.TaskProto.RESUMED_ACTIVITY;
 import static com.android.server.wm.ActivityStack.ActivityState.PAUSED;
 import static com.android.server.wm.ActivityStack.ActivityState.PAUSING;
 import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
@@ -107,15 +115,19 @@
 import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_END;
 import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_START;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
-import static com.android.server.wm.StackProto.ADJUSTED_BOUNDS;
-import static com.android.server.wm.StackProto.ADJUSTED_FOR_IME;
-import static com.android.server.wm.StackProto.ADJUST_DIVIDER_AMOUNT;
-import static com.android.server.wm.StackProto.ADJUST_IME_AMOUNT;
-import static com.android.server.wm.StackProto.ANIMATING_BOUNDS;
-import static com.android.server.wm.StackProto.DEFER_REMOVAL;
-import static com.android.server.wm.StackProto.FILLS_PARENT;
-import static com.android.server.wm.StackProto.MINIMIZE_AMOUNT;
-import static com.android.server.wm.StackProto.WINDOW_CONTAINER;
+import static com.android.server.wm.TaskProto.ADJUSTED_BOUNDS;
+import static com.android.server.wm.TaskProto.ADJUSTED_FOR_IME;
+import static com.android.server.wm.TaskProto.ADJUST_DIVIDER_AMOUNT;
+import static com.android.server.wm.TaskProto.ADJUST_IME_AMOUNT;
+import static com.android.server.wm.TaskProto.ANIMATING_BOUNDS;
+import static com.android.server.wm.TaskProto.DEFER_REMOVAL;
+import static com.android.server.wm.TaskProto.FILLS_PARENT;
+import static com.android.server.wm.TaskProto.MINIMIZE_AMOUNT;
+import static com.android.server.wm.TaskProto.ROOT_TASK_ID;
+import static com.android.server.wm.TaskProto.SURFACE_HEIGHT;
+import static com.android.server.wm.TaskProto.SURFACE_WIDTH;
+import static com.android.server.wm.TaskProto.TASKS;
+import static com.android.server.wm.TaskProto.WINDOW_CONTAINER;
 import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
 import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
@@ -4925,49 +4937,66 @@
     @Override
     public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
-        final long token = proto.start(fieldId);
-        dumpDebugInnerStackOnly(proto, STACK, logLevel);
-        proto.write(com.android.server.am.ActivityStackProto.ID, getRootTaskId());
-
-        forAllTasks((t) -> {
-            t.dumpDebugInner(proto, com.android.server.am.ActivityStackProto.TASKS, logLevel);
-        }, true /* traverseTopToBottom */, this);
-        if (mResumedActivity != null) {
-            mResumedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
-        }
-        proto.write(DISPLAY_ID, getDisplayId());
-        if (!matchParentBounds()) {
-            final Rect bounds = getRequestedOverrideBounds();
-            bounds.dumpDebug(proto, com.android.server.am.ActivityStackProto.BOUNDS);
-        }
-
-        // TODO: Remove, no longer needed with windowingMode.
-        proto.write(FULLSCREEN, matchParentBounds());
-        proto.end(token);
-    }
-
-    // TODO(proto-merge): Remove once protos for ActivityStack and TaskStack are merged.
-    void dumpDebugInnerStackOnly(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
         if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
             return;
         }
 
         final long token = proto.start(fieldId);
         super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
-        proto.write(StackProto.ID, getRootTaskId());
-        forAllTasks((t) -> {
-            t.dumpDebugInnerTaskOnly(proto, StackProto.TASKS, logLevel);
-        }, true /* traverseTopToBottom */, this);
+
+        proto.write(TaskProto.ID, mTaskId);
+        proto.write(DISPLAY_ID, getDisplayId());
+        proto.write(ROOT_TASK_ID, getRootTaskId());
+
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final WindowContainer child = mChildren.get(i);
+            if (child instanceof Task) {
+                child.dumpDebug(proto, TASKS, logLevel);
+            } else if (child instanceof ActivityRecord) {
+                child.dumpDebug(proto, ACTIVITIES, logLevel);
+            } else {
+                throw new IllegalStateException("Unknown child type: " + child);
+            }
+        }
+
+        if (mResumedActivity != null) {
+            mResumedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
+        }
+        if (realActivity != null) {
+            proto.write(REAL_ACTIVITY, realActivity.flattenToShortString());
+        }
+        if (origActivity != null) {
+            proto.write(ORIG_ACTIVITY, origActivity.flattenToShortString());
+        }
+        proto.write(ACTIVITY_TYPE, getActivityType());
+        proto.write(RESIZE_MODE, mResizeMode);
+        proto.write(MIN_WIDTH, mMinWidth);
+        proto.write(MIN_HEIGHT, mMinHeight);
+
         proto.write(FILLS_PARENT, matchParentBounds());
-        getRawBounds().dumpDebug(proto, StackProto.BOUNDS);
+
+        if (!matchParentBounds()) {
+            final Rect bounds = getRequestedOverrideBounds();
+            bounds.dumpDebug(proto, BOUNDS);
+        }
+        getOverrideDisplayedBounds().dumpDebug(proto, DISPLAYED_BOUNDS);
+        mAdjustedBounds.dumpDebug(proto, ADJUSTED_BOUNDS);
+        if (mLastNonFullscreenBounds != null) {
+            mLastNonFullscreenBounds.dumpDebug(proto, LAST_NON_FULLSCREEN_BOUNDS);
+        }
+
         proto.write(DEFER_REMOVAL, mDeferRemoval);
         proto.write(MINIMIZE_AMOUNT, mMinimizeAmount);
         proto.write(ADJUSTED_FOR_IME, mAdjustedForIme);
         proto.write(ADJUST_IME_AMOUNT, mAdjustImeAmount);
         proto.write(ADJUST_DIVIDER_AMOUNT, mAdjustDividerAmount);
-        mAdjustedBounds.dumpDebug(proto, ADJUSTED_BOUNDS);
         proto.write(ANIMATING_BOUNDS, mBoundsAnimating);
+
+        if (mSurfaceControl != null) {
+            proto.write(SURFACE_WIDTH, mSurfaceControl.getWidth());
+            proto.write(SURFACE_HEIGHT, mSurfaceControl.getHeight());
+        }
+
         proto.end(token);
     }
 }
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index d6e7077..5a5976b 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -69,6 +69,7 @@
 import static com.android.server.am.ActivityManagerService.MY_PID;
 import static com.android.server.am.ActivityManagerService.STOCK_PM_FLAGS;
 import static com.android.server.am.ActivityManagerService.dumpStackTraces;
+import static com.android.server.am.ActivityManagerServiceDumpActivitiesProto.ROOT_WINDOW_CONTAINER;
 import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.CONFIG_WILL_CHANGE;
 import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.CONTROLLER;
 import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.CURRENT_TRACKER;
@@ -257,7 +258,6 @@
 import com.android.server.UiThread;
 import com.android.server.Watchdog;
 import com.android.server.am.ActivityManagerService;
-import com.android.server.am.ActivityManagerServiceDumpActivitiesProto;
 import com.android.server.am.ActivityManagerServiceDumpProcessesProto;
 import com.android.server.am.AppTimeTracker;
 import com.android.server.am.BaseErrorDialog;
@@ -6963,10 +6963,8 @@
         public void writeActivitiesToProto(ProtoOutputStream proto) {
             synchronized (mGlobalLock) {
                 // The output proto of "activity --proto activities"
-                // is ActivityManagerServiceDumpActivitiesProto
-                mRootWindowContainer.dumpDebug(proto,
-                        ActivityManagerServiceDumpActivitiesProto.ACTIVITY_STACK_SUPERVISOR,
-                        WindowTraceLogLevel.ALL);
+                mRootWindowContainer.dumpDebug(
+                        proto, ROOT_WINDOW_CONTAINER, WindowTraceLogLevel.ALL);
             }
         }
 
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 81af0fe..16ac9fb 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -17,6 +17,7 @@
 package com.android.server.wm;
 
 import static android.app.ActivityTaskManager.INVALID_STACK_ID;
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.app.ActivityTaskManager.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
@@ -83,10 +84,9 @@
 import static android.view.WindowManager.TRANSIT_TASK_OPEN;
 import static android.view.WindowManager.TRANSIT_TASK_TO_FRONT;
 
-import static com.android.server.am.ActivityDisplayProto.DISPLAY;
-import static com.android.server.am.ActivityDisplayProto.FOCUSED_STACK_ID;
-import static com.android.server.am.ActivityDisplayProto.RESUMED_ACTIVITY;
-import static com.android.server.am.ActivityDisplayProto.SINGLE_TASK_INSTANCE;
+import static com.android.server.wm.DisplayContentProto.FOCUSED_ROOT_TASK_ID;
+import static com.android.server.wm.DisplayContentProto.RESUMED_ACTIVITY;
+import static com.android.server.wm.DisplayContentProto.SINGLE_TASK_INSTANCE;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_CONFIG;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
@@ -111,7 +111,7 @@
 import static com.android.server.wm.DisplayContentProto.ROOT_DISPLAY_AREA;
 import static com.android.server.wm.DisplayContentProto.ROTATION;
 import static com.android.server.wm.DisplayContentProto.SCREEN_ROTATION_ANIMATION;
-import static com.android.server.wm.DisplayContentProto.STACKS;
+import static com.android.server.wm.DisplayContentProto.TASKS;
 import static com.android.server.wm.DisplayContentProto.WINDOW_CONTAINER;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ADD_REMOVE;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS;
@@ -2733,30 +2733,6 @@
 
     public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
-        final long token = proto.start(fieldId);
-        dumpDebugInner(proto, DISPLAY, logLevel);
-        proto.write(com.android.server.am.ActivityDisplayProto.ID, mDisplayId);
-        proto.write(SINGLE_TASK_INSTANCE, mSingleTaskInstance);
-        final ActivityStack focusedStack = getFocusedStack();
-        if (focusedStack != null) {
-            proto.write(FOCUSED_STACK_ID, focusedStack.getRootTaskId());
-            final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
-            if (focusedActivity != null) {
-                focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
-            }
-        } else {
-            proto.write(FOCUSED_STACK_ID, INVALID_STACK_ID);
-        }
-        for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) {
-            final ActivityStack stack = getStackAt(stackNdx);
-            stack.dumpDebug(proto, com.android.server.am.ActivityDisplayProto.STACKS, logLevel);
-        }
-        proto.end(token);
-    }
-
-    // TODO(proto-merge): Remove once protos for ActivityDisplay and DisplayContent are merged.
-    public void dumpDebugInner(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
         // Critical log level logs only visible elements to mitigate performance overheard
         if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
             return;
@@ -2764,11 +2740,12 @@
 
         final long token = proto.start(fieldId);
         super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
+
         proto.write(ID, mDisplayId);
         mRootDisplayArea.dumpDebug(proto, ROOT_DISPLAY_AREA, logLevel);
-        for (int stackNdx = mTaskContainers.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
-            final ActivityStack stack = mTaskContainers.getChildAt(stackNdx);
-            stack.dumpDebugInnerStackOnly(proto, STACKS, logLevel);
+        for (int i = mTaskContainers.getChildCount() - 1; i >= 0; --i) {
+            final ActivityStack stack = mTaskContainers.getChildAt(i);
+            stack.dumpDebug(proto, TASKS, logLevel);
         }
         mDividerControllerLocked.dumpDebug(proto, DOCKED_STACK_DIVIDER_CONTROLLER);
         for (int i = mOverlayContainers.getChildCount() - 1; i >= 0; --i) {
@@ -2796,6 +2773,19 @@
         for (int i = mChangingApps.size() - 1; i >= 0; i--) {
             mChangingApps.valueAt(i).writeIdentifierToProto(proto, CHANGING_APPS);
         }
+
+        proto.write(SINGLE_TASK_INSTANCE, mSingleTaskInstance);
+        final ActivityStack focusedStack = getFocusedStack();
+        if (focusedStack != null) {
+            proto.write(FOCUSED_ROOT_TASK_ID, focusedStack.getRootTaskId());
+            final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
+            if (focusedActivity != null) {
+                focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
+            }
+        } else {
+            proto.write(FOCUSED_ROOT_TASK_ID, INVALID_TASK_ID);
+        }
+
         proto.end(token);
     }
 
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index ad65e10..00947d7 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -31,11 +31,11 @@
 import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE;
 import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER;
 
-import static com.android.server.am.KeyguardControllerProto.AOD_SHOWING;
-import static com.android.server.am.KeyguardControllerProto.KEYGUARD_OCCLUDED_STATES;
-import static com.android.server.am.KeyguardControllerProto.KEYGUARD_SHOWING;
-import static com.android.server.am.KeyguardOccludedProto.DISPLAY_ID;
-import static com.android.server.am.KeyguardOccludedProto.KEYGUARD_OCCLUDED;
+import static com.android.server.wm.KeyguardControllerProto.AOD_SHOWING;
+import static com.android.server.wm.KeyguardControllerProto.KEYGUARD_OCCLUDED_STATES;
+import static com.android.server.wm.KeyguardControllerProto.KEYGUARD_SHOWING;
+import static com.android.server.wm.KeyguardOccludedProto.DISPLAY_ID;
+import static com.android.server.wm.KeyguardOccludedProto.KEYGUARD_OCCLUDED;
 import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index a13399b..2fdcbc90 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -16,7 +16,6 @@
 
 package com.android.server.wm;
 
-import static android.app.ActivityTaskManager.INVALID_STACK_ID;
 import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
@@ -41,12 +40,6 @@
 import static android.view.WindowManager.TRANSIT_CRASHING_ACTIVITY_CLOSE;
 import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
 
-import static com.android.server.am.ActivityStackSupervisorProto.FOCUSED_STACK_ID;
-import static com.android.server.am.ActivityStackSupervisorProto.IS_HOME_RECENTS_COMPONENT;
-import static com.android.server.am.ActivityStackSupervisorProto.KEYGUARD_CONTROLLER;
-import static com.android.server.am.ActivityStackSupervisorProto.PENDING_ACTIVITIES;
-import static com.android.server.am.ActivityStackSupervisorProto.RESUMED_ACTIVITY;
-import static com.android.server.am.ActivityStackSupervisorProto.ROOT_WINDOW_CONTAINER;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
 import static com.android.server.wm.ActivityStack.ActivityState.PAUSED;
@@ -74,6 +67,9 @@
 import static com.android.server.wm.ProtoLogGroup.WM_SHOW_SURFACE_ALLOC;
 import static com.android.server.wm.ProtoLogGroup.WM_SHOW_TRANSACTIONS;
 import static com.android.server.wm.RootWindowContainerProto.DISPLAYS;
+import static com.android.server.wm.RootWindowContainerProto.IS_HOME_RECENTS_COMPONENT;
+import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
+import static com.android.server.wm.RootWindowContainerProto.PENDING_ACTIVITIES;
 import static com.android.server.wm.RootWindowContainerProto.WINDOWS;
 import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
 import static com.android.server.wm.Task.REPARENT_LEAVE_STACK_IN_PLACE;
@@ -1278,7 +1274,8 @@
         }
     }
 
-    public void dumpDebugInner(ProtoOutputStream proto, long fieldId,
+    @Override
+    public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
         if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
             return;
@@ -1290,14 +1287,20 @@
             final int count = mChildren.size();
             for (int i = 0; i < count; ++i) {
                 final DisplayContent displayContent = mChildren.get(i);
-                displayContent.dumpDebugInner(proto, DISPLAYS, logLevel);
+                displayContent.dumpDebug(proto, DISPLAYS, logLevel);
             }
         }
         if (logLevel == WindowTraceLogLevel.ALL) {
             forAllWindows((w) -> {
-                w.writeIdentifierToProto(proto, WINDOWS);
+                w.dumpDebug(proto, WINDOWS, logLevel);
             }, true);
         }
+
+        mStackSupervisor.getKeyguardController().dumpDebug(proto, KEYGUARD_CONTROLLER);
+        proto.write(IS_HOME_RECENTS_COMPONENT,
+                mStackSupervisor.mRecentTasks.isRecentsComponentHomeActivity(mCurrentUser));
+        mService.getActivityStartController().dumpDebug(proto, PENDING_ACTIVITIES);
+
         proto.end(token);
     }
 
@@ -3541,15 +3544,6 @@
         }
     }
 
-    public void dumpDisplays(PrintWriter pw) {
-        for (int i = getChildCount() - 1; i >= 0; --i) {
-            final DisplayContent display = getChildAt(i);
-            pw.print("[id:" + display.mDisplayId + " stacks:");
-            display.dumpStacks(pw);
-            pw.print("]");
-        }
-    }
-
     boolean dumpActivities(FileDescriptor fd, PrintWriter pw, boolean dumpAll, boolean dumpClient,
             String dumpPackage) {
         boolean printed = false;
@@ -3578,34 +3572,6 @@
         return printed;
     }
 
-    @Override
-    public void dumpDebug(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
-        final long token = proto.start(fieldId);
-        dumpDebugInner(proto, ROOT_WINDOW_CONTAINER, logLevel);
-        for (int displayNdx = 0; displayNdx < getChildCount(); ++displayNdx) {
-            final DisplayContent displayContent = getChildAt(displayNdx);
-            displayContent.dumpDebug(proto,
-                    com.android.server.am.ActivityStackSupervisorProto.DISPLAYS, logLevel);
-        }
-        mStackSupervisor.getKeyguardController().dumpDebug(proto, KEYGUARD_CONTROLLER);
-        // TODO(b/111541062): Update tests to look for resumed activities on all displays
-        final ActivityStack focusedStack = getTopDisplayFocusedStack();
-        if (focusedStack != null) {
-            proto.write(FOCUSED_STACK_ID, focusedStack.getRootTaskId());
-            final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
-            if (focusedActivity != null) {
-                focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
-            }
-        } else {
-            proto.write(FOCUSED_STACK_ID, INVALID_STACK_ID);
-        }
-        proto.write(IS_HOME_RECENTS_COMPONENT,
-                mStackSupervisor.mRecentTasks.isRecentsComponentHomeActivity(mCurrentUser));
-        mService.getActivityStartController().dumpDebug(proto, PENDING_ACTIVITIES);
-        proto.end(token);
-    }
-
     private final class SleepTokenImpl extends ActivityTaskManagerInternal.SleepToken {
         private final String mTag;
         private final long mAcquireTime;
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 28dc2a4..87c91ef 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -61,17 +61,6 @@
 
 import static com.android.internal.policy.DecorView.DECOR_SHADOW_FOCUSED_HEIGHT_IN_DIP;
 import static com.android.internal.policy.DecorView.DECOR_SHADOW_UNFOCUSED_HEIGHT_IN_DIP;
-import static com.android.server.am.TaskRecordProto.ACTIVITIES;
-import static com.android.server.am.TaskRecordProto.ACTIVITY_TYPE;
-import static com.android.server.am.TaskRecordProto.FULLSCREEN;
-import static com.android.server.am.TaskRecordProto.LAST_NON_FULLSCREEN_BOUNDS;
-import static com.android.server.am.TaskRecordProto.MIN_HEIGHT;
-import static com.android.server.am.TaskRecordProto.MIN_WIDTH;
-import static com.android.server.am.TaskRecordProto.ORIG_ACTIVITY;
-import static com.android.server.am.TaskRecordProto.REAL_ACTIVITY;
-import static com.android.server.am.TaskRecordProto.RESIZE_MODE;
-import static com.android.server.am.TaskRecordProto.STACK_ID;
-import static com.android.server.am.TaskRecordProto.TASK;
 import static com.android.server.wm.ActivityRecord.STARTING_WINDOW_SHOWN;
 import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
 import static com.android.server.wm.ActivityStackSupervisor.ON_TOP;
@@ -90,7 +79,6 @@
 import static com.android.server.wm.ActivityTaskManagerService.TAG_STACK;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ADD_REMOVE;
-import static com.android.server.wm.TaskProto.ACTIVITY;
 import static com.android.server.wm.TaskProto.DISPLAYED_BOUNDS;
 import static com.android.server.wm.TaskProto.FILLS_PARENT;
 import static com.android.server.wm.TaskProto.SURFACE_HEIGHT;
@@ -3160,29 +3148,6 @@
         }
     }
 
-    // TODO(proto-merge): Remove once protos for TaskRecord and Task are merged.
-    void dumpDebugInnerTaskOnly(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
-        if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
-            return;
-        }
-
-        final long token = proto.start(fieldId);
-        super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
-        proto.write(TaskProto.ID, mTaskId);
-        forAllActivities((r) -> {
-            r.dumpDebug(proto, ACTIVITY);
-        });
-        proto.write(FILLS_PARENT, matchParentBounds());
-        getBounds().dumpDebug(proto, TaskProto.BOUNDS);
-        mOverrideDisplayedBounds.dumpDebug(proto, DISPLAYED_BOUNDS);
-        if (mSurfaceControl != null) {
-            proto.write(SURFACE_WIDTH, mSurfaceControl.getWidth());
-            proto.write(SURFACE_HEIGHT, mSurfaceControl.getHeight());
-        }
-        proto.end(token);
-    }
-
     @Override
     void dump(PrintWriter pw, String prefix, boolean dumpAll) {
         super.dump(pw, prefix, dumpAll);
@@ -3395,43 +3360,6 @@
         return toString();
     }
 
-    void dumpDebugInner(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
-        if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
-            return;
-        }
-
-        final long token = proto.start(fieldId);
-        dumpDebugInnerTaskOnly(proto, TASK, logLevel);
-        proto.write(com.android.server.am.TaskRecordProto.ID, mTaskId);
-
-        forAllActivities((r) -> {
-            r.dumpDebug(proto, ACTIVITIES);
-        });
-        proto.write(STACK_ID, getRootTaskId());
-        if (mLastNonFullscreenBounds != null) {
-            mLastNonFullscreenBounds.dumpDebug(proto, LAST_NON_FULLSCREEN_BOUNDS);
-        }
-        if (realActivity != null) {
-            proto.write(REAL_ACTIVITY, realActivity.flattenToShortString());
-        }
-        if (origActivity != null) {
-            proto.write(ORIG_ACTIVITY, origActivity.flattenToShortString());
-        }
-        proto.write(ACTIVITY_TYPE, getActivityType());
-        proto.write(RESIZE_MODE, mResizeMode);
-        // TODO: Remove, no longer needed with windowingMode.
-        proto.write(FULLSCREEN, matchParentBounds());
-
-        if (!matchParentBounds()) {
-            final Rect bounds = getRequestedOverrideBounds();
-            bounds.dumpDebug(proto, com.android.server.am.TaskRecordProto.BOUNDS);
-        }
-        proto.write(MIN_WIDTH, mMinWidth);
-        proto.write(MIN_HEIGHT, mMinHeight);
-        proto.end(token);
-    }
-
     /** @see #getNumRunningActivities(TaskActivitiesReport) */
     static class TaskActivitiesReport implements Consumer<ActivityRecord> {
         int numRunning;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 7f84567..b8bafb9 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -5906,7 +5906,7 @@
      */
     void dumpDebugLocked(ProtoOutputStream proto, @WindowTraceLogLevel int logLevel) {
         mPolicy.dumpDebug(proto, POLICY);
-        mRoot.dumpDebugInner(proto, ROOT_WINDOW_CONTAINER, logLevel);
+        mRoot.dumpDebug(proto, ROOT_WINDOW_CONTAINER, logLevel);
         final DisplayContent topFocusedDisplayContent = mRoot.getTopFocusedDisplayContent();
         if (topFocusedDisplayContent.mCurrentFocus != null) {
             topFocusedDisplayContent.mCurrentFocus.writeIdentifierToProto(proto, FOCUSED_WINDOW);