Fix width of Seekbar when enabled but not seekable

Test: manual
Test: atest SeekBarObserverTest
Fixes: 159369236
Change-Id: Iba38e65168b7a748ddc8e3e88267ffbe4ae4e27c
diff --git a/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt b/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt
index 1b9bbdd..c2631c9 100644
--- a/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt
@@ -36,12 +36,11 @@
     /** Updates seek bar views when the data model changes. */
     @UiThread
     override fun onChanged(data: SeekBarViewModel.Progress) {
-        val previouslyEnabled = holder.seekBar.isEnabled
         if (!data.enabled) {
-            holder.seekBar.setEnabled(false)
-            if (previouslyEnabled) {
+            if (holder.seekBar.maxHeight != seekBarDisabledHeight) {
                 holder.seekBar.maxHeight = seekBarDisabledHeight
             }
+            holder.seekBar.setEnabled(false)
             holder.seekBar.getThumb().setAlpha(0)
             holder.seekBar.setProgress(0)
             holder.elapsedTimeView.setText("")
@@ -52,12 +51,8 @@
         holder.seekBar.getThumb().setAlpha(if (data.seekAvailable) 255 else 0)
         holder.seekBar.setEnabled(data.seekAvailable)
 
-        if (previouslyEnabled != holder.seekBar.isEnabled) {
-            holder.seekBar.maxHeight = if (holder.seekBar.isEnabled) {
-                seekBarDefaultMaxHeight
-            } else {
-                seekBarDisabledHeight
-            }
+        if (holder.seekBar.maxHeight != seekBarDefaultMaxHeight) {
+            holder.seekBar.maxHeight = seekBarDefaultMaxHeight
         }
 
         data.elapsedTime?.let {
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 75018df..e9a0a40 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt
@@ -22,6 +22,7 @@
 import android.widget.SeekBar
 import android.widget.TextView
 import androidx.test.filters.SmallTest
+import com.android.systemui.R
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth.assertThat
 import org.junit.Before
@@ -36,6 +37,9 @@
 @TestableLooper.RunWithLooper
 public class SeekBarObserverTest : SysuiTestCase() {
 
+    private val disabledHeight = 1
+    private val enabledHeight = 2
+
     private lateinit var observer: SeekBarObserver
     @Mock private lateinit var mockHolder: PlayerViewHolder
     private lateinit var seekBarView: SeekBar
@@ -45,12 +49,19 @@
     @Before
     fun setUp() {
         mockHolder = mock(PlayerViewHolder::class.java)
+
+        context.orCreateTestableResources
+            .addOverride(R.dimen.qs_media_enabled_seekbar_height, enabledHeight)
+        context.orCreateTestableResources
+            .addOverride(R.dimen.qs_media_disabled_seekbar_height, disabledHeight)
+
         seekBarView = SeekBar(context)
         elapsedTimeView = TextView(context)
         totalTimeView = TextView(context)
         whenever(mockHolder.seekBar).thenReturn(seekBarView)
         whenever(mockHolder.elapsedTimeView).thenReturn(elapsedTimeView)
         whenever(mockHolder.totalTimeView).thenReturn(totalTimeView)
+
         observer = SeekBarObserver(mockHolder)
     }
 
@@ -60,11 +71,12 @@
         val isEnabled = false
         val data = SeekBarViewModel.Progress(isEnabled, false, null, null)
         observer.onChanged(data)
-        // THEN seek bar shows just a line with no text
+        // THEN seek bar shows just a thin line with no text
         assertThat(seekBarView.isEnabled()).isFalse()
         assertThat(seekBarView.getThumb().getAlpha()).isEqualTo(0)
         assertThat(elapsedTimeView.getText()).isEqualTo("")
         assertThat(totalTimeView.getText()).isEqualTo("")
+        assertThat(seekBarView.maxHeight).isEqualTo(disabledHeight)
     }
 
     @Test
@@ -73,10 +85,11 @@
         val isEnabled = true
         val data = SeekBarViewModel.Progress(isEnabled, true, 3000, 12000)
         observer.onChanged(data)
-        // THEN seek bar is visible
+        // THEN seek bar is visible and thick
         assertThat(seekBarView.getVisibility()).isEqualTo(View.VISIBLE)
         assertThat(elapsedTimeView.getVisibility()).isEqualTo(View.VISIBLE)
         assertThat(totalTimeView.getVisibility()).isEqualTo(View.VISIBLE)
+        assertThat(seekBarView.maxHeight).isEqualTo(enabledHeight)
     }
 
     @Test