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

Commit 6bf944b7 authored by Oleg Blinnikov's avatar Oleg Blinnikov Committed by Android (Google) Code Review
Browse files

Merge "Fix NullPointerException in ContentRecorder" into tm-qpr-dev

parents 8504f8c8 419f9ed5
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -388,8 +388,7 @@ final class ContentRecorder implements WindowContainerListener {
     * </p>
     */
    private void handleStartRecordingFailed() {
        final boolean shouldExitTaskRecording = mContentRecordingSession != null
                && mContentRecordingSession.getContentToRecord() == RECORD_CONTENT_TASK;
        final boolean shouldExitTaskRecording = isRecordingContentTask();
        clearContentRecordingSession();
        if (shouldExitTaskRecording) {
            // Clean up the cached session first to ensure recording doesn't re-start, since
@@ -475,9 +474,10 @@ final class ContentRecorder implements WindowContainerListener {
        ProtoLog.v(WM_DEBUG_CONTENT_RECORDING,
                "Recorded task is removed, so stop recording on display %d",
                mDisplayContent.getDisplayId());
        Task recordedTask = mRecordedWindowContainer.asTask();
        if (recordedTask == null
                || mContentRecordingSession.getContentToRecord() != RECORD_CONTENT_TASK) {

        Task recordedTask = mRecordedWindowContainer != null
                ? mRecordedWindowContainer.asTask() : null;
        if (recordedTask == null || !isRecordingContentTask()) {
            return;
        }
        recordedTask.unregisterWindowContainerListener(this);
@@ -501,4 +501,9 @@ final class ContentRecorder implements WindowContainerListener {
    @VisibleForTesting interface MediaProjectionManagerWrapper {
        void stopActiveProjection();
    }

    private boolean isRecordingContentTask() {
        return mContentRecordingSession != null
                && mContentRecordingSession.getContentToRecord() == RECORD_CONTENT_TASK;
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -288,6 +288,14 @@ public class ContentRecorderTests extends WindowTestsBase {
        verify(mMediaProjectionManagerWrapper).stopActiveProjection();
    }

    @Test
    public void testRemoveTask_stopsRecording_nullSessionShouldNotThrowExceptions() {
        mContentRecorder.setContentRecordingSession(mTaskSession);
        mContentRecorder.updateRecording();
        mContentRecorder.setContentRecordingSession(null);
        mTask.removeImmediately();
    }

    @Test
    public void testUpdateMirroredSurface_capturedAreaResized() {
        mContentRecorder.setContentRecordingSession(mDisplaySession);