Add recommendation view holder to controller

Adding recommendation view holder in media view controller to be
accessed by carousel controller when needed to update view.

Flag: ACONFIG com.android.systemui.media_controls_refactor DISABLED
Bug: 328207006
Test: Build.
Change-Id: I71ca70a56ec60cde908373b22d7f02d25a2e8185
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaRecommendationsViewBinder.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaRecommendationsViewBinder.kt
index 9c6d59e..fe13da6 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaRecommendationsViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/MediaRecommendationsViewBinder.kt
@@ -239,7 +239,7 @@
         set.setAlpha(resId, if (visible) 1.0f else 0.0f)
     }
 
-    private fun updateRecommendationsVisibility(
+    fun updateRecommendationsVisibility(
         mediaViewController: MediaViewController,
         cardView: TransitionLayout,
     ) {
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 7fced5f8..2b59858 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
@@ -37,6 +37,7 @@
 import com.android.systemui.media.controls.ui.animation.ColorSchemeTransition
 import com.android.systemui.media.controls.ui.animation.MetadataAnimationHandler
 import com.android.systemui.media.controls.ui.binder.MediaControlViewBinder
+import com.android.systemui.media.controls.ui.binder.MediaRecommendationsViewBinder
 import com.android.systemui.media.controls.ui.binder.SeekBarObserver
 import com.android.systemui.media.controls.ui.controller.MediaCarouselController.Companion.calculateAlpha
 import com.android.systemui.media.controls.ui.view.GutsViewHolder
@@ -185,7 +186,10 @@
     private var nextNotVisibleValue = ConstraintSet.GONE
     private var isNextButtonAvailable = false
 
-    private lateinit var mediaViewHolder: MediaViewHolder
+    /** View holders for controller */
+    lateinit var recommendationViewHolder: RecommendationViewHolder
+    lateinit var mediaViewHolder: MediaViewHolder
+
     private lateinit var seekBarObserver: SeekBarObserver
     private lateinit var turbulenceNoiseController: TurbulenceNoiseController
     private lateinit var loadingEffect: LoadingEffect
@@ -788,6 +792,15 @@
         }
     }
 
+    fun attachRecommendations(recommendationViewHolder: RecommendationViewHolder) {
+        if (!mediaFlags.isMediaControlsRefactorEnabled()) return
+        this.recommendationViewHolder = recommendationViewHolder
+
+        attach(recommendationViewHolder.recommendations, TYPE.RECOMMENDATION)
+        recsConfigurationChangeListener =
+            MediaRecommendationsViewBinder::updateRecommendationsVisibility
+    }
+
     fun bindSeekBar(onSeek: () -> Unit, onBindSeekBar: (SeekBarViewModel) -> Unit) {
         if (!mediaFlags.isMediaControlsRefactorEnabled()) return
         seekBarViewModel.logSeek = onSeek