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

Commit 3dc69f9a authored by Govinda Wasserman's avatar Govinda Wasserman
Browse files

Adds common ScreenCaptureTarget

Test: atest SystemUITests:com.android.systemui.screencapture
BUG: 39834067
Flag: com.android.systemui.large_screen_sharing
Change-Id: I2a074f6091fbc5383efbccdc982d48c564501ee0
parent ac12983d
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -16,14 +16,12 @@

package com.android.systemui.screencapture.record.domain.interactor

import android.app.ActivityOptions
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.collectLastValue
import com.android.systemui.kosmos.runTest
import com.android.systemui.mediaprojection.MediaProjectionCaptureTarget
import com.android.systemui.screencapture.record.shared.model.RecordTargetModel
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureTarget
import com.android.systemui.screenrecord.ScreenRecordingAudioSource
import com.android.systemui.testKosmosNew
import com.google.common.truth.Truth.assertThat
@@ -54,10 +52,7 @@ class ScreenCaptureRecordParametersModelInteractorTest : SysuiTestCase() {
    @Test
    fun testChangingTarget() =
        kosmos.runTest {
            val newTarget =
                RecordTargetModel.App(
                    MediaProjectionCaptureTarget(ActivityOptions.LaunchCookie(), 1)
                )
            val newTarget = ScreenCaptureTarget.App(taskId = 1)
            val target by collectLastValue(underTest.parameters.map { it.target })
            assertThat(target).isNotEqualTo(newTarget)

+11 −10
Original line number Diff line number Diff line
@@ -14,20 +14,21 @@
 * limitations under the License.
 */

package com.android.systemui.screencapture.record.shared.model
package com.android.systemui.screencapture.common.shared.model

import android.graphics.Rect
import com.android.systemui.mediaprojection.MediaProjectionCaptureTarget

/** Models the target to be recorded. */
sealed interface RecordTargetModel {
/** The target to be captured. */
sealed interface ScreenCaptureTarget {
    /** A full display. */
    data class Fullscreen(val displayId: Int) : ScreenCaptureTarget

    /** A single app should be recorded. */
    data class App(val target: MediaProjectionCaptureTarget) : RecordTargetModel
    /** A region on a display. */
    data class Region(val displayId: Int, val rect: Rect) : ScreenCaptureTarget

    /** The whole screen should be recorded. */
    data object WholeScreen : RecordTargetModel
    /** A full app. */
    data class App(val taskId: Int) : ScreenCaptureTarget

    /** The region of the screen should be recorded. */
    data class Region(val rect: Rect) : RecordTargetModel
    /** Content within an app. */
    data class AppContent(val contentId: Int) : ScreenCaptureTarget
}
+3 −2
Original line number Diff line number Diff line
@@ -16,8 +16,9 @@

package com.android.systemui.screencapture.record.data.repository

import android.view.Display
import com.android.systemui.screencapture.common.ScreenCapture
import com.android.systemui.screencapture.record.shared.model.RecordTargetModel
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureTarget
import com.android.systemui.screencapture.record.shared.model.ScreenCaptureRecordParametersModel
import com.android.systemui.screenrecord.ScreenRecordingAudioSource
import javax.inject.Inject
@@ -31,7 +32,7 @@ class ScreenCaptureRecordParametersRepository @Inject constructor() {
    private val _parameters =
        MutableStateFlow(
            ScreenCaptureRecordParametersModel(
                target = RecordTargetModel.WholeScreen,
                target = ScreenCaptureTarget.Fullscreen(Display.DEFAULT_DISPLAY),
                audioSource = ScreenRecordingAudioSource.NONE,
                shouldShowTaps = false,
            )
+2 −2
Original line number Diff line number Diff line
@@ -17,8 +17,8 @@
package com.android.systemui.screencapture.record.domain.interactor

import com.android.systemui.screencapture.common.ScreenCapture
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureTarget
import com.android.systemui.screencapture.record.data.repository.ScreenCaptureRecordParametersRepository
import com.android.systemui.screencapture.record.shared.model.RecordTargetModel
import com.android.systemui.screenrecord.ScreenRecordingAudioSource
import javax.inject.Inject

@@ -33,7 +33,7 @@ constructor(private val repository: ScreenCaptureRecordParametersRepository) {
        repository.updateParameters { it.copy(audioSource = audioSource) }
    }

    fun setRecordTarget(target: RecordTargetModel) {
    fun setRecordTarget(target: ScreenCaptureTarget) {
        repository.updateParameters { it.copy(target = target) }
    }

+2 −1
Original line number Diff line number Diff line
@@ -16,11 +16,12 @@

package com.android.systemui.screencapture.record.shared.model

import com.android.systemui.screencapture.common.shared.model.ScreenCaptureTarget
import com.android.systemui.screenrecord.ScreenRecordingAudioSource

/** Models a set of parameters necessary to start a screen recording. */
data class ScreenCaptureRecordParametersModel(
    val target: RecordTargetModel,
    val target: ScreenCaptureTarget,
    val audioSource: ScreenRecordingAudioSource,
    val shouldShowTaps: Boolean,
)
Loading