Always invoke scrim callback

Callback needs to be invoked if we're trying to switch
to the same state, otherwise the window will never know
that we're done fading the keyguard.

Change-Id: I6779ecf18fbb23f621731d851ab343b82c3529e3
Fixes: 70481733
Fixes: 70392591
Test: Unlock by tapping on notification
Test: Unlock with pin, fingerprint
Test: Unlock with fingerprint when pulsing
Test: Unlock by tapping on notification when pulsing
Test: Open Settings from QS when Maps is SHOW_WHEN_LOCKED
Test: runtest -x packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index b9f695b..37dcaa8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -229,6 +229,15 @@
         verify(mWakeLock, times(1)).release();
     }
 
+    @Test
+    public void testCallbackInvokedOnSameStateTransition() {
+        mScrimController.transitionTo(ScrimState.UNLOCKED);
+        mScrimController.finishAnimationsImmediately();
+        ScrimController.Callback callback = mock(ScrimController.Callback.class);
+        mScrimController.transitionTo(ScrimState.UNLOCKED, callback);
+        verify(callback, times(1)).onFinished();
+    }
+
     private void assertScrimTint(ScrimView scrimView, boolean tinted) {
         final boolean viewIsTinted = scrimView.getTint() != Color.TRANSPARENT;
         final String name = scrimView == mScrimInFront ? "front" : "back";