From a37574256cc0706e23d2f4ef33b2be3fa64990a0 Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Mon, 20 May 2019 13:11:37 +0900 Subject: [PATCH] [RESTRICT AUTOMERGE] Protect VPN dialogs against overlay. Bug: 130568701 Test: manual. After this, can't display on top of it Change-Id: Ib032f800edb0416cc15f01a34954340d0d0ffa78 (cherry picked from commit 4e80dc2861614d25a1f957f50040a8cf04812d11) (cherry picked from commit 27d47340496580d66f36a734a115e47eaf550972) --- packages/VpnDialogs/AndroidManifest.xml | 1 + .../android/vpndialogs/AlwaysOnDisconnectedDialog.java | 10 +++++++--- .../src/com/android/vpndialogs/ConfirmDialog.java | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/VpnDialogs/AndroidManifest.xml b/packages/VpnDialogs/AndroidManifest.xml index 8172e717850bd..05ce96ca7cb30 100644 --- a/packages/VpnDialogs/AndroidManifest.xml +++ b/packages/VpnDialogs/AndroidManifest.xml @@ -21,6 +21,7 @@ + diff --git a/packages/VpnDialogs/src/com/android/vpndialogs/AlwaysOnDisconnectedDialog.java b/packages/VpnDialogs/src/com/android/vpndialogs/AlwaysOnDisconnectedDialog.java index 846fcf867e328..ba4baf3419912 100644 --- a/packages/VpnDialogs/src/com/android/vpndialogs/AlwaysOnDisconnectedDialog.java +++ b/packages/VpnDialogs/src/com/android/vpndialogs/AlwaysOnDisconnectedDialog.java @@ -16,6 +16,10 @@ package com.android.vpndialogs; +import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; +import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; + import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -31,7 +35,6 @@ import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.util.Log; import android.view.View; -import android.view.WindowManager; import android.widget.TextView; import com.android.internal.app.AlertActivity; @@ -74,8 +77,9 @@ public class AlwaysOnDisconnectedDialog extends AlertActivity setupAlert(); getWindow().setCloseOnTouchOutside(false); - getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); + getWindow().setType(TYPE_SYSTEM_ALERT); + getWindow().addFlags(FLAG_ALT_FOCUSABLE_IM); + getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); } @Override diff --git a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java index 72ce9c4efdc06..09339743db5c5 100644 --- a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java +++ b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java @@ -16,6 +16,8 @@ package com.android.vpndialogs; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; @@ -78,6 +80,7 @@ public class ConfirmDialog extends AlertActivity setupAlert(); getWindow().setCloseOnTouchOutside(false); + getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); Button button = mAlert.getButton(DialogInterface.BUTTON_POSITIVE); button.setFilterTouchesWhenObscured(true); }