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

Commit c3165ba8 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Merge cherrypicks of ['ag/20327583'] into security-aosp-tm-release.

Change-Id: I0b43fd0027ada8b8178686c828f5534f1fa36897
parents 6f44b5ef 5e457e2a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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) {
+18 −1
Original line number Diff line number Diff line
@@ -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)