Refresh state when updating seekbar visibility

The issue was not with the comparison algorithm. It seems we used to
rely on media notification updates to update seekbar visibility. We need
to refresh the state to get an immediate update on seekbar to show.

Flag: EXEMPT bugfix
Fixes: 373533563
Test: Checked UI.
Change-Id: I997454739600aad9cfd46c8767fbd641025233c3
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
index dccf61d..2bf6a10 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
@@ -435,6 +435,12 @@
         }
         this.mIsSeekBarEnabled = isSeekBarEnabled;
         updateSeekBarVisibility();
+        mMainExecutor.execute(() -> {
+            if (!mMetadataAnimationHandler.isRunning()) {
+                // Trigger a state refresh so that we immediately update visibilities.
+                mMediaViewController.refreshState();
+            }
+        });
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
index 975f8f4..c00e14c 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt
@@ -225,6 +225,12 @@
                 if (isSeekBarEnabled == enabled) return
                 isSeekBarEnabled = enabled
                 MediaControlViewBinder.updateSeekBarVisibility(expandedLayout, isSeekBarEnabled)
+                mainExecutor.execute {
+                    if (!metadataAnimationHandler.isRunning) {
+                        // Trigger a state refresh so that we immediately update visibilities.
+                        refreshState()
+                    }
+                }
             }
         }
 
@@ -899,7 +905,11 @@
             // If the view isn't bound, we can drop the animation, otherwise we'll execute it
             animateNextStateChange = false
             if (transitionLayout == null) {
-                logger.logMediaLocation("setCurrentState: view not bound", startLocation, endLocation)
+                logger.logMediaLocation(
+                    "setCurrentState: view not bound",
+                    startLocation,
+                    endLocation,
+                )
                 return
             }