From 1c07d1231b1ce8c235db2cbe6e8aca4a97d6a32f Mon Sep 17 00:00:00 2001 From: Hawkwood Glazier Date: Wed, 1 Jun 2022 16:26:19 +0000 Subject: [PATCH] Prevent updating of seekbar text when not scrubbing. This prevents the device from waking every 100ms to do measure/layout (even when the screen is off) due the scrubbing text fields updating. Test: Manual Fixes: 234078584 Fixes: 231049108 Change-Id: Ie1362762bfe3dd3c4204ea53561a9657bf314b41 --- .../android/systemui/media/SeekBarObserver.kt | 9 +++++-- .../systemui/media/SeekBarObserverTest.kt | 24 +++++++++++++++---- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt b/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt index 60ef85d0b5024..121021f19f709 100644 --- a/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt +++ b/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt @@ -99,7 +99,9 @@ open class SeekBarObserver( holder.seekBar.setMax(data.duration) val totalTimeString = DateUtils.formatElapsedTime( data.duration / DateUtils.SECOND_IN_MILLIS) - holder.scrubbingTotalTimeView.text = totalTimeString + if (data.scrubbing) { + holder.scrubbingTotalTimeView.text = totalTimeString + } data.elapsedTime?.let { if (!data.scrubbing && !(seekBarResetAnimator?.isRunning ?: false)) { @@ -113,9 +115,12 @@ open class SeekBarObserver( holder.seekBar.progress = it } } + val elapsedTimeString = DateUtils.formatElapsedTime( it / DateUtils.SECOND_IN_MILLIS) - holder.scrubbingElapsedTimeView.text = elapsedTimeString + if (data.scrubbing) { + holder.scrubbingElapsedTimeView.text = elapsedTimeString + } holder.seekBar.contentDescription = holder.seekBar.context.getString( R.string.controls_media_seekbar_description, diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt index 49be669bb4a51..9e9cda843c8fc 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt @@ -178,8 +178,10 @@ class SeekBarObserverTest : SysuiTestCase() { } @Test - fun seekBarProgress_enabled_timeViewsHaveTime() { - val data = SeekBarViewModel.Progress(enabled = true, true, true, false, 3000, 120000) + fun seekBarProgress_enabledAndScrubbing_timeViewsHaveTime() { + val isEnabled = true + val isScrubbing = true + val data = SeekBarViewModel.Progress(isEnabled, true, true, isScrubbing, 3000, 120000) observer.onChanged(data) @@ -188,8 +190,22 @@ class SeekBarObserverTest : SysuiTestCase() { } @Test - fun seekBarProgress_disabled_timeViewsEmpty() { - val data = SeekBarViewModel.Progress(enabled = false, true, true, false, 3000, 120000) + fun seekBarProgress_disabledAndScrubbing_timeViewsEmpty() { + val isEnabled = false + val isScrubbing = true + val data = SeekBarViewModel.Progress(isEnabled, true, true, isScrubbing, 3000, 120000) + + observer.onChanged(data) + + assertThat(scrubbingElapsedTimeView.text).isEqualTo("") + assertThat(scrubbingTotalTimeView.text).isEqualTo("") + } + + @Test + fun seekBarProgress_enabledAndNotScrubbing_timeViewsEmpty() { + val isEnabled = true + val isScrubbing = false + val data = SeekBarViewModel.Progress(isEnabled, true, true, isScrubbing, 3000, 120000) observer.onChanged(data)