diff options
| author | 2024-01-24 16:21:30 +0000 | |
|---|---|---|
| committer | 2024-01-24 16:21:30 +0000 | |
| commit | 8768c0b86bdae2ccae7c045d6d04eb1c43d7a201 (patch) | |
| tree | ce93353e8fe2177dad4acb1f0a4c9637c18fdb50 | |
| parent | 64a7e4464632f8ff755ed890247d751195bb6f03 (diff) | |
| parent | c9d4fdeb53e6ce13bb46c2197c1a57c40498d54b (diff) | |
Merge "Fix launch animation for PrivacyDialog and reenable dismiss anim" into main
5 files changed, 19 insertions, 19 deletions
diff --git a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml b/packages/SystemUI/res/layout/ongoing_privacy_chip.xml index 2c7467d726b4..fab7840a6a51 100644 --- a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml +++ b/packages/SystemUI/res/layout/ongoing_privacy_chip.xml @@ -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" diff --git a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyChip.kt b/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyChip.kt index 8e1b00d825aa..7a4be3fdc93b 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyChip.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/OngoingPrivacyChip.kt @@ -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) { diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogControllerV2.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogControllerV2.kt index 76ef8a2b813c..f121630d180e 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogControllerV2.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialogControllerV2.kt @@ -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 } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt index e4432f3038bc..0636831c7c66 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyDialogControllerV2Test.kt @@ -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)) diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt index fa02e8cb3e54..f98b68f2309b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/HeaderPrivacyIconsControllerTest.kt @@ -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 |