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

Commit 7bad7f99 authored by Caitlin Cassidy's avatar Caitlin Cassidy
Browse files

[Status Bar Refactor] Combine PanelExpansionChange and

PanelExpansionStateChange into one listener class.

Test: manual (verified callbacks still trigger)
Bug: 200063118
Change-Id: Iac617598fd41885a71b21728f1984838c44a2422
parent 3483f6e8
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -66,8 +66,6 @@ public class PhoneStatusBarView extends PanelBar {
    @Nullable
    private List<StatusBar.ExpansionChangedListener> mExpansionChangedListeners;
    @Nullable
    private PanelExpansionStateChangedListener mPanelExpansionStateChangedListener;
    @Nullable
    private TouchEventHandler mTouchEventHandler;

    /**
@@ -89,10 +87,6 @@ public class PhoneStatusBarView extends PanelBar {
        mExpansionChangedListeners = listeners;
    }

    void setPanelExpansionStateChangedListener(PanelExpansionStateChangedListener listener) {
        mPanelExpansionStateChangedListener = listener;
    }

    void setTouchEventHandler(TouchEventHandler handler) {
        mTouchEventHandler = handler;
    }
@@ -211,14 +205,6 @@ public class PhoneStatusBarView extends PanelBar {
    @Override
    public void panelExpansionChanged(float frac, boolean expanded) {
        super.panelExpansionChanged(frac, expanded);
        if ((frac == 0 || frac == 1)) {
            if (mPanelExpansionStateChangedListener != null) {
                mPanelExpansionStateChangedListener.onPanelExpansionStateChanged();
            } else {
                Log.w(TAG, "No PanelExpansionStateChangedListener provided.");
            }
        }

        if (mExpansionChangedListeners != null) {
            for (StatusBar.ExpansionChangedListener listener : mExpansionChangedListeners) {
                listener.onExpansionChanged(frac, expanded);
@@ -305,12 +291,6 @@ public class PhoneStatusBarView extends PanelBar {
                getPaddingBottom());
    }

    /** A listener that will be notified when a panel's expansion state may have changed. */
    public interface PanelExpansionStateChangedListener {
        /** Called when a panel's expansion state may have changed. */
        void onPanelExpansionStateChanged();
    }

    /**
     * A handler repsonsible for all touch event handling on the status bar.
     *
+0 −2
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import com.android.systemui.util.ViewController
class PhoneStatusBarViewController(
    view: PhoneStatusBarView,
    statusBarMoveFromCenterAnimationController: StatusBarMoveFromCenterAnimationController?,
    panelExpansionStateChangedListener: PhoneStatusBarView.PanelExpansionStateChangedListener,
    touchEventHandler: PhoneStatusBarView.TouchEventHandler,
) : ViewController<PhoneStatusBarView>(view) {

@@ -36,7 +35,6 @@ class PhoneStatusBarViewController(

    init {
        mView.setTouchEventHandler(touchEventHandler)
        mView.setPanelExpansionStateChangedListener(panelExpansionStateChangedListener)

        statusBarMoveFromCenterAnimationController?.let { animationController ->
            val statusBarLeftSide: View = mView.findViewById(R.id.status_bar_left_side)
+9 −7
Original line number Diff line number Diff line
@@ -902,6 +902,7 @@ public class StatusBar extends SystemUI implements
        mExpansionChangedListeners = new ArrayList<>();
        addExpansionChangedListener(
                (expansion, expanded) -> mScrimController.setRawPanelExpansionFraction(expansion));
        addExpansionChangedListener(this::onPanelExpansionChanged);

        mBubbleExpandListener =
                (isExpanding, key) -> mContext.getMainExecutor().execute(() -> {
@@ -1185,7 +1186,6 @@ public class StatusBar extends SystemUI implements
                            new PhoneStatusBarViewController(
                                    mStatusBarView,
                                    moveFromCenterAnimation,
                                    this::onPanelExpansionStateChanged,
                                    mNotificationPanelViewController.getStatusBarTouchEventHandler()
                            );
                    mPhoneStatusBarViewController.init();
@@ -1456,7 +1456,8 @@ public class StatusBar extends SystemUI implements
        }
    }

    private void onPanelExpansionStateChanged() {
    private void onPanelExpansionChanged(float frac, boolean expanded) {
        if (frac == 0 || frac == 1) {
            if (getNavigationBarView() != null) {
                getNavigationBarView().onStatusBarPanelStateChanged();
            }
@@ -1464,6 +1465,7 @@ public class StatusBar extends SystemUI implements
                getNotificationPanelViewController().updateSystemUiStateFlags();
            }
        }
    }

    @NonNull
    @Override
+1 −25
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.util.mockito.any
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -38,11 +37,8 @@ import org.mockito.MockitoAnnotations
@SmallTest
class PhoneStatusBarViewControllerTest : SysuiTestCase() {

    private val stateChangeListener = TestStateChangedListener()
    private val touchEventHandler = TestTouchEventHandler()

    @Mock
    private lateinit var commandQueue: CommandQueue
    @Mock
    private lateinit var panelViewController: PanelViewController
    @Mock
@@ -73,7 +69,6 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() {
        controller = PhoneStatusBarViewController(
                view,
                null,
                stateChangeListener,
                touchEventHandler,
        )
    }
@@ -90,31 +85,12 @@ class PhoneStatusBarViewControllerTest : SysuiTestCase() {
    @Test
    fun constructor_moveFromCenterAnimationIsNotNull_moveFromCenterAnimationInitialized() {
        controller = PhoneStatusBarViewController(
                view, moveFromCenterAnimation, stateChangeListener, touchEventHandler
                view, moveFromCenterAnimation, touchEventHandler
        )

        verify(moveFromCenterAnimation).init(any(), any())
    }

    @Test
    fun constructor_setsExpansionStateChangedListenerOnView() {
        assertThat(stateChangeListener.stateChangeCalled).isFalse()

        // If the constructor correctly set the listener, then it should be used when
        // [PhoneStatusBarView.panelExpansionChanged] is called.
        view.panelExpansionChanged(0f, false)

        assertThat(stateChangeListener.stateChangeCalled).isTrue()
    }

    private class TestStateChangedListener : PhoneStatusBarView.PanelExpansionStateChangedListener {
        var stateChangeCalled: Boolean = false

        override fun onPanelExpansionStateChanged() {
            stateChangeCalled = true
        }
    }

    private class TestTouchEventHandler : PhoneStatusBarView.TouchEventHandler {
        var lastEvent: MotionEvent? = null
        override fun handleTouchEvent(event: MotionEvent?): Boolean {
+16 −37
Original line number Diff line number Diff line
@@ -54,37 +54,20 @@ class PhoneStatusBarViewTest : SysuiTestCase() {
    }

    @Test
    fun panelExpansionChanged_fracZero_stateChangeListenerNotified() {
        val listener = TestExpansionStateChangedListener()
        view.setPanelExpansionStateChangedListener(listener)
    fun panelExpansionChanged_expansionChangeListenerNotified() {
        val listener = TestExpansionChangedListener()
        view.setExpansionChangedListeners(listOf(listener))
        val fraction = 0.4f
        val isExpanded = true

        view.panelExpansionChanged(0f, false)
        view.panelExpansionChanged(fraction, isExpanded)

        assertThat(listener.stateChangeCalled).isTrue()
        assertThat(listener.fraction).isEqualTo(fraction)
        assertThat(listener.isExpanded).isEqualTo(isExpanded)
    }

    @Test
    fun panelExpansionChanged_fracOne_stateChangeListenerNotified() {
        val listener = TestExpansionStateChangedListener()
        view.setPanelExpansionStateChangedListener(listener)

        view.panelExpansionChanged(1f, false)

        assertThat(listener.stateChangeCalled).isTrue()
    }

    @Test
    fun panelExpansionChanged_fracHalf_stateChangeListenerNotNotified() {
        val listener = TestExpansionStateChangedListener()
        view.setPanelExpansionStateChangedListener(listener)

        view.panelExpansionChanged(0.5f, false)

        assertThat(listener.stateChangeCalled).isFalse()
    }

    @Test
    fun panelExpansionChanged_noStateChangeListener_noCrash() {
    fun panelExpansionChanged_noListeners_noCrash() {
        view.panelExpansionChanged(1f, false)
        // No assert needed, just testing no crash
    }
@@ -123,12 +106,6 @@ class PhoneStatusBarViewTest : SysuiTestCase() {
        assertThat(listener.state).isEqualTo(PanelBar.STATE_CLOSED)
    }

    @Test
    fun panelStateChanged_noListener_noCrash() {
        view.panelExpansionChanged(1f, true)
        // No assert needed, just testing no crash
    }

    @Test
    fun onTouchEvent_listenerNotified() {
        val handler = TestTouchEventHandler()
@@ -168,12 +145,14 @@ class PhoneStatusBarViewTest : SysuiTestCase() {
        // No assert needed, just testing no crash
    }

    private class TestExpansionStateChangedListener
        : PhoneStatusBarView.PanelExpansionStateChangedListener {
        var stateChangeCalled: Boolean = false
    private class TestExpansionChangedListener
        : StatusBar.ExpansionChangedListener {
        var fraction: Float = 0f
        var isExpanded: Boolean = false

        override fun onPanelExpansionStateChanged() {
            stateChangeCalled = true
        override fun onExpansionChanged(expansion: Float, expanded: Boolean) {
            this.fraction = expansion
            this.isExpanded = expanded
        }
    }