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

Commit 8768c0b8 authored by Johannes Gallmann's avatar Johannes Gallmann Committed by Android (Google) Code Review
Browse files

Merge "Fix launch animation for PrivacyDialog and reenable dismiss anim" into main

parents 64a7e446 c9d4fdeb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@
    tools:parentTag="com.android.systemui.privacy.OngoingPrivacyChip">
    >

        <LinearLayout
        <com.android.systemui.animation.view.LaunchableLinearLayout
            android:id="@+id/icons_container"
            android:layout_height="@dimen/ongoing_appops_chip_height"
            android:layout_width="wrap_content"
+4 −2
Original line number Diff line number Diff line
@@ -23,11 +23,11 @@ import android.view.Gravity.END
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import com.android.settingslib.Utils
import com.android.systemui.res.R
import com.android.systemui.animation.view.LaunchableFrameLayout
import com.android.systemui.statusbar.events.BackgroundAnimatableView

class OngoingPrivacyChip @JvmOverloads constructor(
@@ -35,7 +35,7 @@ class OngoingPrivacyChip @JvmOverloads constructor(
    attrs: AttributeSet? = null,
    defStyleAttrs: Int = 0,
    defStyleRes: Int = 0
) : LaunchableFrameLayout(context, attrs, defStyleAttrs, defStyleRes), BackgroundAnimatableView {
) : FrameLayout(context, attrs, defStyleAttrs, defStyleRes), BackgroundAnimatableView {

    private var configuration: Configuration
    private var iconMargin = 0
@@ -43,6 +43,8 @@ class OngoingPrivacyChip @JvmOverloads constructor(
    private var iconColor = 0

    private val iconsContainer: LinearLayout
    val launchableContentView
        get() = iconsContainer

    var privacyList = emptyList<PrivacyItem>()
        set(value) {
+10 −7
Original line number Diff line number Diff line
@@ -26,9 +26,9 @@ import android.content.pm.PackageManager
import android.os.UserHandle
import android.permission.PermissionGroupUsage
import android.permission.PermissionManager
import android.view.View
import androidx.annotation.MainThread
import androidx.annotation.WorkerThread
import androidx.core.view.isVisible
import com.android.internal.logging.UiEventLogger
import com.android.systemui.animation.DialogLaunchAnimator
import com.android.systemui.appops.AppOpsController
@@ -214,7 +214,7 @@ class PrivacyDialogControllerV2(
     * @param context A context to use to create the dialog.
     * @see filterAndSelect
     */
    fun showDialog(context: Context, view: View? = null) {
    fun showDialog(context: Context, privacyChip: OngoingPrivacyChip? = null) {
        dismissDialog()
        backgroundExecutor.execute {
            val usage = permGroupUsage()
@@ -277,8 +277,8 @@ class PrivacyDialogControllerV2(
                        )
                    d.setShowForAllUsers(true)
                    d.addOnDismissListener(onDialogDismissed)
                    if (view != null) {
                        val controller = getPrivacyDialogController(view)
                    if (privacyChip != null) {
                        val controller = getPrivacyDialogController(privacyChip)
                        if (controller == null) {
                            d.show()
                        } else {
@@ -296,10 +296,13 @@ class PrivacyDialogControllerV2(
        }
    }

    private fun getPrivacyDialogController(source: View): DialogLaunchAnimator.Controller? {
        val delegate = DialogLaunchAnimator.Controller.fromView(source) ?: return null
    private fun getPrivacyDialogController(
        source: OngoingPrivacyChip
    ): DialogLaunchAnimator.Controller? {
        val delegate =
            DialogLaunchAnimator.Controller.fromView(source.launchableContentView) ?: return null
        return object : DialogLaunchAnimator.Controller by delegate {
            override fun shouldAnimateExit() = false
            override fun shouldAnimateExit() = source.isVisible
        }
    }

+1 −6
Original line number Diff line number Diff line
@@ -30,13 +30,11 @@ import android.os.UserHandle
import android.permission.PermissionGroupUsage
import android.permission.PermissionManager
import android.testing.AndroidTestingRunner
import android.view.View
import android.widget.LinearLayout
import androidx.test.filters.SmallTest
import com.android.internal.logging.UiEventLogger
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.DialogLaunchAnimator
import com.android.systemui.animation.LaunchableView
import com.android.systemui.appops.AppOpsController
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.privacy.logging.PrivacyLogger
@@ -206,10 +204,7 @@ class PrivacyDialogControllerV2Test : SysuiTestCase() {
    @Test
    fun testShowDialogShowsDialogWithView() {
        val parent = LinearLayout(context)
        val view =
            object : View(context), LaunchableView {
                override fun setShouldBlockVisibilityChanges(block: Boolean) {}
            }
        val view = OngoingPrivacyChip(context)
        parent.addView(view)
        val usage = createMockPermGroupUsage()
        `when`(permissionManager.getIndicatorAppOpUsageData(anyBoolean())).thenReturn(listOf(usage))
+3 −3
Original line number Diff line number Diff line
@@ -173,7 +173,7 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
        captor.value.onClick(privacyChip)
        verify(privacyDialogController).showDialog(any(Context::class.java))
        verify(privacyDialogControllerV2, never())
            .showDialog(any(Context::class.java), any(View::class.java))
            .showDialog(any(Context::class.java), any(OngoingPrivacyChip::class.java))
    }

    @Test
@@ -186,7 +186,7 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
        captor.value.onClick(privacyChip)
        verify(privacyDialogController).showDialog(any(Context::class.java))
        verify(privacyDialogControllerV2, never())
                .showDialog(any(Context::class.java), any(View::class.java))
                .showDialog(any(Context::class.java), any(OngoingPrivacyChip::class.java))
    }

    @Test
@@ -207,7 +207,7 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
        captor.value.onClick(privacyChip)
        verify(privacyDialogController, never()).showDialog(any(Context::class.java))
        verify(privacyDialogControllerV2, never())
            .showDialog(any(Context::class.java), any(View::class.java))
            .showDialog(any(Context::class.java), any(OngoingPrivacyChip::class.java))
    }

    @Test