am 6f5bbc1b: am 5bd836aa: Merge "Add timeout if we dont get onEnterAnimationComplete" into mnc-dr-dev

* commit '6f5bbc1b1e73b3559e311ea2e59a2281b67f65ca':
  Add timeout if we dont get onEnterAnimationComplete
diff --git a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
index 176efbc..d9af800 100644
--- a/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
+++ b/src/com/android/settings/ConfirmDeviceCredentialBaseActivity.java
@@ -19,6 +19,7 @@
 import android.app.Fragment;
 import android.app.KeyguardManager;
 import android.os.Bundle;
+import android.os.Handler;
 import android.view.MenuItem;
 import android.view.WindowManager;
 
@@ -28,6 +29,7 @@
     private boolean mDark;
     private boolean mEnterAnimationPending;
     private boolean mFirstTimeVisible = true;
+    private final Handler mHandler = new Handler();
 
     @Override
     protected void onCreate(Bundle savedState) {
@@ -67,6 +69,7 @@
             mFirstTimeVisible = false;
             prepareEnterAnimation();
             mEnterAnimationPending = true;
+            mHandler.postDelayed(mEnterAnimationCompleteTimeoutRunnable, 1000);
         }
     }
 
@@ -82,6 +85,7 @@
     public void onEnterAnimationComplete() {
         super.onEnterAnimationComplete();
         if (mEnterAnimationPending) {
+            mHandler.removeCallbacks(mEnterAnimationCompleteTimeoutRunnable);
             startEnterAnimation();
             mEnterAnimationPending = false;
         }
@@ -94,4 +98,15 @@
     public void startEnterAnimation() {
         getFragment().startEnterAnimation();
     }
+
+    /**
+     * Workaround for a bug in window manager which results that onEnterAnimationComplete doesn't
+     * get called in all cases.
+     */
+    private final Runnable mEnterAnimationCompleteTimeoutRunnable = new Runnable() {
+        @Override
+        public void run() {
+            onEnterAnimationComplete();
+        }
+    };
 }