summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Caitlin Cassidy <ccassidy@google.com> 2021-10-20 14:37:52 +0000
committer Caitlin Cassidy <ccassidy@google.com> 2021-11-03 15:03:49 +0000
commitccbb1b8074ab32d0975b31c99ef9a8434826e482 (patch)
tree27fd560496617453afabbbe734e973570dbf2a14
parentcec069482f80019c12f3c06c817d33fc5ad6151f (diff)
[Status Bar Refactor] 2.1/N: Migrate ScrimController's
panelExpanisonChanged listener off of the StatusBar.ExpansionChangedListener interface and onto the PanelExpansionListener interface. These two listener interfaces do the same thing, so we should unify them into one interface. All 2.x CLs will migrate listeners to the PanelExpansionListener interface. Test: manual (verify ScrimController's callback still triggers) Bug: 200063118 Change-Id: Ie0cec69a6571a936fa98be39e6de118cc0a6bdaf
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManager.kt12
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java8
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManagerTest.kt13
5 files changed, 40 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 1921357ddf7c..cc2f50a13ce8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -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");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index c9dd9833999a..04b1279c70e3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -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 =
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManager.kt
index 1c8b1a8ed4b5..c7424b976f62 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManager.kt
@@ -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) }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index 6849dab1a19a..42f22063110e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -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);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManagerTest.kt
index 8a1099768483..ef184ea175d6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManagerTest.kt
@@ -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