summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Stefan Andonian <andonian@google.com> 2024-06-06 21:23:42 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-06-06 21:23:42 +0000
commit219bb9ce54fd2bfbc7d863f3093b5607fe02db2b (patch)
treec1f20056bca247fb6c30f4ba084835ed62ef4245
parenta0d0b9eb30f629504cc8277d82de7cd1304ce117 (diff)
parent4cbc7f31f8afdb1399c74ea9eef3563e12903ad8 (diff)
Merge "Persist User Selections in Record Issue Tile Dialog" into main
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt14
-rw-r--r--packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt21
-rw-r--r--packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt33
-rw-r--r--packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt61
-rw-r--r--packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt122
-rw-r--r--packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt12
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt22
9 files changed, 142 insertions, 152 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt
index e6801022ad0e..70f3b847ce07 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/RecordIssueTile.kt
@@ -52,7 +52,6 @@ import com.android.systemui.screenrecord.RecordingService
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
import com.android.systemui.statusbar.policy.KeyguardStateController
-import com.android.traceur.TraceUtils.PresetTraceType
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -131,15 +130,11 @@ constructor(
}
}
- private fun startIssueRecordingService(screenRecord: Boolean, traceType: PresetTraceType) =
+ private fun startIssueRecordingService() =
PendingIntent.getForegroundService(
userContextProvider.userContext,
RecordingService.REQUEST_CODE,
- IssueRecordingService.getStartIntent(
- userContextProvider.userContext,
- screenRecord,
- traceType
- ),
+ IssueRecordingService.getStartIntent(userContextProvider.userContext),
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
.send(BroadcastOptions.makeBasic().apply { isInteractive = true }.toBundle())
@@ -157,7 +152,7 @@ constructor(
val dialog: AlertDialog =
delegateFactory
.create {
- startIssueRecordingService(it.screenRecord, it.traceType)
+ startIssueRecordingService()
dialogTransitionAnimator.disableAllCurrentDialogsExitAnimations()
panelInteractor.collapsePanels()
}
@@ -169,8 +164,7 @@ constructor(
if (expandable != null && !keyguardStateController.isShowing) {
expandable
.dialogTransitionController(DialogCuj(CUJ_SHADE_DIALOG_OPEN, TILE_SPEC))
- ?.let { dialogTransitionAnimator.show(dialog, it) }
- ?: dialog.show()
+ ?.let { dialogTransitionAnimator.show(dialog, it) } ?: dialog.show()
} else {
dialog.show()
}
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
deleted file mode 100644
index 23dbc26d40d3..000000000000
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingConfig.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.recordissue
-
-import com.android.traceur.TraceUtils.PresetTraceType
-
-data class IssueRecordingConfig(val screenRecord: Boolean, val traceType: PresetTraceType)
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt
index 5ede64a4fc26..4a4c73ba9c81 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingService.kt
@@ -35,8 +35,6 @@ import com.android.systemui.screenrecord.RecordingService
import com.android.systemui.screenrecord.RecordingServiceStrings
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.phone.KeyguardDismissUtil
-import com.android.traceur.MessageConstants.INTENT_EXTRA_TRACE_TYPE
-import com.android.traceur.TraceUtils.PresetTraceType
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -76,15 +74,10 @@ constructor(
when (intent?.action) {
ACTION_START -> {
bgExecutor.execute {
- traceurMessageSender.startTracing(
- intent.getSerializableExtra(
- INTENT_EXTRA_TRACE_TYPE,
- PresetTraceType::class.java
- )
- )
+ traceurMessageSender.startTracing(issueRecordingState.traceType)
}
issueRecordingState.isRecording = true
- if (!intent.getBooleanExtra(EXTRA_SCREEN_RECORD, false)) {
+ if (!issueRecordingState.recordScreen) {
// If we don't want to record the screen, the ACTION_SHOW_START_NOTIF action
// will circumvent the RecordingService's screen recording start code.
return super.onStartCommand(Intent(ACTION_SHOW_START_NOTIF), flags, startId)
@@ -107,7 +100,7 @@ constructor(
)
val screenRecording = intent.getParcelableExtra(EXTRA_PATH, Uri::class.java)
- if (issueRecordingState.takeBugReport) {
+ if (issueRecordingState.takeBugreport) {
iActivityManager.requestBugReportWithExtraAttachment(screenRecording)
} else {
traceurMessageSender.shareTraces(applicationContext, screenRecording)
@@ -130,7 +123,6 @@ constructor(
companion object {
private const val TAG = "IssueRecordingService"
private const val CHANNEL_ID = "issue_record"
- private const val EXTRA_SCREEN_RECORD = "extra_screenRecord"
/**
* Get an intent to stop the issue recording service.
@@ -148,35 +140,36 @@ constructor(
*
* @param context Context from the requesting activity
*/
- fun getStartIntent(
- context: Context,
- screenRecord: Boolean,
- traceType: PresetTraceType,
- ): Intent =
- Intent(context, IssueRecordingService::class.java)
- .setAction(ACTION_START)
- .putExtra(EXTRA_SCREEN_RECORD, screenRecord)
- .putExtra(INTENT_EXTRA_TRACE_TYPE, traceType)
+ fun getStartIntent(context: Context): Intent =
+ Intent(context, IssueRecordingService::class.java).setAction(ACTION_START)
}
}
private class IrsStrings(private val res: Resources) : RecordingServiceStrings(res) {
override val title
get() = res.getString(R.string.issuerecord_title)
+
override val notificationChannelDescription
get() = res.getString(R.string.issuerecord_channel_description)
+
override val startErrorResId
get() = R.string.issuerecord_start_error
+
override val startError
get() = res.getString(R.string.issuerecord_start_error)
+
override val saveErrorResId
get() = R.string.issuerecord_save_error
+
override val saveError
get() = res.getString(R.string.issuerecord_save_error)
+
override val ongoingRecording
get() = res.getString(R.string.issuerecord_ongoing_screen_only)
+
override val backgroundProcessingLabel
get() = res.getString(R.string.issuerecord_background_processing_label)
+
override val saveTitle
get() = res.getString(R.string.issuerecord_save_title)
}
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt
index 12ed06d75ce3..4ea334522ad4 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/IssueRecordingState.kt
@@ -16,16 +16,51 @@
package com.android.systemui.recordissue
+import android.content.Context
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.qs.tiles.RecordIssueTile
+import com.android.systemui.res.R
+import com.android.systemui.settings.UserFileManager
+import com.android.systemui.settings.UserTracker
+import com.android.traceur.TraceUtils.PresetTraceType
import java.util.concurrent.CopyOnWriteArrayList
import javax.inject.Inject
@SysUISingleton
-class IssueRecordingState @Inject constructor() {
+class IssueRecordingState
+@Inject
+constructor(
+ userTracker: UserTracker,
+ userFileManager: UserFileManager,
+) {
- private val listeners = CopyOnWriteArrayList<Runnable>()
+ private val prefs =
+ userFileManager.getSharedPreferences(
+ RecordIssueTile.TILE_SPEC,
+ Context.MODE_PRIVATE,
+ userTracker.userId
+ )
+
+ var takeBugreport
+ get() = prefs.getBoolean(KEY_TAKE_BUG_REPORT, false)
+ set(value) = prefs.edit().putBoolean(KEY_TAKE_BUG_REPORT, value).apply()
+
+ var recordScreen
+ get() = prefs.getBoolean(KEY_RECORD_SCREEN, false)
+ set(value) = prefs.edit().putBoolean(KEY_RECORD_SCREEN, value).apply()
+
+ var hasUserApprovedScreenRecording
+ get() = prefs.getBoolean(HAS_APPROVED_SCREEN_RECORDING, false)
+ private set(value) = prefs.edit().putBoolean(HAS_APPROVED_SCREEN_RECORDING, value).apply()
+
+ var issueTypeRes
+ get() = prefs.getInt(KEY_ISSUE_TYPE_RES, ISSUE_TYPE_NOT_SET)
+ set(value) = prefs.edit().putInt(KEY_ISSUE_TYPE_RES, value).apply()
+
+ val traceType: PresetTraceType
+ get() = ALL_ISSUE_TYPES[issueTypeRes] ?: PresetTraceType.UNSET
- var takeBugReport: Boolean = false
+ private val listeners = CopyOnWriteArrayList<Runnable>()
var isRecording = false
set(value) {
@@ -33,6 +68,10 @@ class IssueRecordingState @Inject constructor() {
listeners.forEach(Runnable::run)
}
+ fun markUserApprovalForScreenRecording() {
+ hasUserApprovedScreenRecording = true
+ }
+
fun addListener(listener: Runnable) {
listeners.add(listener)
}
@@ -40,4 +79,20 @@ class IssueRecordingState @Inject constructor() {
fun removeListener(listener: Runnable) {
listeners.remove(listener)
}
+
+ companion object {
+ private const val KEY_TAKE_BUG_REPORT = "key_takeBugReport"
+ private const val HAS_APPROVED_SCREEN_RECORDING = "HasApprovedScreenRecord"
+ private const val KEY_RECORD_SCREEN = "key_recordScreen"
+ const val KEY_ISSUE_TYPE_RES = "key_issueTypeRes"
+ const val ISSUE_TYPE_NOT_SET = -1
+
+ val ALL_ISSUE_TYPES: Map<Int, PresetTraceType> =
+ hashMapOf(
+ Pair(R.string.performance, PresetTraceType.PERFORMANCE),
+ Pair(R.string.user_interface, PresetTraceType.UI),
+ Pair(R.string.battery, PresetTraceType.BATTERY),
+ Pair(R.string.thermal, PresetTraceType.THERMAL)
+ )
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt
index 84a063a36740..bbf4e51b35e9 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt
@@ -17,7 +17,7 @@
package com.android.systemui.recordissue
import android.annotation.SuppressLint
-import android.app.AlertDialog
+import android.app.AlertDialog.BUTTON_POSITIVE
import android.content.Context
import android.content.Intent
import android.content.res.ColorStateList
@@ -41,18 +41,16 @@ import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger
import com.android.systemui.mediaprojection.SessionCreationSource
import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDevicePolicyResolver
import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDisabledDialogDelegate
-import com.android.systemui.qs.tiles.RecordIssueTile
+import com.android.systemui.recordissue.IssueRecordingState.Companion.ALL_ISSUE_TYPES
+import com.android.systemui.recordissue.IssueRecordingState.Companion.ISSUE_TYPE_NOT_SET
+import com.android.systemui.recordissue.IssueRecordingState.Companion.KEY_ISSUE_TYPE_RES
import com.android.systemui.res.R
-import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.phone.SystemUIDialog
-import com.android.traceur.MessageConstants.INTENT_EXTRA_TRACE_TYPE
-import com.android.traceur.TraceUtils.PresetTraceType
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import java.util.concurrent.Executor
-import java.util.function.Consumer
class RecordIssueDialogDelegate
@AssistedInject
@@ -64,31 +62,20 @@ constructor(
@Main private val mainExecutor: Executor,
private val devicePolicyResolver: dagger.Lazy<ScreenCaptureDevicePolicyResolver>,
private val mediaProjectionMetricsLogger: MediaProjectionMetricsLogger,
- private val userFileManager: UserFileManager,
private val screenCaptureDisabledDialogDelegate: ScreenCaptureDisabledDialogDelegate,
- private val issueRecordingState: IssueRecordingState,
+ private val state: IssueRecordingState,
private val traceurMessageSender: TraceurMessageSender,
- @Assisted private val onStarted: Consumer<IssueRecordingConfig>,
+ @Assisted private val onStarted: Runnable,
) : SystemUIDialog.Delegate {
- private val issueTypeOptions: Map<Int, PresetTraceType> =
- hashMapOf(
- Pair(R.string.performance, PresetTraceType.PERFORMANCE),
- Pair(R.string.user_interface, PresetTraceType.UI),
- Pair(R.string.battery, PresetTraceType.BATTERY),
- Pair(R.string.thermal, PresetTraceType.THERMAL)
- )
- private var selectedIssueType: PresetTraceType? = null
-
/** To inject dependencies and allow for easier testing */
@AssistedFactory
interface Factory {
/** Create a dialog object */
- fun create(onStarted: Consumer<IssueRecordingConfig>): RecordIssueDialogDelegate
+ fun create(onStarted: Runnable): RecordIssueDialogDelegate
}
@SuppressLint("UseSwitchCompatOrMaterialCode") private lateinit var screenRecordSwitch: Switch
- @SuppressLint("UseSwitchCompatOrMaterialCode") private lateinit var bugReportSwitch: Switch
private lateinit var issueTypeButton: Button
@MainThread
@@ -97,21 +84,8 @@ constructor(
setView(LayoutInflater.from(context).inflate(R.layout.record_issue_dialog, null))
setTitle(context.getString(R.string.qs_record_issue_label))
setIcon(R.drawable.qs_record_issue_icon_off)
- setNegativeButton(R.string.cancel) { _, _ -> dismiss() }
- setPositiveButton(
- R.string.qs_record_issue_start,
- { _, _ ->
- issueRecordingState.takeBugReport = bugReportSwitch.isChecked
- onStarted.accept(
- IssueRecordingConfig(
- screenRecordSwitch.isChecked,
- selectedIssueType ?: PresetTraceType.UNSET
- )
- )
- dismiss()
- },
- false
- )
+ setNegativeButton(R.string.cancel) { _, _ -> }
+ setPositiveButton(R.string.qs_record_issue_start) { _, _ -> onStarted.run() }
}
bgExecutor.execute { traceurMessageSender.bindToTraceur(dialog.context) }
}
@@ -121,22 +95,39 @@ constructor(
@MainThread
override fun onCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
dialog.apply {
- window?.addPrivateFlags(WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS)
- window?.setGravity(Gravity.CENTER)
+ window?.apply {
+ addPrivateFlags(WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS)
+ setGravity(Gravity.CENTER)
+ }
- screenRecordSwitch = requireViewById(R.id.screenrecord_switch)
- screenRecordSwitch.setOnCheckedChangeListener { _, isEnabled ->
- if (isEnabled) {
- bgExecutor.execute { onScreenRecordSwitchClicked() }
+ screenRecordSwitch =
+ requireViewById<Switch>(R.id.screenrecord_switch).apply {
+ isChecked = state.recordScreen
+ setOnCheckedChangeListener { _, isChecked ->
+ state.recordScreen = isChecked
+ if (isChecked) {
+ bgExecutor.execute { onScreenRecordSwitchClicked() }
+ }
+ }
}
+
+ requireViewById<Switch>(R.id.bugreport_switch).apply {
+ isChecked = state.takeBugreport
+ setOnCheckedChangeListener { _, isChecked -> state.takeBugreport = isChecked }
}
- bugReportSwitch = requireViewById(R.id.bugreport_switch)
- val startButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
- issueTypeButton = requireViewById(R.id.issue_type_button)
- issueTypeButton.setOnClickListener {
- onIssueTypeClicked(context) { startButton.isEnabled = true }
- }
- startButton.isEnabled = false
+
+ issueTypeButton =
+ requireViewById<Button>(R.id.issue_type_button).apply {
+ val startButton = dialog.getButton(BUTTON_POSITIVE)
+ if (state.issueTypeRes != ISSUE_TYPE_NOT_SET) {
+ setText(state.issueTypeRes)
+ } else {
+ startButton.isEnabled = false
+ }
+ setOnClickListener {
+ onIssueTypeClicked(context) { startButton.isEnabled = true }
+ }
+ }
}
}
@@ -160,19 +151,14 @@ constructor(
SessionCreationSource.SYSTEM_UI_SCREEN_RECORDER
)
- if (flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)) {
- val prefs =
- userFileManager.getSharedPreferences(
- RecordIssueTile.TILE_SPEC,
- Context.MODE_PRIVATE,
- userTracker.userId
- )
- if (!prefs.getBoolean(HAS_APPROVED_SCREEN_RECORDING, false)) {
- mainExecutor.execute {
- ScreenCapturePermissionDialogDelegate(factory, prefs).createDialog().apply {
- setOnCancelListener { screenRecordSwitch.isChecked = false }
- show()
- }
+ if (
+ flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING) &&
+ !state.hasUserApprovedScreenRecording
+ ) {
+ mainExecutor.execute {
+ ScreenCapturePermissionDialogDelegate(factory, state).createDialog().apply {
+ setOnCancelListener { screenRecordSwitch.isChecked = false }
+ show()
}
}
}
@@ -182,23 +168,21 @@ constructor(
private fun onIssueTypeClicked(context: Context, onIssueTypeSelected: Runnable) {
val popupMenu = PopupMenu(context, issueTypeButton)
- issueTypeOptions.keys.forEach {
+ ALL_ISSUE_TYPES.keys.forEach {
popupMenu.menu.add(it).apply {
setIcon(R.drawable.arrow_pointing_down)
- if (issueTypeOptions[it] != selectedIssueType) {
+ if (it != state.issueTypeRes) {
iconTintList = ColorStateList.valueOf(Color.TRANSPARENT)
}
- intent = Intent().putExtra(INTENT_EXTRA_TRACE_TYPE, issueTypeOptions[it])
+ intent = Intent().putExtra(KEY_ISSUE_TYPE_RES, it)
}
}
popupMenu.apply {
setOnMenuItemClickListener {
issueTypeButton.text = it.title
- selectedIssueType =
- it.intent?.getSerializableExtra(
- INTENT_EXTRA_TRACE_TYPE,
- PresetTraceType::class.java
- )
+ state.issueTypeRes =
+ it.intent?.getIntExtra(KEY_ISSUE_TYPE_RES, ISSUE_TYPE_NOT_SET)
+ ?: ISSUE_TYPE_NOT_SET
onIssueTypeSelected.run()
true
}
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt
index de6d3f698285..b029d077b6d1 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/ScreenCapturePermissionDialogDelegate.kt
@@ -16,18 +16,15 @@
package com.android.systemui.recordissue
-import android.content.SharedPreferences
import android.os.Bundle
import android.view.Gravity
import android.view.WindowManager
import com.android.systemui.res.R
import com.android.systemui.statusbar.phone.SystemUIDialog
-const val HAS_APPROVED_SCREEN_RECORDING = "HasApprovedScreenRecord"
-
class ScreenCapturePermissionDialogDelegate(
private val dialogFactory: SystemUIDialog.Factory,
- private val sharedPreferences: SharedPreferences,
+ private val state: IssueRecordingState,
) : SystemUIDialog.Delegate {
override fun beforeCreate(dialog: SystemUIDialog, savedInstanceState: Bundle?) {
@@ -37,7 +34,7 @@ class ScreenCapturePermissionDialogDelegate(
setMessage(R.string.screenrecord_permission_dialog_warning_entire_screen)
setNegativeButton(R.string.slice_permission_deny) { _, _ -> cancel() }
setPositiveButton(R.string.slice_permission_allow) { _, _ ->
- sharedPreferences.edit().putBoolean(HAS_APPROVED_SCREEN_RECORDING, true).apply()
+ state.markUserApprovalForScreenRecording()
dismiss()
}
window?.addPrivateFlags(WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS)
diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt b/packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt
index 189336cf69bc..51744aa47c1a 100644
--- a/packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt
+++ b/packages/SystemUI/src/com/android/systemui/recordissue/TraceurMessageSender.kt
@@ -93,7 +93,7 @@ class TraceurMessageSender @Inject constructor(@Background private val backgroun
}
@WorkerThread
- fun startTracing(traceType: PresetTraceType?) {
+ fun startTracing(traceType: PresetTraceType) {
val data =
Bundle().apply { putSerializable(MessageConstants.INTENT_EXTRA_TRACE_TYPE, traceType) }
notifyTraceur(MessageConstants.START_WHAT, data)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt
index df59e572bd3b..73548baad377 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt
@@ -72,13 +72,13 @@ class RecordIssueTileTest : SysuiTestCase() {
@Mock private lateinit var dialogLauncherAnimator: DialogTransitionAnimator
@Mock private lateinit var panelInteractor: PanelInteractor
@Mock private lateinit var userContextProvider: UserContextProvider
+ @Mock private lateinit var issueRecordingState: IssueRecordingState
@Mock private lateinit var traceurMessageSender: TraceurMessageSender
@Mock private lateinit var delegateFactory: RecordIssueDialogDelegate.Factory
@Mock private lateinit var dialogDelegate: RecordIssueDialogDelegate
@Mock private lateinit var dialog: SystemUIDialog
private lateinit var testableLooper: TestableLooper
- private val issueRecordingState = IssueRecordingState()
private lateinit var tile: RecordIssueTile
@Before
@@ -114,7 +114,7 @@ class RecordIssueTileTest : SysuiTestCase() {
@Test
fun qsTileUi_shouldLookCorrect_whenInactive() {
- issueRecordingState.isRecording = false
+ whenever(issueRecordingState.isRecording).thenReturn(false)
val testState = tile.newTileState()
tile.handleUpdateState(testState, null)
@@ -126,7 +126,7 @@ class RecordIssueTileTest : SysuiTestCase() {
@Test
fun qsTileUi_shouldLookCorrect_whenRecording() {
- issueRecordingState.isRecording = true
+ whenever(issueRecordingState.isRecording).thenReturn(true)
val testState = tile.newTileState()
tile.handleUpdateState(testState, null)
@@ -137,7 +137,7 @@ class RecordIssueTileTest : SysuiTestCase() {
@Test
fun inActiveQsTile_switchesToActive_whenClicked() {
- issueRecordingState.isRecording = false
+ whenever(issueRecordingState.isRecording).thenReturn(false)
val testState = tile.newTileState()
tile.handleUpdateState(testState, null)
@@ -147,7 +147,7 @@ class RecordIssueTileTest : SysuiTestCase() {
@Test
fun activeQsTile_switchesToInActive_whenClicked() {
- issueRecordingState.isRecording = true
+ whenever(issueRecordingState.isRecording).thenReturn(true)
val testState = tile.newTileState()
tile.handleUpdateState(testState, null)
@@ -157,7 +157,7 @@ class RecordIssueTileTest : SysuiTestCase() {
@Test
fun showPrompt_shouldUseKeyguardDismissUtil_ToShowDialog() {
- issueRecordingState.isRecording = false
+ whenever(issueRecordingState.isRecording).thenReturn(false)
tile.handleClick(null)
testableLooper.processAllMessages()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt
index ca606505af68..503c52f89b0a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt
@@ -17,7 +17,6 @@
package com.android.systemui.recordissue
import android.app.Dialog
-import android.content.Context
import android.content.SharedPreferences
import android.os.UserHandle
import android.testing.TestableLooper
@@ -35,9 +34,8 @@ import com.android.systemui.mediaprojection.SessionCreationSource
import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDevicePolicyResolver
import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDisabledDialogDelegate
import com.android.systemui.model.SysUiState
-import com.android.systemui.qs.tiles.RecordIssueTile
+import com.android.systemui.recordissue.IssueRecordingState.Companion.ISSUE_TYPE_NOT_SET
import com.android.systemui.res.R
-import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.SystemUIDialogManager
@@ -72,7 +70,7 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() {
@Mock private lateinit var dprLazy: dagger.Lazy<ScreenCaptureDevicePolicyResolver>
@Mock private lateinit var mediaProjectionMetricsLogger: MediaProjectionMetricsLogger
@Mock private lateinit var userTracker: UserTracker
- @Mock private lateinit var userFileManager: UserFileManager
+ @Mock private lateinit var state: IssueRecordingState
@Mock private lateinit var sharedPreferences: SharedPreferences
@Mock
private lateinit var screenCaptureDisabledDialogDelegate: ScreenCaptureDisabledDialogDelegate
@@ -90,7 +88,6 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() {
private lateinit var dialog: SystemUIDialog
private lateinit var factory: SystemUIDialog.Factory
private lateinit var latch: CountDownLatch
- private var issueRecordingState = IssueRecordingState()
@Before
fun setup() {
@@ -99,14 +96,7 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() {
whenever(sysuiState.setFlag(anyLong(), anyBoolean())).thenReturn(sysuiState)
whenever(screenCaptureDisabledDialogDelegate.createSysUIDialog())
.thenReturn(screenCaptureDisabledDialog)
- whenever(
- userFileManager.getSharedPreferences(
- eq(RecordIssueTile.TILE_SPEC),
- eq(Context.MODE_PRIVATE),
- anyInt()
- )
- )
- .thenReturn(sharedPreferences)
+ whenever(state.issueTypeRes).thenReturn(ISSUE_TYPE_NOT_SET)
factory =
spy(
@@ -129,9 +119,8 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() {
mainExecutor,
dprLazy,
mediaProjectionMetricsLogger,
- userFileManager,
screenCaptureDisabledDialogDelegate,
- issueRecordingState,
+ state,
traceurMessageSender
) {
latch.countDown()
@@ -190,8 +179,7 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() {
whenever(devicePolicyResolver.isScreenCaptureCompletelyDisabled(any<UserHandle>()))
.thenReturn(false)
whenever(flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)).thenReturn(true)
- whenever(sharedPreferences.getBoolean(HAS_APPROVED_SCREEN_RECORDING, false))
- .thenReturn(false)
+ whenever(state.hasUserApprovedScreenRecording).thenReturn(false)
val screenRecordSwitch = dialog.requireViewById<Switch>(R.id.screenrecord_switch)
screenRecordSwitch.isChecked = true