diff options
| author | 2024-06-06 21:23:42 +0000 | |
|---|---|---|
| committer | 2024-06-06 21:23:42 +0000 | |
| commit | 219bb9ce54fd2bfbc7d863f3093b5607fe02db2b (patch) | |
| tree | c1f20056bca247fb6c30f4ba084835ed62ef4245 | |
| parent | a0d0b9eb30f629504cc8277d82de7cd1304ce117 (diff) | |
| parent | 4cbc7f31f8afdb1399c74ea9eef3563e12903ad8 (diff) | |
Merge "Persist User Selections in Record Issue Tile Dialog" into main
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 |