Merge "Disallow clicks on privacy chip before provisioned" into tm-dev am: d19f3a7862 am: cd5c3bb95a am: ecb7782102
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20327583 Change-Id: Id94c8e138951fbee86c0c75819e78fc26562c417 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -26,6 +26,7 @@ import java.util.concurrent.Executor
|
||||
import javax.inject.Inject
|
||||
import com.android.systemui.dagger.qualifiers.Background
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController
|
||||
|
||||
interface ChipVisibilityListener {
|
||||
fun onChipVisibilityRefreshed(visible: Boolean)
|
||||
@@ -54,7 +55,8 @@ class HeaderPrivacyIconsController @Inject constructor(
|
||||
private val activityStarter: ActivityStarter,
|
||||
private val appOpsController: AppOpsController,
|
||||
private val broadcastDispatcher: BroadcastDispatcher,
|
||||
private val safetyCenterManager: SafetyCenterManager
|
||||
private val safetyCenterManager: SafetyCenterManager,
|
||||
private val deviceProvisionedController: DeviceProvisionedController
|
||||
) {
|
||||
|
||||
var chipVisibilityListener: ChipVisibilityListener? = null
|
||||
@@ -134,6 +136,8 @@ class HeaderPrivacyIconsController @Inject constructor(
|
||||
|
||||
fun onParentVisible() {
|
||||
privacyChip.setOnClickListener {
|
||||
// Do not expand dialog while device is not provisioned
|
||||
if (!deviceProvisionedController.isDeviceProvisioned) return@setOnClickListener
|
||||
// If the privacy chip is visible, it means there were some indicators
|
||||
uiEventLogger.log(PrivacyChipEvent.ONGOING_INDICATORS_CHIP_CLICK)
|
||||
if (safetyCenterEnabled) {
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.android.systemui.privacy.PrivacyDialogController
|
||||
import com.android.systemui.privacy.PrivacyItemController
|
||||
import com.android.systemui.privacy.logging.PrivacyLogger
|
||||
import com.android.systemui.statusbar.phone.StatusIconContainer
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController
|
||||
import com.android.systemui.util.concurrency.FakeExecutor
|
||||
import com.android.systemui.util.mockito.any
|
||||
import com.android.systemui.util.mockito.argumentCaptor
|
||||
@@ -66,6 +67,8 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
||||
private lateinit var broadcastDispatcher: BroadcastDispatcher
|
||||
@Mock
|
||||
private lateinit var safetyCenterManager: SafetyCenterManager
|
||||
@Mock
|
||||
private lateinit var deviceProvisionedController: DeviceProvisionedController
|
||||
|
||||
private val uiExecutor = FakeExecutor(FakeSystemClock())
|
||||
private val backgroundExecutor = FakeExecutor(FakeSystemClock())
|
||||
@@ -80,6 +83,7 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
||||
whenever(privacyChip.context).thenReturn(context)
|
||||
whenever(privacyChip.resources).thenReturn(context.resources)
|
||||
whenever(privacyChip.isAttachedToWindow).thenReturn(true)
|
||||
whenever(deviceProvisionedController.isDeviceProvisioned).thenReturn(true)
|
||||
|
||||
cameraSlotName = context.getString(com.android.internal.R.string.status_bar_camera)
|
||||
microphoneSlotName = context.getString(com.android.internal.R.string.status_bar_microphone)
|
||||
@@ -98,7 +102,8 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
||||
activityStarter,
|
||||
appOpsController,
|
||||
broadcastDispatcher,
|
||||
safetyCenterManager
|
||||
safetyCenterManager,
|
||||
deviceProvisionedController
|
||||
)
|
||||
|
||||
backgroundExecutor.runAllReady()
|
||||
@@ -199,6 +204,18 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNoDialogWhenDeviceNotProvisioned() {
|
||||
whenever(deviceProvisionedController.isDeviceProvisioned).thenReturn(false)
|
||||
controller.onParentVisible()
|
||||
|
||||
val captor = argumentCaptor<View.OnClickListener>()
|
||||
verify(privacyChip).setOnClickListener(capture(captor))
|
||||
|
||||
captor.value.onClick(privacyChip)
|
||||
verify(privacyDialogController, never()).showDialog(any(Context::class.java))
|
||||
}
|
||||
|
||||
private fun setPrivacyController(micCamera: Boolean, location: Boolean) {
|
||||
whenever(privacyItemController.micCameraAvailable).thenReturn(micCamera)
|
||||
whenever(privacyItemController.locationAvailable).thenReturn(location)
|
||||
|
||||
Reference in New Issue
Block a user