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

Commit 076c0697 authored by Linus Tufvesson's avatar Linus Tufvesson Committed by Android (Google) Code Review
Browse files

Merge "Update system application overlay api"

parents 21985b42 1090a9bf
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -13384,15 +13384,16 @@ package android.view {
  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
    method public final long getUserActivityTimeout();
    method public boolean isSystemApplicationOverlay();
    method @RequiresPermission(android.Manifest.permission.SYSTEM_APPLICATION_OVERLAY) public void setSystemApplicationOverlay(boolean);
    method public final void setUserActivityTimeout(long);
    field @RequiresPermission(android.Manifest.permission.USE_BACKGROUND_BLUR) public static final int FLAG_BLUR_BEHIND = 4; // 0x4
    field @RequiresPermission(android.Manifest.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS) public static final int SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 524288; // 0x80000
    field @RequiresPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW) public static final int SYSTEM_FLAG_SHOW_FOR_ALL_USERS = 16; // 0x10
    field @RequiresPermission(android.Manifest.permission.SYSTEM_APPLICATION_OVERLAY) public static final int SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY = 8; // 0x8
    field @RequiresPermission(android.Manifest.permission.USE_BACKGROUND_BLUR) public int backgroundBlurRadius;
  }
  @IntDef(flag=true, prefix={"SYSTEM_FLAG_"}, value={android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS, android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowManager.LayoutParams.SystemFlags {
  @IntDef(flag=true, prefix={"SYSTEM_FLAG_"}, value={android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowManager.LayoutParams.SystemFlags {
  }
}
+36 −7
Original line number Diff line number Diff line
@@ -2151,9 +2151,8 @@ public interface WindowManager extends ViewManager {
         * visible window.
         * @hide
         */
        @SystemApi
        @RequiresPermission(permission.SYSTEM_APPLICATION_OVERLAY)
        public static final int SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY = 0x00000008;
        public static final int PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY = 0x00000008;

        /** In a multiuser system if this flag is set and the owner is a system process then this
         * window will appear on all user screens. This overrides the default behavior of window
@@ -2352,7 +2351,6 @@ public interface WindowManager extends ViewManager {
        @IntDef(flag = true, prefix = { "SYSTEM_FLAG_" }, value = {
                SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS,
                SYSTEM_FLAG_SHOW_FOR_ALL_USERS,
                SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY,
        })
        public @interface SystemFlags {}

@@ -2386,7 +2384,7 @@ public interface WindowManager extends ViewManager {
                PRIVATE_FLAG_TRUSTED_OVERLAY,
                PRIVATE_FLAG_INSET_PARENT_FRAME_BY_IME,
                PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP,
                SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY,
                PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY,
        })
        public @interface PrivateFlags {}

@@ -2501,9 +2499,9 @@ public interface WindowManager extends ViewManager {
                        equals = PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP,
                        name = "INTERCEPT_GLOBAL_DRAG_AND_DROP"),
                @ViewDebug.FlagToString(
                        mask = SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY,
                        equals = SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY,
                        name = "SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY")
                        mask = PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY,
                        equals = PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY,
                        name = "PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY")
        })
        @PrivateFlags
        @TestApi
@@ -3374,6 +3372,37 @@ public interface WindowManager extends ViewManager {
            privateFlags |= PRIVATE_FLAG_TRUSTED_OVERLAY;
        }

        /**
         * When set on {@link LayoutParams#TYPE_APPLICATION_OVERLAY} windows they stay visible,
         * even if {@link LayoutParams#SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS} is set for
         * another visible window.
         * @hide
         */
        @SystemApi
        @RequiresPermission(permission.SYSTEM_APPLICATION_OVERLAY)
        public void setSystemApplicationOverlay(boolean isSystemApplicationOverlay) {
            if (isSystemApplicationOverlay) {
                privateFlags |= PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY;
            } else {
                privateFlags &= ~PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY;
            }
        }

        /**
         * Returns if this window is marked as being a system application overlay.
         * @see LayoutParams#setSystemApplicationOverlay(boolean)
         *
         * <p>Note: the owner of the window must hold
         * {@link android.Manifest.permission.SYSTEM_APPLICATION_OVERLAY} for this to have any
         * effect.
         * @hide
         */
        @SystemApi
        public boolean isSystemApplicationOverlay() {
            return (privateFlags & PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY)
                    == PRIVATE_FLAG_SYSTEM_APPLICATION_OVERLAY;
        }

        /**
         * @return the insets types that this window is avoiding overlapping.
         */
+2 −3
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
import static android.view.WindowManager.LayoutParams.SOFT_INPUT_MASK_ADJUST;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA;
@@ -3048,8 +3047,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
            return;
        }

        if (mAttrs.type == TYPE_APPLICATION_OVERLAY && mSession.mCanCreateSystemApplicationOverlay
                && (mAttrs.privateFlags & SYSTEM_FLAG_SYSTEM_APPLICATION_OVERLAY) != 0) {
        if (mAttrs.type == TYPE_APPLICATION_OVERLAY && mAttrs.isSystemApplicationOverlay()
                && mSession.mCanCreateSystemApplicationOverlay) {
            return;
        }