Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae062e92 authored by Vishnu Nair's avatar Vishnu Nair Committed by Android (Google) Code Review
Browse files

Merge "Support DisplayAreas in protos" into rvc-dev

parents 153de403 dddc9f50
Loading
Loading
Loading
Loading
+35 −8
Original line number Diff line number Diff line
@@ -53,10 +53,10 @@ message RootWindowContainerProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    optional WindowContainerProto window_container = 1;
    repeated DisplayContentProto displays = 2;
    repeated DisplayContentProto displays = 2 [deprecated=true];
    reserved 3; // IdentifierProto windows
    /* window references in top down z order */
    repeated WindowStateProto windows = 4;
    repeated WindowStateProto windows = 4 [deprecated=true];
    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.
@@ -192,7 +192,8 @@ message DisplayContentProto {
    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;
    repeated TaskProto tasks = 25 [deprecated=true];
    optional bool display_ready = 26;
}

/* represents DisplayArea object */
@@ -201,7 +202,7 @@ message DisplayAreaProto {

    optional WindowContainerProto window_container = 1;
    optional string name = 2 [ (.android.privacy).dest = DEST_EXPLICIT ];
    repeated DisplayAreaChildProto children = 3;
    repeated DisplayAreaChildProto children = 3 [deprecated=true];
}

/* represents a generic child of a DisplayArea */
@@ -254,8 +255,8 @@ message TaskProto {
    optional int32 surface_width = 8;
    optional int32 surface_height = 9;

    repeated TaskProto tasks = 10;
    repeated ActivityRecordProto activities = 11;
    repeated TaskProto tasks = 10 [deprecated=true];
    repeated ActivityRecordProto activities = 11 [deprecated=true];

    optional .com.android.server.wm.IdentifierProto resumed_activity = 12;
    optional string real_activity = 13;
@@ -321,7 +322,7 @@ message WindowTokenProto {

    optional WindowContainerProto window_container = 1;
    optional int32 hash_code = 2;
    repeated WindowStateProto windows = 3;
    repeated WindowStateProto windows = 3 [deprecated=true];
    optional bool waiting_to_show = 5;
    optional bool paused = 6;
}
@@ -346,7 +347,7 @@ message WindowStateProto {
    optional .android.graphics.RectProto surface_insets = 12;
    optional WindowStateAnimatorProto animator = 13;
    optional bool animating_exit = 14;
    repeated WindowStateProto child_windows = 15;
    repeated WindowStateProto child_windows = 15 [deprecated=true];
    optional .android.graphics.RectProto surface_position = 16;
    optional int32 requested_width = 18;
    optional int32 requested_height = 19;
@@ -426,6 +427,32 @@ message WindowContainerProto {
    optional int32 orientation = 2;
    optional bool visible = 3;
    optional SurfaceAnimatorProto surface_animator = 4;
    repeated WindowContainerChildProto children = 5;
}

/* represents a generic child of a WindowContainer */
message WindowContainerChildProto {
    option (.android.msg_privacy).dest = DEST_AUTOMATIC;

    /* A window container can have multiple children of different types stored as
     * a WindowContainerChildProto but each instance of WindowContainerChildProto
     * can only contain a single type.
     */
    /* We do not know the derived typ and the class is dumped
     * as a WindowContainer */
    optional WindowContainerProto window_container = 2;
    /* represents a DisplayContent child */
    optional DisplayContentProto display_content = 3;
    /* represents a DisplayArea child */
    optional DisplayAreaProto display_area = 4;
    /* represents a Task child */
    optional TaskProto task = 5;
    /* represents an ActivityRecord child */
    optional ActivityRecordProto activity = 6;
    /* represents a WindowToken child */
    optional WindowTokenProto window_token = 7;
    /* represents a WindowState child */
    optional WindowStateProto window = 8;
}

/* represents ConfigurationContainer */
+6 −0
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ import static com.android.server.wm.TaskPersister.IMAGE_EXTENSION;
import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
import static com.android.server.wm.WindowContainerChildProto.ACTIVITY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STARTING_WINDOW_VERBOSE;
@@ -7449,6 +7450,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        }
    }

    @Override
    long getProtoFieldId() {
        return ACTIVITY;
    }

    @Override
    public void dumpDebug(ProtoOutputStream proto, long fieldId,
            @WindowTraceLogLevel int logLevel) {
+0 −13
Original line number Diff line number Diff line
@@ -90,7 +90,6 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS
import static com.android.server.wm.ActivityTaskManagerService.H.FIRST_ACTIVITY_STACK_MSG;
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_FREE_RESIZE;
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_WINDOWING_MODE_RESIZE;
import static com.android.server.wm.TaskProto.ACTIVITIES;
import static com.android.server.wm.TaskProto.ACTIVITY_TYPE;
import static com.android.server.wm.TaskProto.ANIMATING_BOUNDS;
import static com.android.server.wm.TaskProto.BOUNDS;
@@ -109,7 +108,6 @@ import static com.android.server.wm.TaskProto.RESUMED_ACTIVITY;
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;
@@ -3918,17 +3916,6 @@ class ActivityStack extends Task {
        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);
        }
