Accessibility: filter touches to Enable button

To prevent tap-jacking, filter touches to the enable button if there is
another window obscuring the screen.

Bug: 11242907
Change-Id: I0228cd480faf8e7ebf70394d9bb60fa2e4138fb4
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index 0c568f0..f097fd6 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -154,41 +154,44 @@
     public Dialog onCreateDialog(int dialogId) {
         switch (dialogId) {
             case DIALOG_ID_ENABLE_WARNING: {
-            mShownDialogId = DIALOG_ID_ENABLE_WARNING;
-            AccessibilityServiceInfo info = getAccessibilityServiceInfo();
-            if (info == null) {
-                return null;
+                mShownDialogId = DIALOG_ID_ENABLE_WARNING;
+                AccessibilityServiceInfo info = getAccessibilityServiceInfo();
+                if (info == null) {
+                    return null;
+                }
+                AlertDialog ad = new AlertDialog.Builder(getActivity())
+                        .setTitle(getString(R.string.enable_service_title,
+                                info.getResolveInfo().loadLabel(getPackageManager())))
+                        .setIconAttribute(android.R.attr.alertDialogIcon)
+                        .setView(createEnableDialogContentView(info))
+                        .setCancelable(true)
+                        .setPositiveButton(android.R.string.ok, this)
+                        .setNegativeButton(android.R.string.cancel, this)
+                        .create();
+                ad.getButton(AlertDialog.BUTTON_POSITIVE)
+                        .setFilterTouchesWhenObscured(true);
+                return ad;
             }
-            return new AlertDialog.Builder(getActivity())
-            .setTitle(getString(R.string.enable_service_title,
-                    info.getResolveInfo().loadLabel(getPackageManager())))
-                    .setIconAttribute(android.R.attr.alertDialogIcon)
-                    .setView(createEnableDialogContentView(info))
-                    .setCancelable(true)
-                    .setPositiveButton(android.R.string.ok, this)
-                    .setNegativeButton(android.R.string.cancel, this)
-                    .create();
-        }
             case DIALOG_ID_DISABLE_WARNING: {
-            mShownDialogId = DIALOG_ID_DISABLE_WARNING;
-            AccessibilityServiceInfo info = getAccessibilityServiceInfo();
-            if (info == null) {
-                return null;
+                mShownDialogId = DIALOG_ID_DISABLE_WARNING;
+                AccessibilityServiceInfo info = getAccessibilityServiceInfo();
+                if (info == null) {
+                    return null;
+                }
+                return new AlertDialog.Builder(getActivity())
+                        .setTitle(getString(R.string.disable_service_title,
+                                info.getResolveInfo().loadLabel(getPackageManager())))
+                        .setIconAttribute(android.R.attr.alertDialogIcon)
+                        .setMessage(getString(R.string.disable_service_message,
+                                info.getResolveInfo().loadLabel(getPackageManager())))
+                        .setCancelable(true)
+                        .setPositiveButton(android.R.string.ok, this)
+                        .setNegativeButton(android.R.string.cancel, this)
+                        .create();
             }
-            return new AlertDialog.Builder(getActivity())
-            .setTitle(getString(R.string.disable_service_title,
-                    info.getResolveInfo().loadLabel(getPackageManager())))
-                    .setIconAttribute(android.R.attr.alertDialogIcon)
-                    .setMessage(getString(R.string.disable_service_message,
-                            info.getResolveInfo().loadLabel(getPackageManager())))
-                    .setCancelable(true)
-                    .setPositiveButton(android.R.string.ok, this)
-                    .setNegativeButton(android.R.string.cancel, this)
-                    .create();
-        }
             default: {
-            throw new IllegalArgumentException();
-        }
+                throw new IllegalArgumentException();
+            }
         }
     }