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

Commit 120f5238 authored by Stefan Andonian's avatar Stefan Andonian
Browse files

Start Screenrecord from Record Issue QS Tile.

Bug: 305049544
Flag: ACONFIG record_issue_qs_tile DEVELOPMENT
Test: Manually tested on device.
Change-Id: Ie27643b36b090e0d6bdad7e39fa7129754512ca1
parent 789cf782
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()
    }