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

Commit 40b2f7f7 authored by Stefan Andonian's avatar Stefan Andonian Committed by Android (Google) Code Review
Browse files

Merge "Start Screenrecord from Record Issue QS Tile." into main

parents f16fd108 120f5238
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.qs.tileimpl.QSTileImpl
import com.android.systemui.recordissue.RecordIssueDialogDelegate
import com.android.systemui.res.R
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.policy.KeyguardStateController
@@ -63,6 +64,7 @@ constructor(
    private val keyguardStateController: KeyguardStateController,
    private val dialogLaunchAnimator: DialogLaunchAnimator,
    private val sysuiDialogFactory: SystemUIDialog.Factory,
    private val userContextProvider: UserContextProvider,
) :
    QSTileImpl<QSTile.BooleanState>(
        host,
@@ -100,7 +102,7 @@ constructor(

    private fun showPrompt(view: View?) {
        val dialog: AlertDialog =
            RecordIssueDialogDelegate(sysuiDialogFactory) {
            RecordIssueDialogDelegate(sysuiDialogFactory, userContextProvider) {
                    isRecording = true
                    refreshState()
                }
+25 −0
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@
package com.android.systemui.recordissue

import android.annotation.SuppressLint
import android.app.Activity
import android.app.BroadcastOptions
import android.app.PendingIntent
import android.content.Context
import android.content.res.ColorStateList
import android.graphics.Color
@@ -28,10 +31,14 @@ import android.widget.Button
import android.widget.PopupMenu
import android.widget.Switch
import com.android.systemui.res.R
import com.android.systemui.screenrecord.RecordingService
import com.android.systemui.screenrecord.ScreenRecordingAudioSource
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.SystemUIDialog

class RecordIssueDialogDelegate(
    private val factory: SystemUIDialog.Factory,
    private val userContextProvider: UserContextProvider,
    private val onStarted: Runnable
) : SystemUIDialog.Delegate {

@@ -46,6 +53,9 @@ class RecordIssueDialogDelegate(
            setNegativeButton(R.string.cancel) { _, _ -> dismiss() }
            setPositiveButton(R.string.qs_record_issue_start) { _, _ ->
                onStarted.run()
                if (screenRecordSwitch.isChecked) {
                    requestScreenCapture()
                }
                dismiss()
            }
        }
@@ -85,4 +95,19 @@ class RecordIssueDialogDelegate(
            show()
        }
    }

    private fun requestScreenCapture() =
        PendingIntent.getForegroundService(
                userContextProvider.userContext,
                RecordingService.REQUEST_CODE,
                RecordingService.getStartIntent(
                    userContextProvider.userContext,
                    Activity.RESULT_OK,
                    ScreenRecordingAudioSource.NONE.ordinal,
                    false,
                    null
                ),
                PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
            )
            .send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())
}
+4 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.qs.QSHost
import com.android.systemui.qs.QsEventLogger
import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.res.R
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.policy.KeyguardStateController
@@ -66,6 +67,7 @@ class RecordIssueTileTest : SysuiTestCase() {
    @Mock private lateinit var dialogLauncherAnimator: DialogLaunchAnimator
    @Mock private lateinit var dialogFactory: SystemUIDialog.Factory
    @Mock private lateinit var dialog: SystemUIDialog
    @Mock private lateinit var userContextProvider: UserContextProvider

    private lateinit var testableLooper: TestableLooper
    private lateinit var tile: RecordIssueTile
@@ -91,7 +93,8 @@ class RecordIssueTileTest : SysuiTestCase() {
                keyguardDismissUtil,
                keyguardStateController,
                dialogLauncherAnimator,
                dialogFactory
                dialogFactory,
                userContextProvider,
            )
    }

+2 −1
Original line number Diff line number Diff line
@@ -65,7 +65,8 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() {
            )

        latch = CountDownLatch(1)
        dialog = RecordIssueDialogDelegate(dialogFactory) { latch.countDown() }.createDialog()
        dialog =
            RecordIssueDialogDelegate(dialogFactory, mock()) { latch.countDown() }.createDialog()
        dialog.show()
    }