From bf4d73f6ba18b77538cc18a86a1d3e5c98189c11 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Wed, 2 Nov 2022 16:20:19 -0400 Subject: [PATCH] Disable click on privacy chip before provision Test: atest QuickStatusBarHeaderControllerTest Bug: 253043058 Change-Id: I8099dfd259b149cd18509677d623de7a352f5de0 Merged-In: I9c8f642976f3332f4d5c9db89a4917dae501f251 --- .../qs/QuickStatusBarHeaderController.java | 18 ++++- .../qs/QuickStatusBarHeaderControllerTest.kt | 73 ++++++++++++++++++- 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java index 18d6e646b0075..dc9f2ce69f9d1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java @@ -41,6 +41,7 @@ import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusIconContainer; import com.android.systemui.statusbar.policy.Clock; +import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.VariableDateViewController; import com.android.systemui.util.ViewController; @@ -71,6 +72,7 @@ class QuickStatusBarHeaderController extends ViewController() + verify(privacyChip).setOnClickListener(capture(captor)) + + captor.value.onClick(privacyChip) + + verify(privacyDialogController, never()).showDialog(any(Context::class.java)) + } + + @Test + fun testDeviceNotProvisionedBeforeInit_provisionedAfter_clickOnChipDoesntShowDialog() { + deviceProvisionedController.provisioned = false + controller.init() + + deviceProvisionedController.provisioned = true + + val captor = argumentCaptor() + verify(privacyChip).setOnClickListener(capture(captor)) + + captor.value.onClick(privacyChip) + + verify(privacyDialogController).showDialog(any(Context::class.java)) + } + private fun stubViews() { `when`(view.findViewById(anyInt())).thenReturn(mockView) `when`(view.findViewById(R.id.carrier_group)).thenReturn(qsCarrierGroup) @@ -293,4 +328,40 @@ class QuickStatusBarHeaderControllerTest : SysuiTestCase() { `when`(privacyItemController.micCameraAvailable).thenReturn(micCamera) `when`(privacyItemController.locationAvailable).thenReturn(location) } + + // We only care about device provisioned + class FakeDeviceProvisionedController : DeviceProvisionedController { + val callbacks = mutableSetOf() + var provisioned = false + set(value) { + if (field != value) { + field = value + callbacks.forEach { it.onDeviceProvisionedChanged() } + } + } + + override fun addCallback(listener: DeviceProvisionedController.DeviceProvisionedListener) { + if (callbacks.add(listener)) { + listener.onDeviceProvisionedChanged() + } + } + + override fun removeCallback( + listener: DeviceProvisionedController.DeviceProvisionedListener + ) { + callbacks.remove(listener) + } + + override fun isDeviceProvisioned(): Boolean { + return provisioned + } + + override fun isUserSetup(currentUser: Int): Boolean { + return true + } + + override fun getCurrentUser(): Int { + return 0 + } + } }