[Status Bar Refactor] Combine PanelExpansionChange and

PanelExpansionStateChange into one listener class.

Test: manual (verified callbacks still trigger)
Bug: 200063118
Change-Id: Iac617598fd41885a71b21728f1984838c44a2422
This commit is contained in:
Caitlin Cassidy
2021-10-18 18:42:28 +00:00
parent 3483f6e8aa
commit 7bad7f99d8
5 changed files with 26 additions and 91 deletions

View File

@@ -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.
*

View File

@@ -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)

View File

@@ -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,12 +1456,14 @@ public class StatusBar extends SystemUI implements
}
}
private void onPanelExpansionStateChanged() {
if (getNavigationBarView() != null) {
getNavigationBarView().onStatusBarPanelStateChanged();
}
if (getNotificationPanelViewController() != null) {
getNotificationPanelViewController().updateSystemUiStateFlags();
private void onPanelExpansionChanged(float frac, boolean expanded) {
if (frac == 0 || frac == 1) {
if (getNavigationBarView() != null) {
getNavigationBarView().onStatusBarPanelStateChanged();
}
if (getNotificationPanelViewController() != null) {
getNotificationPanelViewController().updateSystemUiStateFlags();
}
}
}

View File

@@ -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 {

View File

@@ -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
}
}