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>
*/
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;
}
}

View File

@@ -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);