Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af1e71dc authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Merge cherrypicks of [16024420] into sc-qpr1-d-release.

Change-Id: I08dd0f721191ea2eccd0447aad85d8d898e8f5d5
parents 80e3362b 0b524af4
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -154,6 +154,11 @@ class LightRevealScrim(context: Context?, attrs: AttributeSet?) : View(context,
     */
    lateinit var isScrimOpaqueChangedListener: Consumer<Boolean>

    /**
     * A runnable to call when the scrim has been fully revealed. This is only invoked once
     */
    var fullyRevealedRunnable: Runnable? = null

    /**
     * How much of the underlying views are revealed, in percent. 0 means they will be completely
     * obscured and 1 means they'll be fully visible.
@@ -165,10 +170,20 @@ class LightRevealScrim(context: Context?, attrs: AttributeSet?) : View(context,

                revealEffect.setRevealAmountOnScrim(value, this)
                updateScrimOpaque()
                maybeTriggerFullyRevealedRunnable()
                invalidate()
            }
        }

    private fun maybeTriggerFullyRevealedRunnable() {
        if (revealAmount == 1.0f) {
            fullyRevealedRunnable?.let {
                it.run()
                fullyRevealedRunnable = null
            }
        }
    }

    /**
     * The [LightRevealEffect] used to manipulate the radial gradient whenever [revealAmount]
     * changes.
+23 −2
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.phone.BiometricUnlockController
import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK
import com.android.systemui.statusbar.phone.DozeParameters
import com.android.systemui.statusbar.phone.PanelExpansionListener
import com.android.systemui.statusbar.phone.ScrimController
@@ -73,6 +72,10 @@ class NotificationShadeDepthController @Inject constructor(
        private const val TAG = "DepthController"
    }

    /**
     * Is did we already unblur while dozing?
     */
    private var alreadyUnblurredWhileDozing = false
    lateinit var root: View
    private var blurRoot: View? = null
    private var keyguardAnimator: Animator? = null
@@ -237,9 +240,11 @@ class NotificationShadeDepthController @Inject constructor(
    private val keyguardStateCallback = object : KeyguardStateController.Callback {
        override fun onKeyguardFadingAwayChanged() {
            if (!keyguardStateController.isKeyguardFadingAway ||
                    biometricUnlockController.mode != MODE_WAKE_AND_UNLOCK) {
                    !biometricUnlockController.isWakeAndUnlock) {
                return
            }
            // When wakeAndUnlocking the screen remains dozing, so we have to manually trigger
            // the unblur earlier

            keyguardAnimator?.cancel()
            keyguardAnimator = ValueAnimator.ofFloat(1f, 0f).apply {
@@ -261,6 +266,7 @@ class NotificationShadeDepthController @Inject constructor(
                })
                start()
            }
            alreadyUnblurredWhileDozing = statusBarStateController.dozeAmount != 0.0f
        }

        override fun onKeyguardShowingChanged() {
@@ -282,10 +288,24 @@ class NotificationShadeDepthController @Inject constructor(
            if (isDozing) {
                shadeAnimation.finishIfRunning()
                brightnessMirrorSpring.finishIfRunning()

                // unset this for safety, to be ready for the next wakeup
                alreadyUnblurredWhileDozing = false
            }
        }

        override fun onDozeAmountChanged(linear: Float, eased: Float) {
            if (alreadyUnblurredWhileDozing) {
                if (linear == 0.0f) {
                    // We finished waking up, let's reset
                    alreadyUnblurredWhileDozing = false
                } else {
                    // We've already handled the unbluring from the keyguardAnimator above.
                    // if we would continue, we'd play another unzoom / blur animation from the
                    // dozing changing.
                    return
                }
            }
            wakeAndUnlockBlurRadius = blurUtils.blurRadiusOfRatio(eased)
            scheduleUpdate()
        }
@@ -443,6 +463,7 @@ class NotificationShadeDepthController @Inject constructor(
            it.println("blursDisabledForAppLaunch: $blursDisabledForAppLaunch")
            it.println("qsPanelExpansion: $qsPanelExpansion")
            it.println("transitionToFullShadeProgress: $transitionToFullShadeProgress")
            it.println("alreadyUnblurredWhileDozing: $alreadyUnblurredWhileDozing")
            it.println("lastAppliedBlur: $lastAppliedBlur")
        }
    }
+15 −3
Original line number Diff line number Diff line
@@ -360,6 +360,7 @@ public class StatusBar extends SystemUI implements DemoMode,
    }

    private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    private boolean mCallingFadingAwayAfterReveal;

    public interface ExpansionChangedListener {
        void onExpansionChanged(float expansion, boolean expanded);
@@ -639,7 +640,7 @@ public class StatusBar extends SystemUI implements DemoMode,
                        + "mStatusBarKeyguardViewManager was null");
                return;
            }
            if (mKeyguardStateController.isKeyguardFadingAway()) {
            if (mKeyguardStateController.isKeyguardFadingAway() && !mCallingFadingAwayAfterReveal) {
                mStatusBarKeyguardViewManager.onKeyguardFadedAway();
            }
        }
@@ -3583,8 +3584,19 @@ public class StatusBar extends SystemUI implements DemoMode,
    public void fadeKeyguardWhilePulsing() {
        mNotificationPanelViewController.fadeOut(0, FADE_KEYGUARD_DURATION_PULSING,
                ()-> {
                Runnable finishFading = () -> {
                    mCallingFadingAwayAfterReveal = false;
                    hideKeyguard();
                    mStatusBarKeyguardViewManager.onKeyguardFadedAway();
                };
                if (mLightRevealScrim.getRevealAmount() != 1.0f) {
                    mCallingFadingAwayAfterReveal = true;
                    // we're still revealing the Light reveal, let's only go to keyguard once
                    // Going there introduces lots of jank
                    mLightRevealScrim.setFullyRevealedRunnable(finishFading);
                } else {
                    finishFading.run();
                }
            }).start();
    }