Merge "Hide overlay windows when requesting media projection permission." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0d4d38e3f9
@@ -190,6 +190,9 @@
|
||||
<!-- to access instant apps -->
|
||||
<uses-permission android:name="android.permission.ACCESS_INSTANT_APPS" />
|
||||
|
||||
<!-- 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"
|
||||
|
||||
@@ -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;
|
||||
@@ -36,6 +38,7 @@ import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.StyleSpan;
|
||||
import android.util.Log;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
@@ -146,7 +149,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();
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ import static android.view.WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHA
|
||||
import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
|
||||
import static android.view.WindowManager.LayoutParams.LAST_SUB_WINDOW;
|
||||
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW;
|
||||
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
|
||||
@@ -1956,6 +1957,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// No move or resize, but the controller checks for title changes as well
|
||||
mAccessibilityController.onSomeWindowResizedOrMovedLocked();
|
||||
}
|
||||
|
||||
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
|
||||
@@ -7553,7 +7559,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
|
||||
void updateNonSystemOverlayWindowsVisibilityIfNeeded(WindowState win, boolean surfaceShown) {
|
||||
if (!win.hideNonSystemOverlayWindowsWhenVisible()) {
|
||||
if (!win.hideNonSystemOverlayWindowsWhenVisible()
|
||||
&& !mHidingNonSystemOverlayWindows.contains(win)) {
|
||||
return;
|
||||
}
|
||||
final boolean systemAlertWindowsHidden = !mHidingNonSystemOverlayWindows.isEmpty();
|
||||
|
||||
Reference in New Issue
Block a user