Merge branch 'security-aosp-pi-release' into int/p/fp2

* security-aosp-pi-release:
  DO NOT MERGE KeyChain protect against overlays.
  DO NOT MERGE Hide overlay on KeyChainActivity

Change-Id: I1cf11c2aaf60c694a05bce996b95f85631ca82c4
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 662b670..1722c7c 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3,6 +3,8 @@
           package="com.android.keychain"
           android:sharedUserId="android.uid.system"
           >
+    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
+
     <application android:label="@string/app_name"
             android:allowBackup="false"
             android:usesCleartextTraffic="false" >
diff --git a/src/com/android/keychain/KeyChainActivity.java b/src/com/android/keychain/KeyChainActivity.java
index 7360531..aa50888 100644
--- a/src/com/android/keychain/KeyChainActivity.java
+++ b/src/com/android/keychain/KeyChainActivity.java
@@ -63,6 +63,8 @@
 
 import javax.security.auth.x500.X500Principal;
 
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
 public class KeyChainActivity extends Activity {
     private static final String TAG = "KeyChain";
 
@@ -86,6 +88,7 @@
 
     @Override public void onCreate(Bundle savedState) {
         super.onCreate(savedState);
+        getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
         if (savedState == null) {
             mState = State.INITIAL;
         } else {
@@ -352,6 +355,9 @@
                 finish(null);
             }
         });
+        dialog.create();
+        // Prevents screen overlay attack.
+        dialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);
         dialog.show();
     }