diff options
| author | Linus Tufvesson <lus@google.com> | 2021-01-21 09:42:02 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-01-21 09:42:02 +0000 |
| commit | 076c0697eeea3a983eac9dafe865367d63549aaa (patch) | |
| tree | 7615b59beca33121b32a2331cfbf95cef6bd98d2 /core/java/android | |
| parent | 21985b42acfc74737d8eda1774b80f1655ceeb5c (diff) | |
| parent | 1090a9bfc3ca6cdb3cdf716c1994eb4c62cca8e4 (diff) | |
Merge "Update system application overlay api"
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/view/WindowManager.java | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index c2d990a40fe4..8b8645cf6c4f 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -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 @@ -3375,6 +3373,37 @@ public interface WindowManager extends ViewManager { } /** + * 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. */ public @InsetsType int getFitInsetsTypes() { |
