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

Commit 47202a3e authored by Caitlin Cassidy's avatar Caitlin Cassidy Committed by Automerger Merge Worker
Browse files

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

Merge "[Status Bar Refactor] 2.1/N: Migrate ScrimController's panelExpanisonChanged listener off of the StatusBar.ExpansionChangedListener interface and onto the PanelExpansionListener interface." into sc-v2-dev am: c3e4e96e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16092652

Change-Id: I8a7d3c43d84f86cdcb04c885f47f35cbb987388b
parents a49ed43f c3e4e96e
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