MediaContainerView: Bind KeyguardMediaController visibility to MediaContainerView's visibility
MediaContainerView's visibility is decided by KeyguardMediaController but it is managed by View's visibility (this.gone= getVisibility() == GONE) and View visibility could be changed.
This CL bind KeyguardMediaController visible to MediaContainerView's visibility with MediaContainerViewState.
Bug: 298213983
Test: presubmit
Flag: ACONFIG com.android.systemui.bind_keyguard_media_visibility DEVELOPMENT
Change-Id: I28127caaea059a7bcbac9ffef46950bedc1c401e
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 71f9ba27..2dd3b09 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -529,3 +529,13 @@
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "bind_keyguard_media_visibility"
+ namespace: "systemui"
+ description: "Binds Keyguard Media Controller Visibility to MediaContainerView"
+ bug: "298213983"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt
index d0c6a46..5551ab4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MediaContainerView.kt
@@ -23,6 +23,7 @@
import android.graphics.RectF
import android.util.AttributeSet
import android.util.Log
+import com.android.systemui.Flags
import com.android.systemui.res.R
import com.android.systemui.statusbar.notification.row.ExpandableView
@@ -90,11 +91,27 @@
}
override fun setVisibility(visibility: Int) {
- super.setVisibility(visibility)
+ if (Flags.bindKeyguardMediaVisibility()) {
+ if (isVisibilityValid(visibility)) {
+ super.setVisibility(visibility)
+ }
+ } else {
+ super.setVisibility(visibility)
+ }
+
assertMediaContainerVisibility(visibility)
}
/**
+ * visibility should be aligned with MediaContainerView visibility on the keyguard.
+ */
+ private fun isVisibilityValid(visibility: Int): Boolean {
+ val currentViewState = viewState as? MediaContainerViewState ?: return true
+ val shouldBeGone = !currentViewState.shouldBeVisible
+ return if (shouldBeGone) visibility == GONE else visibility != GONE
+ }
+
+ /**
* b/298213983
* MediaContainerView's visibility is changed to VISIBLE when it should be GONE.
* This method check this state and logs.