Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +10 −7 Original line number Diff line number Diff line Loading @@ -57,7 +57,6 @@ import android.graphics.PointF; import android.graphics.Rect; import android.graphics.Region; import android.graphics.drawable.Drawable; import android.hardware.biometrics.BiometricSourceType; import android.hardware.biometrics.SensorLocationInternal; import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; import android.os.Bundle; Loading Loading @@ -2228,12 +2227,6 @@ public class NotificationPanelViewController extends PanelViewController { updateQSExpansionEnabledAmbient(); } @Override public void setIsShadeOpening(boolean opening) { mAmbientState.setIsShadeOpening(opening); updateQSExpansionEnabledAmbient(); } private void updateQSExpansionEnabledAmbient() { final float scrollRangeToTop = mAmbientState.getTopPadding() - mQuickQsOffsetHeight; mQsExpansionEnabledAmbient = mShouldUseSplitNotificationShade Loading Loading @@ -4629,4 +4622,14 @@ public class NotificationPanelViewController extends PanelViewController { return insets; } } private final PanelBar.PanelStateChangeListener mPanelStateChangeListener = state -> { mAmbientState.setIsShadeOpening(state == PanelBar.STATE_OPENING); updateQSExpansionEnabledAmbient(); }; public PanelBar.PanelStateChangeListener getPanelStateChangeListener() { return mPanelStateChangeListener; } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java +25 −7 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ package com.android.systemui.statusbar.phone; import static java.lang.Float.isNaN; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.CallSuper; import android.annotation.IntDef; import android.content.Context; import android.os.Bundle; import android.os.Parcelable; Loading @@ -27,6 +29,10 @@ import android.util.Log; import android.view.MotionEvent; import android.widget.FrameLayout; import androidx.annotation.Nullable; import java.lang.annotation.Retention; public abstract class PanelBar extends FrameLayout { public static final boolean DEBUG = false; public static final String TAG = PanelBar.class.getSimpleName(); Loading @@ -40,26 +46,27 @@ public abstract class PanelBar extends FrameLayout { Log.v(TAG, String.format(fmt, args)); } /** Enum for the current state of the panel. */ @Retention(SOURCE) @IntDef({STATE_CLOSED, STATE_OPENING, STATE_OPEN}) @interface PanelState {} public static final int STATE_CLOSED = 0; public static final int STATE_OPENING = 1; public static final int STATE_OPEN = 2; PanelViewController mPanel; @Nullable private PanelStateChangeListener mPanelStateChangeListener; private int mState = STATE_CLOSED; private boolean mTracking; public void go(int state) { private void go(@PanelState int state) { if (DEBUG) LOG("go state: %d -> %d", mState, state); mState = state; if (mPanel != null) { mPanel.setIsShadeOpening(state == STATE_OPENING); if (mPanelStateChangeListener != null) { mPanelStateChangeListener.onStateChanged(state); } } protected boolean isShadeOpening() { return mState == STATE_OPENING; } @Override protected Parcelable onSaveInstanceState() { Bundle bundle = new Bundle(); Loading Loading @@ -97,6 +104,11 @@ public abstract class PanelBar extends FrameLayout { pv.setBar(this); } /** Sets the listener that will be notified of panel state changes. */ public void setPanelStateChangeListener(PanelStateChangeListener listener) { mPanelStateChangeListener = listener; } public boolean panelEnabled() { return true; } Loading Loading @@ -226,4 +238,10 @@ public abstract class PanelBar extends FrameLayout { public void onClosingFinished() { } /** An interface that will be notified of panel state changes. */ public interface PanelStateChangeListener { /** Called when the state changes. */ void onStateChanged(@PanelState int state); } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java +0 −5 Original line number Diff line number Diff line Loading @@ -1171,11 +1171,6 @@ public abstract class PanelViewController { return new OnConfigurationChangedListener(); } /** * Set that the panel is currently opening and not fully opened or closed. */ public abstract void setIsShadeOpening(boolean opening); public class TouchHandler implements View.OnTouchListener { public boolean onInterceptTouchEvent(MotionEvent event) { if (mInstantExpanding || !mNotificationsDragEnabled || mTouchDisabled || (mMotionAborted Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +2 −0 Original line number Diff line number Diff line Loading @@ -1161,6 +1161,8 @@ public class StatusBar extends SystemUI implements mStatusBarView = (PhoneStatusBarView) statusBarFragment.getView(); mStatusBarView.setBar(this); mStatusBarView.setPanel(mNotificationPanelViewController); mStatusBarView.setPanelStateChangeListener( mNotificationPanelViewController.getPanelStateChangeListener()); mStatusBarView.setScrimController(mScrimController); mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners); for (ExpansionChangedListener listener : mExpansionChangedListeners) { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt +55 −4 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ class PhoneStatusBarViewTest : SysuiTestCase() { private lateinit var panelView: ViewGroup @Mock private lateinit var scrimController: ScrimController @Mock private lateinit var statusBar: StatusBar private lateinit var view: PhoneStatusBarView Loading @@ -48,6 +50,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { view = PhoneStatusBarView(mContext, null) view.setPanel(panelViewController) view.setScrimController(scrimController) view.setBar(statusBar) } @Test Loading @@ -72,7 +75,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { @Test fun panelExpansionChanged_fracZero_stateChangeListenerNotified() { val listener = TestStateChangedListener() val listener = TestExpansionStateChangedListener() view.setPanelExpansionStateChangedListener(listener) view.panelExpansionChanged(0f, false) Loading @@ -82,7 +85,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { @Test fun panelExpansionChanged_fracOne_stateChangeListenerNotified() { val listener = TestStateChangedListener() val listener = TestExpansionStateChangedListener() view.setPanelExpansionStateChangedListener(listener) view.panelExpansionChanged(1f, false) Loading @@ -92,7 +95,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { @Test fun panelExpansionChanged_fracHalf_stateChangeListenerNotNotified() { val listener = TestStateChangedListener() val listener = TestExpansionStateChangedListener() view.setPanelExpansionStateChangedListener(listener) view.panelExpansionChanged(0.5f, false) Loading @@ -106,11 +109,59 @@ class PhoneStatusBarViewTest : SysuiTestCase() { // No assert needed, just testing no crash } private class TestStateChangedListener : PhoneStatusBarView.PanelExpansionStateChangedListener { @Test fun panelStateChanged_toStateOpening_listenerNotified() { val listener = TestStateChangedListener() view.setPanelStateChangeListener(listener) view.panelExpansionChanged(0.5f, true) assertThat(listener.state).isEqualTo(PanelBar.STATE_OPENING) } @Test fun panelStateChanged_toStateOpen_listenerNotified() { val listener = TestStateChangedListener() view.setPanelStateChangeListener(listener) view.panelExpansionChanged(1f, true) assertThat(listener.state).isEqualTo(PanelBar.STATE_OPEN) } @Test fun panelStateChanged_toStateClosed_listenerNotified() { val listener = TestStateChangedListener() view.setPanelStateChangeListener(listener) // First, open the panel view.panelExpansionChanged(1f, true) // Then, close it again view.panelExpansionChanged(0f, false) assertThat(listener.state).isEqualTo(PanelBar.STATE_CLOSED) } @Test fun panelStateChanged_noListener_noCrash() { view.panelExpansionChanged(1f, true) // No assert needed, just testing no crash } private class TestExpansionStateChangedListener : PhoneStatusBarView.PanelExpansionStateChangedListener { var stateChangeCalled: Boolean = false override fun onPanelExpansionStateChanged() { stateChangeCalled = true } } private class TestStateChangedListener : PanelBar.PanelStateChangeListener { var state: Int = 0 override fun onStateChanged(state: Int) { this.state = state } } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +10 −7 Original line number Diff line number Diff line Loading @@ -57,7 +57,6 @@ import android.graphics.PointF; import android.graphics.Rect; import android.graphics.Region; import android.graphics.drawable.Drawable; import android.hardware.biometrics.BiometricSourceType; import android.hardware.biometrics.SensorLocationInternal; import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; import android.os.Bundle; Loading Loading @@ -2228,12 +2227,6 @@ public class NotificationPanelViewController extends PanelViewController { updateQSExpansionEnabledAmbient(); } @Override public void setIsShadeOpening(boolean opening) { mAmbientState.setIsShadeOpening(opening); updateQSExpansionEnabledAmbient(); } private void updateQSExpansionEnabledAmbient() { final float scrollRangeToTop = mAmbientState.getTopPadding() - mQuickQsOffsetHeight; mQsExpansionEnabledAmbient = mShouldUseSplitNotificationShade Loading Loading @@ -4629,4 +4622,14 @@ public class NotificationPanelViewController extends PanelViewController { return insets; } } private final PanelBar.PanelStateChangeListener mPanelStateChangeListener = state -> { mAmbientState.setIsShadeOpening(state == PanelBar.STATE_OPENING); updateQSExpansionEnabledAmbient(); }; public PanelBar.PanelStateChangeListener getPanelStateChangeListener() { return mPanelStateChangeListener; } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java +25 −7 Original line number Diff line number Diff line Loading @@ -17,8 +17,10 @@ package com.android.systemui.statusbar.phone; import static java.lang.Float.isNaN; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.CallSuper; import android.annotation.IntDef; import android.content.Context; import android.os.Bundle; import android.os.Parcelable; Loading @@ -27,6 +29,10 @@ import android.util.Log; import android.view.MotionEvent; import android.widget.FrameLayout; import androidx.annotation.Nullable; import java.lang.annotation.Retention; public abstract class PanelBar extends FrameLayout { public static final boolean DEBUG = false; public static final String TAG = PanelBar.class.getSimpleName(); Loading @@ -40,26 +46,27 @@ public abstract class PanelBar extends FrameLayout { Log.v(TAG, String.format(fmt, args)); } /** Enum for the current state of the panel. */ @Retention(SOURCE) @IntDef({STATE_CLOSED, STATE_OPENING, STATE_OPEN}) @interface PanelState {} public static final int STATE_CLOSED = 0; public static final int STATE_OPENING = 1; public static final int STATE_OPEN = 2; PanelViewController mPanel; @Nullable private PanelStateChangeListener mPanelStateChangeListener; private int mState = STATE_CLOSED; private boolean mTracking; public void go(int state) { private void go(@PanelState int state) { if (DEBUG) LOG("go state: %d -> %d", mState, state); mState = state; if (mPanel != null) { mPanel.setIsShadeOpening(state == STATE_OPENING); if (mPanelStateChangeListener != null) { mPanelStateChangeListener.onStateChanged(state); } } protected boolean isShadeOpening() { return mState == STATE_OPENING; } @Override protected Parcelable onSaveInstanceState() { Bundle bundle = new Bundle(); Loading Loading @@ -97,6 +104,11 @@ public abstract class PanelBar extends FrameLayout { pv.setBar(this); } /** Sets the listener that will be notified of panel state changes. */ public void setPanelStateChangeListener(PanelStateChangeListener listener) { mPanelStateChangeListener = listener; } public boolean panelEnabled() { return true; } Loading Loading @@ -226,4 +238,10 @@ public abstract class PanelBar extends FrameLayout { public void onClosingFinished() { } /** An interface that will be notified of panel state changes. */ public interface PanelStateChangeListener { /** Called when the state changes. */ void onStateChanged(@PanelState int state); } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java +0 −5 Original line number Diff line number Diff line Loading @@ -1171,11 +1171,6 @@ public abstract class PanelViewController { return new OnConfigurationChangedListener(); } /** * Set that the panel is currently opening and not fully opened or closed. */ public abstract void setIsShadeOpening(boolean opening); public class TouchHandler implements View.OnTouchListener { public boolean onInterceptTouchEvent(MotionEvent event) { if (mInstantExpanding || !mNotificationsDragEnabled || mTouchDisabled || (mMotionAborted Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +2 −0 Original line number Diff line number Diff line Loading @@ -1161,6 +1161,8 @@ public class StatusBar extends SystemUI implements mStatusBarView = (PhoneStatusBarView) statusBarFragment.getView(); mStatusBarView.setBar(this); mStatusBarView.setPanel(mNotificationPanelViewController); mStatusBarView.setPanelStateChangeListener( mNotificationPanelViewController.getPanelStateChangeListener()); mStatusBarView.setScrimController(mScrimController); mStatusBarView.setExpansionChangedListeners(mExpansionChangedListeners); for (ExpansionChangedListener listener : mExpansionChangedListeners) { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt +55 −4 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ class PhoneStatusBarViewTest : SysuiTestCase() { private lateinit var panelView: ViewGroup @Mock private lateinit var scrimController: ScrimController @Mock private lateinit var statusBar: StatusBar private lateinit var view: PhoneStatusBarView Loading @@ -48,6 +50,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { view = PhoneStatusBarView(mContext, null) view.setPanel(panelViewController) view.setScrimController(scrimController) view.setBar(statusBar) } @Test Loading @@ -72,7 +75,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { @Test fun panelExpansionChanged_fracZero_stateChangeListenerNotified() { val listener = TestStateChangedListener() val listener = TestExpansionStateChangedListener() view.setPanelExpansionStateChangedListener(listener) view.panelExpansionChanged(0f, false) Loading @@ -82,7 +85,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { @Test fun panelExpansionChanged_fracOne_stateChangeListenerNotified() { val listener = TestStateChangedListener() val listener = TestExpansionStateChangedListener() view.setPanelExpansionStateChangedListener(listener) view.panelExpansionChanged(1f, false) Loading @@ -92,7 +95,7 @@ class PhoneStatusBarViewTest : SysuiTestCase() { @Test fun panelExpansionChanged_fracHalf_stateChangeListenerNotNotified() { val listener = TestStateChangedListener() val listener = TestExpansionStateChangedListener() view.setPanelExpansionStateChangedListener(listener) view.panelExpansionChanged(0.5f, false) Loading @@ -106,11 +109,59 @@ class PhoneStatusBarViewTest : SysuiTestCase() { // No assert needed, just testing no crash } private class TestStateChangedListener : PhoneStatusBarView.PanelExpansionStateChangedListener { @Test fun panelStateChanged_toStateOpening_listenerNotified() { val listener = TestStateChangedListener() view.setPanelStateChangeListener(listener) view.panelExpansionChanged(0.5f, true) assertThat(listener.state).isEqualTo(PanelBar.STATE_OPENING) } @Test fun panelStateChanged_toStateOpen_listenerNotified() { val listener = TestStateChangedListener() view.setPanelStateChangeListener(listener) view.panelExpansionChanged(1f, true) assertThat(listener.state).isEqualTo(PanelBar.STATE_OPEN) } @Test fun panelStateChanged_toStateClosed_listenerNotified() { val listener = TestStateChangedListener() view.setPanelStateChangeListener(listener) // First, open the panel view.panelExpansionChanged(1f, true) // Then, close it again view.panelExpansionChanged(0f, false) assertThat(listener.state).isEqualTo(PanelBar.STATE_CLOSED) } @Test fun panelStateChanged_noListener_noCrash() { view.panelExpansionChanged(1f, true) // No assert needed, just testing no crash } private class TestExpansionStateChangedListener : PhoneStatusBarView.PanelExpansionStateChangedListener { var stateChangeCalled: Boolean = false override fun onPanelExpansionStateChanged() { stateChangeCalled = true } } private class TestStateChangedListener : PanelBar.PanelStateChangeListener { var state: Int = 0 override fun onStateChanged(state: Int) { this.state = state } } }