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

Commit ccbb1b80 authored by Caitlin Cassidy's avatar Caitlin Cassidy
Browse files

[Status Bar Refactor] 2.1/N: Migrate ScrimController's

panelExpanisonChanged listener off of the
StatusBar.ExpansionChangedListener interface and onto
the PanelExpansionListener interface.

These two listener interfaces do the same thing, so we should unify them
into one interface. All 2.x CLs will migrate listeners to
the PanelExpansionListener interface.

Test: manual (verify ScrimController's callback still triggers)
Bug: 200063118
Change-Id: Ie0cec69a6571a936fa98be39e6de118cc0a6bdaf
parent cec06948
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dock.DockManager;
import com.android.systemui.scrim.ScrimView;
import com.android.systemui.statusbar.notification.stack.ViewState;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.AlarmTimeout;
@@ -233,7 +234,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
            DelayedWakeLock.Builder delayedWakeLockBuilder, Handler handler,
            KeyguardUpdateMonitor keyguardUpdateMonitor, DockManager dockManager,
            ConfigurationController configurationController, @Main Executor mainExecutor,
            UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) {
            UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
            PanelExpansionStateManager panelExpansionStateManager) {
        mScrimStateListener = lightBarController::setScrimState;
        mDefaultScrimAlpha = BUSY_SCRIM_ALPHA;

@@ -269,6 +271,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
                ScrimController.this.onThemeChanged();
            }
        });
        panelExpansionStateManager.addListener(
                (fraction, tracking) -> setRawPanelExpansionFraction(fraction)
        );

        mColors = new GradientColors();
    }
@@ -481,11 +486,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
     *
     * The expansion fraction is tied to the scrim opacity.
     *
     * See {@link PanelBar#panelExpansionChanged}.
     * See {@link PanelExpansionListener#onPanelExpansionChanged}.
     *
     * @param rawPanelExpansionFraction From 0 to 1 where 0 means collapsed and 1 expanded.
     */
    public void setRawPanelExpansionFraction(
     @VisibleForTesting
     void setRawPanelExpansionFraction(
            @FloatRange(from = 0.0, to = 1.0) float rawPanelExpansionFraction) {
        if (isNaN(rawPanelExpansionFraction)) {
            throw new IllegalArgumentException("rawPanelExpansionFraction should not be NaN");
+0 −2
Original line number Diff line number Diff line
@@ -912,8 +912,6 @@ public class StatusBar extends SystemUI implements
        lockscreenShadeTransitionController.setStatusbar(this);

        mExpansionChangedListeners = new ArrayList<>();
        addExpansionChangedListener(
                (expansion, expanded) -> mScrimController.setRawPanelExpansionFraction(expansion));
        addExpansionChangedListener(this::onPanelExpansionChanged);

        mBubbleExpandListener =
+11 −1
Original line number Diff line number Diff line
@@ -31,9 +31,17 @@ class PanelExpansionStateManager @Inject constructor() {

    private val listeners: MutableList<PanelExpansionListener> = mutableListOf()

    /** Adds a listener that will be notified about panel events. */
    @FloatRange(from = 0.0, to = 1.0) private var fraction: Float = 0f
    private var tracking: Boolean = false

    /**
     * Adds a listener that will be notified when the panel expansion has changed.
     *
     * Listener will also be immediately notified with the current values.
     */
    fun addListener(listener: PanelExpansionListener) {
        listeners.add(listener)
        listener.onPanelExpansionChanged(fraction, tracking)
    }

    /** Called when the panel expansion has changed. Notifies all listeners of change. */
@@ -41,6 +49,8 @@ class PanelExpansionStateManager @Inject constructor() {
        @FloatRange(from = 0.0, to = 1.0) fraction: Float,
        tracking: Boolean
    ) {
        this.fraction = fraction
        this.tracking = tracking
        listeners.forEach { it.onPanelExpansionChanged(fraction, tracking) }
    }
}
+7 −1
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import com.android.systemui.DejankUtils;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dock.DockManager;
import com.android.systemui.scrim.ScrimView;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.FakeExecutor;
@@ -112,6 +113,10 @@ public class ScrimControllerTest extends SysuiTestCase {
    private ConfigurationController mConfigurationController;
    @Mock
    private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
    // TODO(b/204991468): Use a real PanelExpansionStateManager object once this bug is fixed. (The
    //   event-dispatch-on-registration pattern caused some of these unit tests to fail.)
    @Mock
    private PanelExpansionStateManager mPanelExpansionStateManager;


    private static class AnimatorListener implements Animator.AnimatorListener {
@@ -224,7 +229,8 @@ public class ScrimControllerTest extends SysuiTestCase {
                mDozeParameters, mAlarmManager, mKeyguardStateController, mDelayedWakeLockBuilder,
                new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor,
                mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock()),
                mUnlockedScreenOffAnimationController);
                mUnlockedScreenOffAnimationController,
                mPanelExpansionStateManager);
        mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible);
        mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront);
        mScrimController.setAnimatorListener(mAnimatorListener);
+13 −0
Original line number Diff line number Diff line
@@ -45,6 +45,19 @@ class PanelExpansionStateManagerTest : SysuiTestCase() {
        assertThat(listener.tracking).isEqualTo(tracking)
    }

    @Test
    fun addPanelExpansionListener_listenerNotifiedOfCurrentValues() {
        val fraction = 0.6f
        val tracking = true
        panelExpansionStateManager.onPanelExpansionChanged(fraction, tracking)
        val listener = TestPanelExpansionListener()

        panelExpansionStateManager.addListener(listener)

        assertThat(listener.fraction).isEqualTo(fraction)
        assertThat(listener.tracking).isEqualTo(tracking)
    }

    class TestPanelExpansionListener : PanelExpansionListener {
        var fraction: Float = 0f
        var tracking: Boolean = false