[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:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user