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

This commit is contained in:
Oleg Blinnikov
2022-09-28 09:52:37 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 5 deletions

View File

@@ -388,8 +388,7 @@ final class ContentRecorder implements WindowContainerListener {
* </p> * </p>
*/ */
private void handleStartRecordingFailed() { private void handleStartRecordingFailed() {
final boolean shouldExitTaskRecording = mContentRecordingSession != null final boolean shouldExitTaskRecording = isRecordingContentTask();
&& mContentRecordingSession.getContentToRecord() == RECORD_CONTENT_TASK;
clearContentRecordingSession(); clearContentRecordingSession();
if (shouldExitTaskRecording) { if (shouldExitTaskRecording) {
// Clean up the cached session first to ensure recording doesn't re-start, since // 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, ProtoLog.v(WM_DEBUG_CONTENT_RECORDING,
"Recorded task is removed, so stop recording on display %d", "Recorded task is removed, so stop recording on display %d",
mDisplayContent.getDisplayId()); mDisplayContent.getDisplayId());
Task recordedTask = mRecordedWindowContainer.asTask();
if (recordedTask == null Task recordedTask = mRecordedWindowContainer != null
|| mContentRecordingSession.getContentToRecord() != RECORD_CONTENT_TASK) { ? mRecordedWindowContainer.asTask() : null;
if (recordedTask == null || !isRecordingContentTask()) {
return; return;
} }
recordedTask.unregisterWindowContainerListener(this); recordedTask.unregisterWindowContainerListener(this);
@@ -501,4 +501,9 @@ final class ContentRecorder implements WindowContainerListener {
@VisibleForTesting interface MediaProjectionManagerWrapper { @VisibleForTesting interface MediaProjectionManagerWrapper {
void stopActiveProjection(); void stopActiveProjection();
} }
private boolean isRecordingContentTask() {
return mContentRecordingSession != null
&& mContentRecordingSession.getContentToRecord() == RECORD_CONTENT_TASK;
}
} }

View File

@@ -288,6 +288,14 @@ public class ContentRecorderTests extends WindowTestsBase {
verify(mMediaProjectionManagerWrapper).stopActiveProjection(); verify(mMediaProjectionManagerWrapper).stopActiveProjection();
} }
@Test
public void testRemoveTask_stopsRecording_nullSessionShouldNotThrowExceptions() {
mContentRecorder.setContentRecordingSession(mTaskSession);
mContentRecorder.updateRecording();
mContentRecorder.setContentRecordingSession(null);
mTask.removeImmediately();
}
@Test @Test
public void testUpdateMirroredSurface_capturedAreaResized() { public void testUpdateMirroredSurface_capturedAreaResized() {
mContentRecorder.setContentRecordingSession(mDisplaySession); mContentRecorder.setContentRecordingSession(mDisplaySession);