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

Commit 1d0fa073 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

Add WindowState and LayoutParams proto

Bug: 64831661
Test: verify data using winscope
Change-Id: I91c9abcdbc45b53ed5f354e173e6fd03396e2744
parent abf226b7
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.view;

import static android.view.DisplayCutoutProto.BOUNDS;
import static android.view.DisplayCutoutProto.INSETS;
import static android.view.Surface.ROTATION_0;
import static android.view.Surface.ROTATION_180;
import static android.view.Surface.ROTATION_270;
@@ -28,6 +30,7 @@ import android.graphics.RectF;
import android.graphics.Region;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.proto.ProtoOutputStream;

import com.android.internal.annotations.VisibleForTesting;

@@ -154,6 +157,16 @@ public final class DisplayCutout {
                + "}";
    }

    /**
     * @hide
     */
    public void writeToProto(ProtoOutputStream proto, long fieldId) {
        final long token = proto.start(fieldId);
        mSafeInsets.writeToProto(proto, INSETS);
        mBounds.getBounds().writeToProto(proto, BOUNDS);
        proto.end(token);
    }

    /**
     * Insets the reference frame of the cutout in the given directions.
     *
+53 −1
Original line number Diff line number Diff line
@@ -17,6 +17,32 @@
package android.view;

import static android.content.pm.ActivityInfo.COLOR_MODE_DEFAULT;
import static android.view.WindowLayoutParamsProto.ALPHA;
import static android.view.WindowLayoutParamsProto.BUTTON_BRIGHTNESS;
import static android.view.WindowLayoutParamsProto.COLOR_MODE;
import static android.view.WindowLayoutParamsProto.FLAGS;
import static android.view.WindowLayoutParamsProto.FLAGS_EXTRA;
import static android.view.WindowLayoutParamsProto.FORMAT;
import static android.view.WindowLayoutParamsProto.GRAVITY;
import static android.view.WindowLayoutParamsProto.HAS_SYSTEM_UI_LISTENERS;
import static android.view.WindowLayoutParamsProto.HEIGHT;
import static android.view.WindowLayoutParamsProto.HORIZONTAL_MARGIN;
import static android.view.WindowLayoutParamsProto.INPUT_FEATURE_FLAGS;
import static android.view.WindowLayoutParamsProto.NEEDS_MENU_KEY;
import static android.view.WindowLayoutParamsProto.PREFERRED_REFRESH_RATE;
import static android.view.WindowLayoutParamsProto.PRIVATE_FLAGS;
import static android.view.WindowLayoutParamsProto.ROTATION_ANIMATION;
import static android.view.WindowLayoutParamsProto.SCREEN_BRIGHTNESS;
import static android.view.WindowLayoutParamsProto.SOFT_INPUT_MODE;
import static android.view.WindowLayoutParamsProto.SUBTREE_SYSTEM_UI_VISIBILITY_FLAGS;
import static android.view.WindowLayoutParamsProto.SYSTEM_UI_VISIBILITY_FLAGS;
import static android.view.WindowLayoutParamsProto.TYPE;
import static android.view.WindowLayoutParamsProto.USER_ACTIVITY_TIMEOUT;
import static android.view.WindowLayoutParamsProto.VERTICAL_MARGIN;
import static android.view.WindowLayoutParamsProto.WIDTH;
import static android.view.WindowLayoutParamsProto.WINDOW_ANIMATIONS;
import static android.view.WindowLayoutParamsProto.X;
import static android.view.WindowLayoutParamsProto.Y;

import android.Manifest.permission;
import android.annotation.IntDef;
@@ -2722,7 +2748,33 @@ public interface WindowManager extends ViewManager {
         */
        public void writeToProto(ProtoOutputStream proto, long fieldId) {
            final long token = proto.start(fieldId);
            proto.write(WindowLayoutParamsProto.TYPE, type);
            proto.write(TYPE, type);
            proto.write(X, x);
            proto.write(Y, y);
            proto.write(WIDTH, width);
            proto.write(HEIGHT, height);
            proto.write(HORIZONTAL_MARGIN, horizontalMargin);
            proto.write(VERTICAL_MARGIN, verticalMargin);
            proto.write(GRAVITY, gravity);
            proto.write(SOFT_INPUT_MODE, softInputMode);
            proto.write(FORMAT, format);
            proto.write(WINDOW_ANIMATIONS, windowAnimations);
            proto.write(ALPHA, alpha);
            proto.write(SCREEN_BRIGHTNESS, screenBrightness);
            proto.write(BUTTON_BRIGHTNESS, buttonBrightness);
            proto.write(ROTATION_ANIMATION, rotationAnimation);
            proto.write(PREFERRED_REFRESH_RATE, preferredRefreshRate);
            proto.write(WindowLayoutParamsProto.PREFERRED_DISPLAY_MODE_ID, preferredDisplayModeId);
            proto.write(HAS_SYSTEM_UI_LISTENERS, hasSystemUiListeners);
            proto.write(INPUT_FEATURE_FLAGS, inputFeatures);
            proto.write(USER_ACTIVITY_TIMEOUT, userActivityTimeout);
            proto.write(NEEDS_MENU_KEY, needsMenuKey);
            proto.write(COLOR_MODE, mColorMode);
            proto.write(FLAGS, flags);
            proto.write(FLAGS_EXTRA, flags2);
            proto.write(PRIVATE_FLAGS, privateFlags);
            proto.write(SYSTEM_UI_VISIBILITY_FLAGS, systemUiVisibility);
            proto.write(SUBTREE_SYSTEM_UI_VISIBILITY_FLAGS, subtreeSystemUiVisibility);
            proto.end(token);
        }

