summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/ripple/MultiRippleController.kt14
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java35
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt36
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt48
4 files changed, 31 insertions, 102 deletions
diff --git a/packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/ripple/MultiRippleController.kt b/packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/ripple/MultiRippleController.kt
index 8cd8bf6ca1db..d8e17c9c8204 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/ripple/MultiRippleController.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/ripple/MultiRippleController.kt
@@ -21,20 +21,9 @@ import androidx.annotation.VisibleForTesting
/** Controller that handles playing [RippleAnimation]. */
class MultiRippleController(private val multipleRippleView: MultiRippleView) {
- private val ripplesFinishedListeners = ArrayList<RipplesFinishedListener>()
-
companion object {
/** Max number of ripple animations at a time. */
@VisibleForTesting const val MAX_RIPPLE_NUMBER = 10
-
- interface RipplesFinishedListener {
- /** Triggered when all the ripples finish running. */
- fun onRipplesFinish()
- }
- }
-
- fun addRipplesFinishedListener(listener: RipplesFinishedListener) {
- ripplesFinishedListeners.add(listener)
}
/** Updates all the ripple colors during the animation. */
@@ -52,9 +41,6 @@ class MultiRippleController(private val multipleRippleView: MultiRippleView) {
rippleAnimation.play {
// Remove ripple once the animation is done
multipleRippleView.ripples.remove(rippleAnimation)
- if (multipleRippleView.ripples.isEmpty()) {
- ripplesFinishedListeners.forEach { listener -> listener.onRipplesFinish() }
- }
}
// Trigger drawing
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
index 9eda7ae2586d..f8e3ecbc0a88 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
@@ -244,9 +244,10 @@ public class MediaControlPanel {
private MultiRippleController mMultiRippleController;
private TurbulenceNoiseController mTurbulenceNoiseController;
private final FeatureFlags mFeatureFlags;
+
+ // TODO(b/281032715): Consider making this as a final variable. For now having a null check
+ // due to unit test failure. (Perhaps missing some setup)
private TurbulenceNoiseAnimationConfig mTurbulenceNoiseAnimationConfig;
- @VisibleForTesting
- MultiRippleController.Companion.RipplesFinishedListener mRipplesFinishedListener;
/**
* Initialize a new control panel
@@ -433,18 +434,6 @@ public class MediaControlPanel {
MultiRippleView multiRippleView = vh.getMultiRippleView();
mMultiRippleController = new MultiRippleController(multiRippleView);
mTurbulenceNoiseController = new TurbulenceNoiseController(vh.getTurbulenceNoiseView());
- if (mFeatureFlags.isEnabled(Flags.UMO_TURBULENCE_NOISE)) {
- mRipplesFinishedListener = () -> {
- if (mTurbulenceNoiseAnimationConfig == null) {
- mTurbulenceNoiseAnimationConfig = createTurbulenceNoiseAnimation();
- }
- // Color will be correctly updated in ColorSchemeTransition.
- mTurbulenceNoiseController.play(mTurbulenceNoiseAnimationConfig);
- mMainExecutor.executeDelayed(
- mTurbulenceNoiseController::finish, TURBULENCE_NOISE_PLAY_DURATION);
- };
- mMultiRippleController.addRipplesFinishedListener(mRipplesFinishedListener);
- }
mColorSchemeTransition = new ColorSchemeTransition(
mContext, mMediaViewHolder, mMultiRippleController, mTurbulenceNoiseController);
@@ -1150,6 +1139,18 @@ public class MediaControlPanel {
action.run();
if (mFeatureFlags.isEnabled(Flags.UMO_SURFACE_RIPPLE)) {
mMultiRippleController.play(createTouchRippleAnimation(button));
+ if (mFeatureFlags.isEnabled(Flags.UMO_TURBULENCE_NOISE)) {
+ if (mTurbulenceNoiseAnimationConfig == null) {
+ mTurbulenceNoiseAnimationConfig =
+ createTurbulenceNoiseAnimation();
+ }
+ // Color will be correctly updated in ColorSchemeTransition.
+ mTurbulenceNoiseController.play(mTurbulenceNoiseAnimationConfig);
+ mMainExecutor.executeDelayed(
+ mTurbulenceNoiseController::finish,
+ TURBULENCE_NOISE_PLAY_DURATION
+ );
+ }
}
if (icon instanceof Animatable) {
@@ -1203,10 +1204,8 @@ public class MediaControlPanel {
/* width= */ mMediaViewHolder.getMultiRippleView().getWidth(),
/* height= */ mMediaViewHolder.getMultiRippleView().getHeight(),
TurbulenceNoiseAnimationConfig.DEFAULT_MAX_DURATION_IN_MILLIS,
- /* easeInDuration= */
- TurbulenceNoiseAnimationConfig.DEFAULT_EASING_DURATION_IN_MILLIS,
- /* easeOutDuration= */
- TurbulenceNoiseAnimationConfig.DEFAULT_EASING_DURATION_IN_MILLIS,
+ /* easeInDuration= */ 2500f,
+ /* easeOutDuration= */ 2500f,
this.getContext().getResources().getDisplayMetrics().density,
BlendMode.PLUS,
/* onAnimationEnd= */ null
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt
index 68c33fb93fe6..ba6f5365c598 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt
@@ -2382,35 +2382,27 @@ public class MediaControlPanelTest : SysuiTestCase() {
}
@Test
- fun onButtonClick_turbulenceNoiseFlagEnabled_createsRipplesFinishedListener() {
- fakeFeatureFlag.set(Flags.UMO_SURFACE_RIPPLE, true)
- fakeFeatureFlag.set(Flags.UMO_TURBULENCE_NOISE, true)
-
- player.attachPlayer(viewHolder)
-
- assertThat(player.mRipplesFinishedListener).isNotNull()
- }
-
- @Test
- fun onButtonClick_turbulenceNoiseFlagDisabled_doesNotCreateRipplesFinishedListener() {
- fakeFeatureFlag.set(Flags.UMO_SURFACE_RIPPLE, true)
- fakeFeatureFlag.set(Flags.UMO_TURBULENCE_NOISE, false)
-
- player.attachPlayer(viewHolder)
-
- assertThat(player.mRipplesFinishedListener).isNull()
- }
-
- @Test
fun playTurbulenceNoise_finishesAfterDuration() {
fakeFeatureFlag.set(Flags.UMO_SURFACE_RIPPLE, true)
fakeFeatureFlag.set(Flags.UMO_TURBULENCE_NOISE, true)
+ val semanticActions =
+ MediaButton(
+ playOrPause =
+ MediaAction(
+ icon = null,
+ action = {},
+ contentDescription = "play",
+ background = null
+ )
+ )
+ val data = mediaData.copy(semanticActions = semanticActions)
player.attachPlayer(viewHolder)
+ player.bindPlayer(data, KEY)
- mainExecutor.execute {
- player.mRipplesFinishedListener.onRipplesFinish()
+ viewHolder.actionPlayPause.callOnClick()
+ mainExecutor.execute {
assertThat(turbulenceNoiseView.visibility).isEqualTo(View.VISIBLE)
clock.advanceTime(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt
index 056e3863f70e..0d19ab1db390 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/surfaceeffects/ripple/MultiRippleControllerTest.kt
@@ -101,52 +101,4 @@ class MultiRippleControllerTest : SysuiTestCase() {
assertThat(multiRippleView.ripples.size).isEqualTo(0)
}
}
-
- @Test
- fun play_onFinishesAllRipples_triggersRipplesFinished() {
- var isTriggered = false
- val listener =
- object : MultiRippleController.Companion.RipplesFinishedListener {
- override fun onRipplesFinish() {
- isTriggered = true
- }
- }
- multiRippleController.addRipplesFinishedListener(listener)
-
- fakeExecutor.execute {
- multiRippleController.play(RippleAnimation(RippleAnimationConfig(duration = 1000)))
- multiRippleController.play(RippleAnimation(RippleAnimationConfig(duration = 2000)))
-
- assertThat(multiRippleView.ripples.size).isEqualTo(2)
-
- fakeSystemClock.advanceTime(2000L)
-
- assertThat(multiRippleView.ripples.size).isEqualTo(0)
- assertThat(isTriggered).isTrue()
- }
- }
-
- @Test
- fun play_notAllRipplesFinished_doesNotTriggerRipplesFinished() {
- var isTriggered = false
- val listener =
- object : MultiRippleController.Companion.RipplesFinishedListener {
- override fun onRipplesFinish() {
- isTriggered = true
- }
- }
- multiRippleController.addRipplesFinishedListener(listener)
-
- fakeExecutor.execute {
- multiRippleController.play(RippleAnimation(RippleAnimationConfig(duration = 1000)))
- multiRippleController.play(RippleAnimation(RippleAnimationConfig(duration = 2000)))
-
- assertThat(multiRippleView.ripples.size).isEqualTo(2)
-
- fakeSystemClock.advanceTime(1000L)
-
- assertThat(multiRippleView.ripples.size).isEqualTo(1)
- assertThat(isTriggered).isFalse()
- }
- }
}