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

Commit aa428553 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix "Record issue doesn't stop after tapping the chips on status bar"" into main

parents 2ded2012 586cc8b4
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.qs.pipeline.domain.interactor.panelInteractor
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
import com.android.systemui.qs.tiles.viewmodel.QSTileUserAction
import com.android.systemui.recordissue.RecordIssueDialogDelegate
import com.android.systemui.screenrecord.RecordingController
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.settings.userTracker
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
@@ -40,12 +41,16 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations

@SmallTest
@RunWith(AndroidJUnit4::class)
class IssueRecordingUserActionInteractorTest : SysuiTestCase() {

    @Mock private lateinit var recordingController: RecordingController

    val user = UserHandle(1)
    val kosmos = Kosmos().also { it.testCase = this }

@@ -56,6 +61,7 @@ class IssueRecordingUserActionInteractorTest : SysuiTestCase() {

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        hasCreatedDialogDelegate = false
        with(kosmos) {
            val factory =
@@ -84,7 +90,8 @@ class IssueRecordingUserActionInteractorTest : SysuiTestCase() {
                    dialogTransitionAnimator,
                    panelInteractor,
                    userTracker,
                    factory
                    factory,
                    recordingController,
                )
        }
    }
+22 −14
Original line number Diff line number Diff line
@@ -43,12 +43,14 @@ import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.recordissue.IssueRecordingService
import com.android.systemui.recordissue.IssueRecordingService.Companion.getStartIntent
import com.android.systemui.recordissue.IssueRecordingService.Companion.getStopIntent
import com.android.systemui.recordissue.IssueRecordingState
import com.android.systemui.recordissue.RecordIssueDialogDelegate
import com.android.systemui.recordissue.RecordIssueModule.Companion.TILE_SPEC
import com.android.systemui.recordissue.TraceurMessageSender
import com.android.systemui.res.R
import com.android.systemui.screenrecord.RecordingController
import com.android.systemui.screenrecord.RecordingService
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
@@ -56,6 +58,9 @@ import com.android.systemui.statusbar.policy.KeyguardStateController
import java.util.concurrent.Executor
import javax.inject.Inject

const val DELAY_MS: Long = 0
const val INTERVAL_MS: Long = 1000

class RecordIssueTile
@Inject
constructor(
@@ -77,6 +82,7 @@ constructor(
    @Background private val bgExecutor: Executor,
    private val issueRecordingState: IssueRecordingState,
    private val delegateFactory: RecordIssueDialogDelegate.Factory,
    private val recordingController: RecordingController,
) :
    QSTileImpl<QSTile.BooleanState>(
        host,
@@ -132,22 +138,24 @@ constructor(
    }

    private fun startIssueRecordingService() =
        PendingIntent.getForegroundService(
                userContextProvider.userContext,
                RecordingService.REQUEST_CODE,
                IssueRecordingService.getStartIntent(userContextProvider.userContext),
                PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
        recordingController.startCountdown(
            DELAY_MS,
            INTERVAL_MS,
            pendingServiceIntent(getStartIntent(userContextProvider.userContext)),
            pendingServiceIntent(getStopIntent(userContextProvider.userContext))
        )
            .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())

    private fun stopIssueRecordingService() =
        pendingServiceIntent(getStopIntent(userContextProvider.userContext))
            .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())

    private fun pendingServiceIntent(action: Intent) =
        PendingIntent.getService(
            userContextProvider.userContext,
            RecordingService.REQUEST_CODE,
                IssueRecordingService.getStopIntent(userContextProvider.userContext),
            action,
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
        )
            .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())

    private fun showPrompt(expandable: Expandable?) {
        val dialog: AlertDialog =
+22 −14
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.qs.tiles.impl.irecording
import android.app.AlertDialog
import android.app.BroadcastOptions
import android.app.PendingIntent
import android.content.Intent
import android.util.Log
import com.android.internal.jank.InteractionJankMonitor
import com.android.systemui.animation.DialogCuj
@@ -27,12 +28,16 @@ import com.android.systemui.animation.Expandable
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor
import com.android.systemui.qs.tiles.DELAY_MS
import com.android.systemui.qs.tiles.INTERVAL_MS
import com.android.systemui.qs.tiles.base.interactor.QSTileInput
import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor
import com.android.systemui.qs.tiles.viewmodel.QSTileUserAction
import com.android.systemui.recordissue.IssueRecordingService
import com.android.systemui.recordissue.IssueRecordingService.Companion.getStartIntent
import com.android.systemui.recordissue.IssueRecordingService.Companion.getStopIntent
import com.android.systemui.recordissue.RecordIssueDialogDelegate
import com.android.systemui.recordissue.RecordIssueModule.Companion.TILE_SPEC
import com.android.systemui.screenrecord.RecordingController
import com.android.systemui.screenrecord.RecordingService
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
@@ -53,6 +58,7 @@ constructor(
    private val panelInteractor: PanelInteractor,
    private val userContextProvider: UserContextProvider,
    private val delegateFactory: RecordIssueDialogDelegate.Factory,
    private val recordingController: RecordingController,
) : QSTileUserActionInteractor<IssueRecordingModel> {

    override suspend fun handleInput(input: QSTileInput<IssueRecordingModel>) {
@@ -95,20 +101,22 @@ constructor(
    }

    private fun startIssueRecordingService() =
        PendingIntent.getForegroundService(
                userContextProvider.userContext,
                RecordingService.REQUEST_CODE,
                IssueRecordingService.getStartIntent(userContextProvider.userContext),
                PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
        recordingController.startCountdown(
            DELAY_MS,
            INTERVAL_MS,
            pendingServiceIntent(getStartIntent(userContextProvider.userContext)),
            pendingServiceIntent(getStopIntent(userContextProvider.userContext))
        )
            .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())

    private fun stopIssueRecordingService() =
        pendingServiceIntent(getStopIntent(userContextProvider.userContext))
            .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())

    private fun pendingServiceIntent(action: Intent) =
        PendingIntent.getService(
            userContextProvider.userContext,
            RecordingService.REQUEST_CODE,
                IssueRecordingService.getStopIntent(userContextProvider.userContext),
            action,
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
        )
            .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())
}
+3 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.systemui.recordissue.IssueRecordingState
import com.android.systemui.recordissue.RecordIssueDialogDelegate
import com.android.systemui.recordissue.TraceurMessageSender
import com.android.systemui.res.R
import com.android.systemui.screenrecord.RecordingController
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
import com.android.systemui.statusbar.phone.SystemUIDialog
@@ -65,6 +66,7 @@ class RecordIssueTileTest : SysuiTestCase() {
    @Mock private lateinit var qsEventLogger: QsEventLogger
    @Mock private lateinit var metricsLogger: MetricsLogger
    @Mock private lateinit var statusBarStateController: StatusBarStateController
    @Mock private lateinit var recordingController: RecordingController
    @Mock private lateinit var activityStarter: ActivityStarter
    @Mock private lateinit var qsLogger: QSLogger
    @Mock private lateinit var keyguardDismissUtil: KeyguardDismissUtil
@@ -109,6 +111,7 @@ class RecordIssueTileTest : SysuiTestCase() {
                Executors.newSingleThreadExecutor(),
                issueRecordingState,
                delegateFactory,
                recordingController,
            )
    }