summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-02-24 14:45:09 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-24 14:45:09 -0800
commit40747bb13ccdf42d1c15219fa492a140b78e8e95 (patch)
tree6c02e880577adbf8e0a4b2f6746abb5e81716e32
parentcefbb15c069f5b0f9c9dc6276158b42cd08aa357 (diff)
parent0250eecf3aaea33ae29be33798297819a224d37e (diff)
Merge "Revert "Update media progress bar content description"" into main
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt35
-rw-r--r--packages/SystemUI/res/values/strings.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt63
3 files changed, 17 insertions, 85 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt
index 943ada9346e7..4e14fec8408f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt
@@ -18,9 +18,6 @@ package com.android.systemui.media.controls.ui.binder
import android.animation.Animator
import android.animation.ObjectAnimator
-import android.icu.text.MeasureFormat
-import android.icu.util.Measure
-import android.icu.util.MeasureUnit
import android.testing.TestableLooper
import android.view.View
import android.widget.SeekBar
@@ -33,7 +30,6 @@ import com.android.systemui.media.controls.ui.view.MediaViewHolder
import com.android.systemui.media.controls.ui.viewmodel.SeekBarViewModel
import com.android.systemui.res.R
import com.google.common.truth.Truth.assertThat
-import java.util.Locale
import org.junit.Before
import org.junit.Rule
import org.junit.Test
@@ -65,11 +61,11 @@ class SeekBarObserverTest : SysuiTestCase() {
fun setUp() {
context.orCreateTestableResources.addOverride(
R.dimen.qs_media_enabled_seekbar_height,
- enabledHeight,
+ enabledHeight
)
context.orCreateTestableResources.addOverride(
R.dimen.qs_media_disabled_seekbar_height,
- disabledHeight,
+ disabledHeight
)
seekBarView = SeekBar(context)
@@ -114,31 +110,14 @@ class SeekBarObserverTest : SysuiTestCase() {
@Test
fun seekBarProgress() {
- val elapsedTime = 3000
- val duration = (1.5 * 60 * 60 * 1000).toInt()
// WHEN part of the track has been played
- val data = SeekBarViewModel.Progress(true, true, true, false, elapsedTime, duration, true)
+ val data = SeekBarViewModel.Progress(true, true, true, false, 3000, 120000, true)
observer.onChanged(data)
// THEN seek bar shows the progress
- assertThat(seekBarView.progress).isEqualTo(elapsedTime)
- assertThat(seekBarView.max).isEqualTo(duration)
-
- val expectedProgress =
- MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE)
- .formatMeasures(Measure(3, MeasureUnit.SECOND))
- val expectedDuration =
- MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE)
- .formatMeasures(
- Measure(1, MeasureUnit.HOUR),
- Measure(30, MeasureUnit.MINUTE),
- Measure(0, MeasureUnit.SECOND),
- )
- val desc =
- context.getString(
- R.string.controls_media_seekbar_description,
- expectedProgress,
- expectedDuration,
- )
+ assertThat(seekBarView.progress).isEqualTo(3000)
+ assertThat(seekBarView.max).isEqualTo(120000)
+
+ val desc = context.getString(R.string.controls_media_seekbar_description, "00:03", "02:00")
assertThat(seekBarView.contentDescription).isEqualTo(desc)
}
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 084495f4b196..6ade48fbf210 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -3176,8 +3176,8 @@
<string name="controls_media_settings_button">Settings</string>
<!-- Description for media control's playing media item, including information for the media's title, the artist, and source app [CHAR LIMIT=NONE]-->
<string name="controls_media_playing_item_description"><xliff:g id="song_name" example="Daily mix">%1$s</xliff:g> by <xliff:g id="artist_name" example="Various artists">%2$s</xliff:g> is playing from <xliff:g id="app_label" example="Spotify">%3$s</xliff:g></string>
- <!-- Content description for media controls progress bar [CHAR_LIMIT=NONE] -->
- <string name="controls_media_seekbar_description"><xliff:g id="elapsed_time" example="1 hour 2 minutes 30 seconds">%1$s</xliff:g> of <xliff:g id="total_time" example="4 hours 5 seconds">%2$s</xliff:g></string>
+ <!-- Content description for media cotnrols progress bar [CHAR_LIMIT=NONE] -->
+ <string name="controls_media_seekbar_description"><xliff:g id="elapsed_time" example="1:30">%1$s</xliff:g> of <xliff:g id="total_time" example="3:00">%2$s</xliff:g></string>
<!-- Placeholder title to inform user that an app has posted media controls [CHAR_LIMIT=NONE] -->
<string name="controls_media_empty_title"><xliff:g id="app_name" example="Foo Music App">%1$s</xliff:g> is running</string>
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt
index c9716be52408..34f7c4dcaec0 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt
@@ -18,9 +18,6 @@ package com.android.systemui.media.controls.ui.binder
import android.animation.Animator
import android.animation.ObjectAnimator
-import android.icu.text.MeasureFormat
-import android.icu.util.Measure
-import android.icu.util.MeasureUnit
import android.text.format.DateUtils
import androidx.annotation.UiThread
import androidx.lifecycle.Observer
@@ -31,11 +28,8 @@ import com.android.systemui.media.controls.ui.drawable.SquigglyProgress
import com.android.systemui.media.controls.ui.view.MediaViewHolder
import com.android.systemui.media.controls.ui.viewmodel.SeekBarViewModel
import com.android.systemui.res.R
-import java.util.Locale
private const val TAG = "SeekBarObserver"
-private const val MIN_IN_SEC = 60
-private const val HOUR_IN_SEC = MIN_IN_SEC * 60
/**
* Observer for changes from SeekBarViewModel.
@@ -133,9 +127,10 @@ open class SeekBarObserver(private val holder: MediaViewHolder) :
}
holder.seekBar.setMax(data.duration)
- val totalTimeDescription = formatTimeContentDescription(data.duration)
+ val totalTimeString =
+ DateUtils.formatElapsedTime(data.duration / DateUtils.SECOND_IN_MILLIS)
if (data.scrubbing) {
- holder.scrubbingTotalTimeView.text = formatTimeLabel(data.duration)
+ holder.scrubbingTotalTimeView.text = totalTimeString
}
data.elapsedTime?.let {
@@ -153,62 +148,20 @@ open class SeekBarObserver(private val holder: MediaViewHolder) :
}
}
- val elapsedTimeDescription = formatTimeContentDescription(it)
+ val elapsedTimeString = DateUtils.formatElapsedTime(it / DateUtils.SECOND_IN_MILLIS)
if (data.scrubbing) {
- holder.scrubbingElapsedTimeView.text = formatTimeLabel(it)
+ holder.scrubbingElapsedTimeView.text = elapsedTimeString
}
holder.seekBar.contentDescription =
holder.seekBar.context.getString(
R.string.controls_media_seekbar_description,
- elapsedTimeDescription,
- totalTimeDescription,
+ elapsedTimeString,
+ totalTimeString
)
}
}
- /** Returns a time string suitable for display, e.g. "12:34" */
- private fun formatTimeLabel(milliseconds: Int): CharSequence {
- return DateUtils.formatElapsedTime(milliseconds / DateUtils.SECOND_IN_MILLIS)
- }
-
- /**
- * Returns a time string suitable for content description, e.g. "12 minutes 34 seconds"
- *
- * Follows same logic as Chronometer#formatDuration
- */
- private fun formatTimeContentDescription(milliseconds: Int): CharSequence {
- var seconds = milliseconds / DateUtils.SECOND_IN_MILLIS
-
- val hours =
- if (seconds >= HOUR_IN_SEC) {
- seconds / HOUR_IN_SEC
- } else {
- 0
- }
- seconds -= hours * HOUR_IN_SEC
-
- val minutes =
- if (seconds >= MIN_IN_SEC) {
- seconds / MIN_IN_SEC
- } else {
- 0
- }
- seconds -= minutes * MIN_IN_SEC
-
- val measures = arrayListOf<Measure>()
- if (hours > 0) {
- measures.add(Measure(hours, MeasureUnit.HOUR))
- }
- if (minutes > 0) {
- measures.add(Measure(minutes, MeasureUnit.MINUTE))
- }
- measures.add(Measure(seconds, MeasureUnit.SECOND))
-
- return MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE)
- .formatMeasures(*measures.toTypedArray())
- }
-
@VisibleForTesting
open fun buildResetAnimator(targetTime: Int): Animator {
val animator =
@@ -216,7 +169,7 @@ open class SeekBarObserver(private val holder: MediaViewHolder) :
holder.seekBar,
"progress",
holder.seekBar.progress,
- targetTime + RESET_ANIMATION_DURATION_MS,
+ targetTime + RESET_ANIMATION_DURATION_MS
)
animator.setAutoCancel(true)
animator.duration = RESET_ANIMATION_DURATION_MS.toLong()