+34 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";
package android.graphics;
option java_multiple_files = true;

message PixelFormatProto {
  enum Format {
      UNKNOWN      = 0;
      TRANSLUCENT  = -3;
      TRANSPARENT  = -2;
      OPAQUE       = -1;
      RGBA_8888    = 1;
      RGBX_8888    = 2;
      RGB_888      = 3;
      RGB_565      = 4;
      RGBA_F16     = 0x16;
      RGBA_1010102 = 0x2B;
  }
}
+31 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ syntax = "proto2";

import "frameworks/base/core/proto/android/content/configuration.proto";
import "frameworks/base/core/proto/android/graphics/rect.proto";
import "frameworks/base/core/proto/android/view/displaycutout.proto";
import "frameworks/base/core/proto/android/view/displayinfo.proto";
import "frameworks/base/core/proto/android/view/windowlayoutparams.proto";

@@ -172,6 +173,27 @@ message WindowStateProto {
  repeated WindowStateProto child_windows = 15;
  optional .android.graphics.RectProto surface_position = 16;
  optional .android.graphics.RectProto shown_position = 17;
  optional int32 requested_width = 18;
  optional int32 requested_height = 19;
  optional int32 view_visibility = 20;
  optional int32 system_ui_visibility = 21;
  optional bool has_surface = 22;
  optional bool is_ready_for_display = 23;
  optional .android.graphics.RectProto display_frame = 24;
  optional .android.graphics.RectProto overscan_frame = 25;
  optional .android.graphics.RectProto visible_frame = 26;
  optional .android.graphics.RectProto decor_frame = 27;
  optional .android.graphics.RectProto outset_frame = 28;
  optional .android.graphics.RectProto overscan_insets = 29;
  optional .android.graphics.RectProto visible_insets = 30;
  optional .android.graphics.RectProto stable_insets = 31;
  optional .android.graphics.RectProto outsets = 32;
  optional .android.view.DisplayCutoutProto cutout = 33;
  optional bool remove_on_exit = 34;
  optional bool destroying = 35;
  optional bool removed = 36;
  optional bool is_on_screen = 37;
  optional bool is_visible = 38;
}

message IdentifierProto {
@@ -184,6 +206,15 @@ message IdentifierProto {
message WindowStateAnimatorProto {
  optional .android.graphics.RectProto last_clip_rect = 1;
  optional WindowSurfaceControllerProto surface = 2;
  enum DrawState {
    NO_SURFACE = 0;
    DRAW_PENDING = 1;
    COMMIT_DRAW_PENDING = 2;
    READY_TO_SHOW = 3;
    HAS_DRAWN = 4;
  }
  optional DrawState draw_state = 3;
  optional .android.graphics.RectProto system_decor_rect = 4;
}

/* represents WindowSurfaceController */
+12 −0
Original line number Diff line number Diff line
@@ -38,4 +38,16 @@ message DisplayProto {
        // The display is on and optimized for VR mode.
        DISPLAY_STATE_VR = 5;
    }
    enum ColorMode {
        COLOR_MODE_INVALID = -1;
        COLOR_MODE_BT601_625 = 1;
        COLOR_MODE_BT601_625_UNADJUSTED = 2;
        COLOR_MODE_BT601_525 = 3;
        COLOR_MODE_BT601_525_UNADJUSTED = 4;
        COLOR_MODE_BT709 = 5;
        COLOR_MODE_DCI_P3 = 6;
        COLOR_MODE_SRGB = 7;
        COLOR_MODE_ADOBE_RGB = 8;
        COLOR_MODE_DISPLAY_P3 = 9;
    }
}
Loading