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

Commit b020d25d authored by Daniel Akinola's avatar Daniel Akinola Committed by Android (Google) Code Review
Browse files

Merge "Ensure that MEDIA_PROJECTION_STATE_CANCELLED is only emitted when...

Merge "Ensure that MEDIA_PROJECTION_STATE_CANCELLED is only emitted when actually cancelling set up" into main
parents 766d71d8 74f313c9
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -53,19 +53,17 @@ abstract class BaseMediaProjectionPermissionDialogDelegate<T : AlertDialog>(
    private lateinit var cancelButton: TextView
    private lateinit var warning: TextView
    private lateinit var screenShareModeSpinner: Spinner
    private var hasCancelBeenLogged: Boolean = false
    protected lateinit var dialog: AlertDialog
    private var shouldLogCancel: Boolean = true
    var selectedScreenShareOption: ScreenShareOption = screenShareOptions.first()

    @CallSuper
    override fun onStop(dialog: T) {
        // onStop can be called multiple times and we only want to log once.
        if (hasCancelBeenLogged) {
            return
        }

        if (shouldLogCancel) {
            mediaProjectionMetricsLogger.notifyProjectionRequestCancelled(hostUid)
        hasCancelBeenLogged = true
            shouldLogCancel = false
        }
    }

    @CallSuper
@@ -140,7 +138,10 @@ abstract class BaseMediaProjectionPermissionDialogDelegate<T : AlertDialog>(
    }

    protected fun setStartButtonOnClickListener(listener: View.OnClickListener?) {
        startButton.setOnClickListener(listener)
        startButton.setOnClickListener { view ->
            shouldLogCancel = false
            listener?.onClick(view)
        }
    }

    protected fun setCancelButtonOnClickListener(listener: View.OnClickListener?) {
+19 −9
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.systemui.res.R
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
@@ -50,6 +49,7 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.eq
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
@@ -59,7 +59,6 @@ import org.mockito.MockitoAnnotations
@TestableLooper.RunWithLooper(setAsMainLooper = true)
class ScreenRecordPermissionDialogDelegateTest : SysuiTestCase() {

    //@Mock private lateinit var dialogFactory: SystemUIDialog.Factory
    @Mock private lateinit var starter: ActivityStarter
    @Mock private lateinit var controller: RecordingController
    @Mock private lateinit var userContextProvider: UserContextProvider
@@ -189,6 +188,17 @@ class ScreenRecordPermissionDialogDelegateTest : SysuiTestCase() {
        verify(mediaProjectionMetricsLogger).notifyProjectionRequestCancelled(TEST_HOST_UID)
    }

    @Test
    fun showDialog_singleAppSelected_clickOnStart_projectionRequestCancelledIsNotLoggedOnce() {
        showDialog()
        onSpinnerItemSelected(SINGLE_APP)

        clickOnStart()

        verify(mediaProjectionMetricsLogger, never())
            .notifyProjectionRequestCancelled(TEST_HOST_UID)
    }

    private fun showDialog() {
        dialog.show()
    }