summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI
diff options
context:
space:
mode:
authorWale Ogunwale <ogunwale@google.com>2018-05-16 16:42:29 -0700
committerTim Schumacher <timschumi@gmx.de>2019-02-02 15:47:14 +0100
commit8af807f8762701e2908789a50901426dbe67199b (patch)
tree6ee2ad99978736f0166afa9464e15ea01586309c /packages/SystemUI
parentf4cc356cfd45ff6c2e5ad12e70d7a872720bbe96 (diff)
downloadframeworks_base-8af807f8762701e2908789a50901426dbe67199b.tar.gz
frameworks_base-8af807f8762701e2908789a50901426dbe67199b.tar.bz2
frameworks_base-8af807f8762701e2908789a50901426dbe67199b.zip
RESTRICT AUTOMERGE: Hide overlay windows when requesting media projection permission.
1: Cherry-pick ag/4067454 - Setting PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS updateNonSystemOverlayWindowsVisibilityIfNeeded on relayoutWindow 2: Cherry-pick ag/3650369 - If PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS changed on relayoutWindow() then updateNonSystemOverlayWindowsVisibilityIfNeeded 3: Add permissions to SystemUI to allow it to hide non-system overlays Bug: 34170870 Test: manual (see bug for poc) Change-Id: I57cb0f390d9a78e721c5ddce49a377d385002753 (cherry picked from commit 40f7b5832291ec81b921d9d7598447653d926604)
Diffstat (limited to 'packages/SystemUI')
-rw-r--r--packages/SystemUI/AndroidManifest.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java7
2 files changed, 9 insertions, 1 deletions
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index d45b52b3d22..897c60c8a35 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -138,6 +138,9 @@
<!-- blur surface -->
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
+ <!-- permission necessary to hide non-system overlay windows from covering up the SystemUI -->
+ <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
+
<application
android:name=".SystemUIApplication"
android:persistent="true"
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java
index adc9b36f3d2..acb701281db 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java
@@ -16,6 +16,8 @@
package com.android.systemui.media;
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
@@ -38,6 +40,7 @@ import android.text.TextUtils;
import android.text.style.StyleSpan;
import android.util.Log;
import android.util.TypedValue;
+import android.view.Window;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.CompoundButton;
@@ -147,7 +150,9 @@ public class MediaProjectionPermissionActivity extends Activity
mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);
((CheckBox) mDialog.findViewById(R.id.remember)).setOnCheckedChangeListener(this);
- mDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
+ final Window w = mDialog.getWindow();
+ w.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
+ w.addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
mDialog.show();
}