[automerger] RESTRICT AUTOMERGE: Hide overlay windows when requesting media projection permission. am: 295af36009 am: 7ee280f8b5 am: 3290f3b22e
Change-Id: If7b764f16eaf2bdc7f5327351e74458fad48d250
This commit is contained in:
@@ -165,6 +165,9 @@
|
|||||||
<!-- shortcut manager -->
|
<!-- shortcut manager -->
|
||||||
<uses-permission android:name="android.permission.RESET_SHORTCUT_MANAGER_THROTTLING" />
|
<uses-permission android:name="android.permission.RESET_SHORTCUT_MANAGER_THROTTLING" />
|
||||||
|
|
||||||
|
<!-- 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
|
<application
|
||||||
android:name=".SystemUIApplication"
|
android:name=".SystemUIApplication"
|
||||||
android:persistent="true"
|
android:persistent="true"
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.systemui.media;
|
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.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
@@ -36,6 +38,7 @@ import android.text.TextPaint;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.text.style.StyleSpan;
|
import android.text.style.StyleSpan;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
import android.widget.CompoundButton;
|
import android.widget.CompoundButton;
|
||||||
@@ -146,7 +149,9 @@ public class MediaProjectionPermissionActivity extends Activity
|
|||||||
mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);
|
mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);
|
||||||
|
|
||||||
((CheckBox) mDialog.findViewById(R.id.remember)).setOnCheckedChangeListener(this);
|
((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();
|
mDialog.show();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.server.wm;
|
package com.android.server.wm;
|
||||||
|
|
||||||
|
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.animation.ValueAnimator;
|
import android.animation.ValueAnimator;
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
@@ -2900,6 +2901,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
| WindowManager.LayoutParams.SYSTEM_UI_VISIBILITY_CHANGED)) != 0) {
|
| WindowManager.LayoutParams.SYSTEM_UI_VISIBILITY_CHANGED)) != 0) {
|
||||||
win.mLayoutNeeded = true;
|
win.mLayoutNeeded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((flagChanges & PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS) != 0) {
|
||||||
|
updateNonSystemOverlayWindowsVisibilityIfNeeded(
|
||||||
|
win, win.mWinAnimator.getShown());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DEBUG_LAYOUT) Slog.v(TAG_WM, "Relayout " + win + ": viewVisibility=" + viewVisibility
|
if (DEBUG_LAYOUT) Slog.v(TAG_WM, "Relayout " + win + ": viewVisibility=" + viewVisibility
|
||||||
@@ -11780,7 +11786,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
void updateNonSystemOverlayWindowsVisibilityIfNeeded(WindowState win, boolean surfaceShown) {
|
void updateNonSystemOverlayWindowsVisibilityIfNeeded(WindowState win, boolean surfaceShown) {
|
||||||
if (!win.hideNonSystemOverlayWindowsWhenVisible()) {
|
if (!win.hideNonSystemOverlayWindowsWhenVisible()
|
||||||
|
&& !mHidingNonSystemOverlayWindows.contains(win)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final boolean systemAlertWindowsHidden = !mHidingNonSystemOverlayWindows.isEmpty();
|
final boolean systemAlertWindowsHidden = !mHidingNonSystemOverlayWindows.isEmpty();
|
||||||
|
|||||||
Reference in New Issue
Block a user