Merge "Snap for 4444158 from bafd066662b743895483c9e87cb064113f591e24 to oreo-cts-release" into oreo-cts-release
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c596152..25216db 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -82,6 +82,7 @@
     <uses-permission android:name="android.permission.MANAGE_NOTIFICATIONS"/>
     <uses-permission android:name="android.permission.DELETE_PACKAGES"/>
     <uses-permission android:name="android.permission.MANAGE_APP_OPS_RESTRICTIONS"/>
+    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
 
     <application android:label="@string/settings_label"
             android:icon="@drawable/ic_launcher_settings"
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 8a77fea..2068909 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1297,22 +1297,6 @@
         return info.enabled ? R.string.installed : R.string.disabled;
     }
 
-    /**
-     * Control if other apps can display overlays. By default this is allowed. Be sure to
-     * re-enable overlays, as the effect is system-wide.
-     */
-    public static void setOverlayAllowed(Context context, IBinder token, boolean allowed) {
-        AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
-        if (appOpsManager != null) {
-            appOpsManager.setUserRestriction(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
-                    !allowed, token);
-            appOpsManager.setUserRestriction(AppOpsManager.OP_TOAST_WINDOW,
-                    !allowed, token);
-        }
-    }
-
-
-
     private static boolean isVolumeValid(VolumeInfo volume) {
         return (volume != null) && (volume.getType() == VolumeInfo.TYPE_PRIVATE)
                 && volume.isMountedReadable();
diff --git a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
index e0d2c69..4ad2ed5 100644
--- a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
+++ b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java
@@ -27,6 +27,8 @@
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -37,6 +39,8 @@
 import java.util.List;
 import java.util.Locale;
 
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
 /**
  * Utility class for creating the dialog that asks users for explicit permission to grant
  * all of the requested capabilities to an accessibility service before the service is enabled
@@ -65,6 +69,10 @@
             return false;
         };
 
+        Window window = ad.getWindow();
+        WindowManager.LayoutParams params = window.getAttributes();
+        params.privateFlags |= PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+        window.setAttributes(params);
         ad.create();
         ad.getButton(AlertDialog.BUTTON_POSITIVE).setOnTouchListener(filterTouchListener);
         ad.setCanceledOnTouchOutside(true);
diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
index 38e6b0f..07f4c37 100644
--- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
+++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
@@ -17,8 +17,6 @@
 
 import static android.content.DialogInterface.BUTTON_POSITIVE;
 
-import static com.android.settings.Utils.setOverlayAllowed;
-
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.app.Activity;
 import android.app.Dialog;
@@ -148,22 +146,6 @@
         }
 
         @Override
-        public void onResume() {
-            super.onResume();
-            if (mToken != null) {
-                setOverlayAllowed(getActivity(), mToken, false);
-            }
-        }
-
-        @Override
-        public void onPause() {
-            super.onPause();
-            if (mToken != null) {
-                setOverlayAllowed(getActivity(), mToken, true);
-            }
-        }
-
-        @Override
         public void onClick(DialogInterface dialog, int which) {
             final Fragment fragment = getTargetFragment();
             if ((which == BUTTON_POSITIVE) && (fragment instanceof DefaultAppPickerFragment)) {
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index da4bdcf..3b2e2f7 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -16,8 +16,6 @@
 
 package com.android.settings.accessibility;
 
-import static com.android.settings.Utils.setOverlayAllowed;
-
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -73,8 +71,6 @@
 
     private int mShownDialogId;
 
-    private final IBinder mToken = new Binder();
-
     @Override
     public int getMetricsCategory() {
         return MetricsEvent.ACCESSIBILITY_SERVICE;
@@ -105,18 +101,12 @@
     public void onResume() {
         mSettingsContentObserver.register(getContentResolver());
         updateSwitchBarToggleSwitch();
-        if (mToken != null) {
-            setOverlayAllowed(getActivity(), mToken, false);
-        }
         super.onResume();
     }
 
     @Override
     public void onPause() {
         mSettingsContentObserver.unregister(getContentResolver());
-        if (mToken != null) {
-            setOverlayAllowed(getActivity(), mToken, true);
-        }
         super.onPause();
     }