diff options
11 files changed, 180 insertions, 363 deletions
diff --git a/core/proto/android/server/activitymanagerservice.proto b/core/proto/android/server/activitymanagerservice.proto index 1426932ec04a..0a2fd7093a49 100644 --- a/core/proto/android/server/activitymanagerservice.proto +++ b/core/proto/android/server/activitymanagerservice.proto @@ -55,87 +55,8 @@ message ActivityManagerServiceProto { 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 @@ message ActivityManagerServiceDumpProcessesProto { 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 7c8f62c14b1e..b0b9ce6f9968 100644 --- a/core/proto/android/server/windowmanagerservice.proto +++ b/core/proto/android/server/windowmanagerservice.proto @@ -54,8 +54,14 @@ message RootWindowContainerProto { 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 @@ message KeyguardServiceDelegateProto { 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 @@ message DisplayContentProto { 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 @@ message DisplayContentProto { 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 @@ message DisplayAreaChildProto { repeated string unknown = 3; } - /* represents DisplayFrames */ message DisplayFramesProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; @@ -214,39 +240,41 @@ message PinnedStackControllerProto { 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 @@ message ActivityRecordProto { 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 2ef0015f2b7d..0502d0bfa933 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 @@ class ActivityMetricsLogger { 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 7af097b3f260..df6dfc4d8ffe 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -7506,17 +7506,19 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A * 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); @@ -7539,24 +7541,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A 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) { @@ -7566,36 +7556,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } 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 0d72d84d1649..d5961a881c36 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_OPEN_BEHIND; 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.NO_PIP_MODE_CHANGE 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 @@ class ActivityStack extends Task implements BoundsAnimationTarget { @Override public void dumpDebug(ProtoOutputStream proto, long fieldId, @WindowTraceLogLevel int logLevel) { + if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) { + return; + } + final long token = proto.start(fieldId); - dumpDebugInnerStackOnly(proto, STACK, logLevel); - proto.write(com.android.server.am.ActivityStackProto.ID, getRootTaskId()); + super.dumpDebug(proto, WINDOW_CONTAINER, logLevel); + + 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); + } + } - 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); + 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); - // TODO: Remove, no longer needed with windowingMode. - proto.write(FULLSCREEN, matchParentBounds()); - proto.end(token); - } + proto.write(FILLS_PARENT, matchParentBounds()); - // 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; + 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); } - 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(FILLS_PARENT, matchParentBounds()); - getRawBounds().dumpDebug(proto, StackProto.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 d6e707795d50..5a5976bf58ad 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.ANR_TRACE_DIR; 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.SystemServiceManager; 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 class ActivityTaskManagerService extends IActivityTaskManager.Stub { 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 81af0fe24ba7..16ac9fb41f30 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_ACTIVITY_OPEN; 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.OVERLAY_WINDOWS; 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 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo 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 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo 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 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo 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 ad65e101fd15..00947d766e89 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 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 a13399bcb69c..2fdcbc9083f6 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.LayoutParams.TYPE_KEYGUARD_DIALOG; 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_DEBUG_ORIENTATION; 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 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } } - 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 @@ class RootWindowContainer extends WindowContainer<DisplayContent> 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 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } } - 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 @@ class RootWindowContainer extends WindowContainer<DisplayContent> 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 28dc2a42da2a..87c91ef6b96c 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 android.view.SurfaceControl.METADATA_TASK_ID; 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.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS 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 @@ class Task extends WindowContainer<WindowContainer> { } } - // 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 @@ class Task extends WindowContainer<WindowContainer> { 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 563bb26a280f..98c584fc743a 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -5912,7 +5912,7 @@ public class WindowManagerService extends IWindowManager.Stub */ 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); |