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

Commit 3b5c23ba authored by Caitlin Cassidy's avatar Caitlin Cassidy
Browse files

[Status Bar Refactor] 1/N: Define a singleton PanelExpansionStateManager

and pipe existing panel expansion callbacks through it.

More code will be moved into PanelExpansionStateManager in future CLs --
that's why this CL is 1/N.

Also, #onQsExpansionChanged was never implemented by any listeners so
that method is removed.

Test: manual (verified all callbacks are still triggered)
Test: atest SystemUITests
Test: atest PanelExpansionStateManagerTest (new)
Bug: 200063118
Change-Id: Ic9587d5f335db6b720be01d7681f861f3922485c
parent 618c83b0
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -20,11 +20,14 @@ import android.os.Bundle;
import android.view.View;
import android.view.ViewRootImpl;

import androidx.annotation.Nullable;

import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.NotificationPanelViewController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;

/**
 *  Interface to control Keyguard View. It should be implemented by KeyguardViewManagers, which
@@ -184,14 +187,10 @@ public interface KeyguardViewController {

    /**
     * Registers the StatusBar to which this Keyguard View is mounted.
     * @param statusBar
     * @param notificationPanelViewController
     * @param biometricUnlockController
     * @param notificationContainer
     * @param bypassController
     */
    void registerStatusBar(StatusBar statusBar,
            NotificationPanelViewController notificationPanelViewController,
            @Nullable PanelExpansionStateManager panelExpansionStateManager,
            BiometricUnlockController biometricUnlockController,
            View notificationContainer,
            KeyguardBypassController bypassController);
+11 −2
Original line number Diff line number Diff line
@@ -82,6 +82,8 @@ import android.view.WindowManagerPolicyConstants;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;

import androidx.annotation.Nullable;

import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.jank.InteractionJankMonitor.Configuration;
import com.android.internal.policy.IKeyguardDismissCallback;
@@ -117,6 +119,7 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.NotificationPanelViewController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation;
@@ -2654,10 +2657,16 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable,
     */
    public KeyguardViewController registerStatusBar(StatusBar statusBar,
            NotificationPanelViewController panelView,
            @Nullable PanelExpansionStateManager panelExpansionStateManager,
            BiometricUnlockController biometricUnlockController,
            View notificationContainer, KeyguardBypassController bypassController) {
        mKeyguardViewControllerLazy.get().registerStatusBar(statusBar, panelView,
                biometricUnlockController, notificationContainer, bypassController);
        mKeyguardViewControllerLazy.get().registerStatusBar(
                statusBar,
                panelView,
                panelExpansionStateManager,
                biometricUnlockController,
                notificationContainer,
                bypassController);
        return mKeyguardViewControllerLazy.get();
    }

+3 −3
Original line number Diff line number Diff line
@@ -38,8 +38,8 @@ 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.DozeParameters
import com.android.systemui.statusbar.phone.PanelExpansionListener
import com.android.systemui.statusbar.phone.ScrimController
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.WallpaperController
import java.io.FileDescriptor
@@ -329,10 +329,10 @@ class NotificationShadeDepthController @Inject constructor(
    /**
     * Update blurs when pulling down the shade
     */
    override fun onPanelExpansionChanged(rawExpansion: Float, tracking: Boolean) {
    override fun onPanelExpansionChanged(rawFraction: Float, tracking: Boolean) {
        val timestamp = SystemClock.elapsedRealtimeNanos()
        val expansion = MathUtils.saturate(
                (rawExpansion - panelPullDownMinFraction) / (1f - panelPullDownMinFraction))
                (rawFraction - panelPullDownMinFraction) / (1f - panelPullDownMinFraction))

        if (shadeExpansion == expansion && prevTracking == tracking) {
            prevTimestamp = timestamp
+3 −3
Original line number Diff line number Diff line
@@ -27,8 +27,8 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll
import com.android.systemui.statusbar.notification.stack.StackStateAnimator
import com.android.systemui.statusbar.phone.DozeParameters
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.phone.PanelExpansionListener
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener
import com.android.systemui.statusbar.policy.HeadsUpManager
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener
import javax.inject.Inject
@@ -294,8 +294,8 @@ class NotificationWakeUpCoordinator @Inject constructor(
        this.state = newState
    }

    override fun onPanelExpansionChanged(expansion: Float, tracking: Boolean) {
        val collapsedEnough = expansion <= 0.9f
    override fun onPanelExpansionChanged(fraction: Float, tracking: Boolean) {
        val collapsedEnough = fraction <= 0.9f
        if (collapsedEnough != this.collapsedEnoughToHide) {
            val couldShowPulsingHuns = canShowPulsingHuns
            this.collapsedEnoughToHide = collapsedEnough
+3 −4
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.LockscreenGestureLogger.LockscreenUiEvent;
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardQsUserSwitchController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -686,6 +687,7 @@ public class NotificationPanelViewController extends PanelViewController {
            SplitShadeHeaderController splitShadeHeaderController,
            UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
            LockscreenGestureLogger lockscreenGestureLogger,
            PanelExpansionStateManager panelExpansionStateManager,
            NotificationRemoteInputManager remoteInputManager,
            ControlsComponent controlsComponent) {
        super(view,
@@ -699,6 +701,7 @@ public class NotificationPanelViewController extends PanelViewController {
                flingAnimationUtilsBuilder.get(),
                statusBarTouchableRegionManager,
                lockscreenGestureLogger,
                panelExpansionStateManager,
                ambientState);
        mView = view;
        mVibratorHelper = vibratorHelper;
@@ -2209,10 +2212,6 @@ public class NotificationPanelViewController extends PanelViewController {
            mStatusBar.executeRunnableDismissingKeyguard(null, null /* cancelAction */,
                    false /* dismissShade */, true /* afterKeyguardGone */, false /* deferred */);
        }
        for (int i = 0; i < mExpansionListeners.size(); i++) {
            mExpansionListeners.get(i).onQsExpansionChanged(
                    mQsMaxExpansionHeight != 0 ? mQsExpansionHeight / mQsMaxExpansionHeight : 0);
        }
        if (DEBUG) {
            mView.invalidate();
        }
Loading