Merge "Update light reveal effect on wake/sleep so that the screen off animation works too." into sc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 2a41c90..e350fe7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -3896,15 +3896,6 @@
         updateQsExpansionEnabled();
         mKeyguardViewMediator.setDozing(mDozing);
 
-        if ((isDozing && mWakefulnessLifecycle.getLastSleepReason()
-                == PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON)
-                || (!isDozing && mWakefulnessLifecycle.getLastWakeReason()
-                == PowerManager.WAKE_REASON_POWER_BUTTON)) {
-            mLightRevealScrim.setRevealEffect(mPowerButtonReveal);
-        } else if (!(mLightRevealScrim.getRevealEffect() instanceof CircleReveal)) {
-            mLightRevealScrim.setRevealEffect(LiftReveal.INSTANCE);
-        }
-
         mNotificationsController.requestNotificationUpdate("onDozingChanged");
         updateDozingState();
         mDozeServiceHost.updateDozing();
@@ -3913,6 +3904,27 @@
         Trace.endSection();
     }
 
+    /**
+     * Updates the light reveal effect to reflect the reason we're waking or sleeping (for example,
+     * from the power button).
+     * @param wakingUp Whether we're updating because we're waking up (true) or going to sleep
+     *                 (false).
+     */
+    private void updateRevealEffect(boolean wakingUp) {
+        if (mLightRevealScrim == null) {
+            return;
+        }
+
+        if (wakingUp && mWakefulnessLifecycle.getLastWakeReason()
+                == PowerManager.WAKE_REASON_POWER_BUTTON
+                || !wakingUp && mWakefulnessLifecycle.getLastSleepReason()
+                == PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON) {
+            mLightRevealScrim.setRevealEffect(mPowerButtonReveal);
+        } else if (!(mLightRevealScrim.getRevealEffect() instanceof CircleReveal)) {
+            mLightRevealScrim.setRevealEffect(LiftReveal.INSTANCE);
+        }
+    }
+
     public LightRevealScrim getLightRevealScrim() {
         return mLightRevealScrim;
     }
@@ -4045,6 +4057,7 @@
         public void onStartedGoingToSleep() {
             String tag = "StatusBar#onStartedGoingToSleep";
             DejankUtils.startDetectingBlockingIpcs(tag);
+            updateRevealEffect(false /* wakingUp */);
             updateNotificationPanelTouchState();
             notifyHeadsUpGoingToSleep();
             dismissVolumeDialog();
@@ -4076,6 +4089,7 @@
             // This is intentionally below the stopDozing call above, since it avoids that we're
             // unnecessarily animating the wakeUp transition. Animations should only be enabled
             // once we fully woke up.
+            updateRevealEffect(true /* wakingUp */);
             updateNotificationPanelTouchState();
             mPulseExpansionHandler.onStartedWakingUp();