Merge "[DO NOT MERGE] Disallow clicks on privacy chip before provisioned" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8579c6ee65
@@ -11,6 +11,7 @@ import com.android.systemui.privacy.PrivacyItemController
|
|||||||
import com.android.systemui.privacy.logging.PrivacyLogger
|
import com.android.systemui.privacy.logging.PrivacyLogger
|
||||||
import com.android.systemui.statusbar.phone.StatusIconContainer
|
import com.android.systemui.statusbar.phone.StatusIconContainer
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import com.android.systemui.statusbar.policy.DeviceProvisionedController
|
||||||
|
|
||||||
interface ChipVisibilityListener {
|
interface ChipVisibilityListener {
|
||||||
fun onChipVisibilityRefreshed(visible: Boolean)
|
fun onChipVisibilityRefreshed(visible: Boolean)
|
||||||
@@ -32,7 +33,8 @@ class HeaderPrivacyIconsController @Inject constructor(
|
|||||||
private val privacyChip: OngoingPrivacyChip,
|
private val privacyChip: OngoingPrivacyChip,
|
||||||
private val privacyDialogController: PrivacyDialogController,
|
private val privacyDialogController: PrivacyDialogController,
|
||||||
private val privacyLogger: PrivacyLogger,
|
private val privacyLogger: PrivacyLogger,
|
||||||
private val iconContainer: StatusIconContainer
|
private val iconContainer: StatusIconContainer,
|
||||||
|
private val deviceProvisionedController: DeviceProvisionedController
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var chipVisibilityListener: ChipVisibilityListener? = null
|
var chipVisibilityListener: ChipVisibilityListener? = null
|
||||||
@@ -75,6 +77,8 @@ class HeaderPrivacyIconsController @Inject constructor(
|
|||||||
|
|
||||||
fun onParentVisible() {
|
fun onParentVisible() {
|
||||||
privacyChip.setOnClickListener {
|
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
|
// If the privacy chip is visible, it means there were some indicators
|
||||||
uiEventLogger.log(PrivacyChipEvent.ONGOING_INDICATORS_CHIP_CLICK)
|
uiEventLogger.log(PrivacyChipEvent.ONGOING_INDICATORS_CHIP_CLICK)
|
||||||
privacyDialogController.showDialog(privacyChip.context)
|
privacyDialogController.showDialog(privacyChip.context)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.android.systemui.privacy.PrivacyDialogController
|
|||||||
import com.android.systemui.privacy.PrivacyItemController
|
import com.android.systemui.privacy.PrivacyItemController
|
||||||
import com.android.systemui.privacy.logging.PrivacyLogger
|
import com.android.systemui.privacy.logging.PrivacyLogger
|
||||||
import com.android.systemui.statusbar.phone.StatusIconContainer
|
import com.android.systemui.statusbar.phone.StatusIconContainer
|
||||||
|
import com.android.systemui.statusbar.policy.DeviceProvisionedController
|
||||||
import com.android.systemui.util.mockito.any
|
import com.android.systemui.util.mockito.any
|
||||||
import com.android.systemui.util.mockito.argumentCaptor
|
import com.android.systemui.util.mockito.argumentCaptor
|
||||||
import com.android.systemui.util.mockito.capture
|
import com.android.systemui.util.mockito.capture
|
||||||
@@ -18,6 +19,7 @@ import org.junit.Before
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
import org.mockito.Mockito.never
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
import org.mockito.Mockito.`when` as whenever
|
import org.mockito.Mockito.`when` as whenever
|
||||||
@@ -38,6 +40,8 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
|||||||
private lateinit var privacyLogger: PrivacyLogger
|
private lateinit var privacyLogger: PrivacyLogger
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var iconContainer: StatusIconContainer
|
private lateinit var iconContainer: StatusIconContainer
|
||||||
|
@Mock
|
||||||
|
private lateinit var deviceProvisionedController: DeviceProvisionedController
|
||||||
|
|
||||||
private lateinit var cameraSlotName: String
|
private lateinit var cameraSlotName: String
|
||||||
private lateinit var microphoneSlotName: String
|
private lateinit var microphoneSlotName: String
|
||||||
@@ -50,6 +54,7 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
|||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
whenever(privacyChip.context).thenReturn(context)
|
whenever(privacyChip.context).thenReturn(context)
|
||||||
whenever(privacyChip.resources).thenReturn(context.resources)
|
whenever(privacyChip.resources).thenReturn(context.resources)
|
||||||
|
whenever(deviceProvisionedController.isDeviceProvisioned).thenReturn(true)
|
||||||
|
|
||||||
cameraSlotName = context.getString(com.android.internal.R.string.status_bar_camera)
|
cameraSlotName = context.getString(com.android.internal.R.string.status_bar_camera)
|
||||||
microphoneSlotName = context.getString(com.android.internal.R.string.status_bar_microphone)
|
microphoneSlotName = context.getString(com.android.internal.R.string.status_bar_microphone)
|
||||||
@@ -61,7 +66,8 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
|||||||
privacyChip,
|
privacyChip,
|
||||||
privacyDialogController,
|
privacyDialogController,
|
||||||
privacyLogger,
|
privacyLogger,
|
||||||
iconContainer
|
iconContainer,
|
||||||
|
deviceProvisionedController
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,6 +127,18 @@ class HeaderPrivacyIconsControllerTest : SysuiTestCase() {
|
|||||||
verify(privacyDialogController).showDialog(any(Context::class.java))
|
verify(privacyDialogController).showDialog(any(Context::class.java))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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) {
|
private fun setPrivacyController(micCamera: Boolean, location: Boolean) {
|
||||||
whenever(privacyItemController.micCameraAvailable).thenReturn(micCamera)
|
whenever(privacyItemController.micCameraAvailable).thenReturn(micCamera)
|
||||||
whenever(privacyItemController.locationAvailable).thenReturn(location)
|
whenever(privacyItemController.locationAvailable).thenReturn(location)
|
||||||
|
|||||||
Reference in New Issue
Block a user