Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 31c681b9 authored by Ibrahim Yilmaz's avatar Ibrahim Yilmaz
Browse files

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
parent a16a3521
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -529,3 +529,13 @@ flag {
        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
    }
}
+18 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.graphics.Path
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,10 +91,26 @@ class MediaContainerView(context: Context, attrs: AttributeSet?) : ExpandableVie
    }

    override fun setVisibility(visibility: Int) {
        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.