+6 −19
Original line number Diff line number Diff line
@@ -23,13 +23,10 @@ import static android.view.WindowManager.TRANSIT_KEYGUARD_UNOCCLUDE;
import static android.view.WindowManagerPolicyConstants.APPLICATION_LAYER;

import static com.android.internal.util.Preconditions.checkState;
import static com.android.server.wm.DisplayAreaChildProto.DISPLAY_AREA;
import static com.android.server.wm.DisplayAreaChildProto.UNKNOWN;
import static com.android.server.wm.DisplayAreaChildProto.WINDOW;
import static com.android.server.wm.DisplayAreaProto.CHILDREN;
import static com.android.server.wm.DisplayAreaProto.NAME;
import static com.android.server.wm.DisplayAreaProto.WINDOW_CONTAINER;
import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
import static com.android.server.wm.WindowContainerChildProto.DISPLAY_AREA;

import android.graphics.Rect;
import android.util.proto.ProtoOutputStream;
@@ -111,24 +108,14 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> {
        final long token = proto.start(fieldId);
        super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
        proto.write(NAME, mName);
        for (int i = 0; i < getChildCount(); i++) {
            final long childToken = proto.start(CHILDREN);
            final T child = getChildAt(i);
            if (child instanceof ActivityStack) {
                // TODO(display-area): Dump stacks & tasks here, instead of in DisplayContent's
                //  dumpDebug. For now, skip them here to avoid dumping them as UNKNOWN.
            } else if (child instanceof WindowToken) {
                ((WindowToken) child).dumpDebug(proto, WINDOW, logLevel);
            } else if (child instanceof DisplayArea) {
                child.dumpDebug(proto, DISPLAY_AREA, logLevel);
            } else {
                proto.write(UNKNOWN, child.getClass().getSimpleName());
            }
            proto.end(childToken);
        }
        proto.end(token);
    }

    @Override
    long getProtoFieldId() {
        return DISPLAY_AREA;
    }

    /**
     * DisplayArea that contains WindowTokens, and orders them according to their type.
     */
+8 −5
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ import static com.android.server.wm.DisplayContentProto.APP_TRANSITION;
import static com.android.server.wm.DisplayContentProto.CLOSING_APPS;
import static com.android.server.wm.DisplayContentProto.DISPLAY_FRAMES;
import static com.android.server.wm.DisplayContentProto.DISPLAY_INFO;
import static com.android.server.wm.DisplayContentProto.DISPLAY_READY;
import static com.android.server.wm.DisplayContentProto.DPI;
import static com.android.server.wm.DisplayContentProto.FOCUSED_APP;
import static com.android.server.wm.DisplayContentProto.FOCUSED_ROOT_TASK_ID;
@@ -105,7 +106,6 @@ 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.SINGLE_TASK_INSTANCE;
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;
@@ -117,6 +117,7 @@ import static com.android.server.wm.ProtoLogGroup.WM_SHOW_TRANSACTIONS;
import static com.android.server.wm.RootWindowContainer.TAG_STATES;
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
import static com.android.server.wm.WindowContainerChildProto.DISPLAY_CONTENT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
@@ -2837,10 +2838,6 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo

        proto.write(ID, mDisplayId);
        mRootDisplayArea.dumpDebug(proto, ROOT_DISPLAY_AREA, logLevel);
        for (int i = mTaskContainers.getChildCount() - 1; i >= 0; --i) {
            final ActivityStack stack = mTaskContainers.getChildAt(i);
            stack.dumpDebug(proto, TASKS, logLevel);
        }
        for (int i = mOverlayContainers.getChildCount() - 1; i >= 0; --i) {
            final WindowToken windowToken = mOverlayContainers.getChildAt(i);
            windowToken.dumpDebug(proto, OVERLAY_WINDOWS, logLevel);
@@ -2875,10 +2872,16 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        } else {
            proto.write(FOCUSED_ROOT_TASK_ID, INVALID_TASK_ID);
        }
        proto.write(DISPLAY_READY, isReady());

        proto.end(token);
    }

    @Override
    long getProtoFieldId() {
        return DISPLAY_CONTENT;
    }

    @Override
    public void dump(PrintWriter pw, String prefix, boolean dumpAll) {
        super.dump(pw, prefix, dumpAll);
Loading