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
This commit is contained in:
committed by
Android (Google) Code Review
commit
c3e4e96ef2
@@ -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");
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user