Fix potential null error in clearEvents.
* This is follow up from previous patch to fix an unresolved comment. * We're still changing the clearEvents mechanic to not null the list but actually clear the list of events. We also change when the flush->clearEvents call happen during the destroy process so it occurs on the handlerThread when each session does its own cleanup. Bug: 185162720 Test: atest CtsContentCaptureServiceTestCases Change-Id: Ide5490903deec8c4bc8aae5dc76b1fadca29dbd0
This commit is contained in:
@@ -341,11 +341,7 @@ public abstract class ContentCaptureSession implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
flush(FLUSH_REASON_SESSION_FINISHED);
|
||||
} finally {
|
||||
onDestroy();
|
||||
}
|
||||
onDestroy();
|
||||
}
|
||||
|
||||
abstract void onDestroy();
|
||||
|
||||
@@ -263,7 +263,13 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
|
||||
@Override
|
||||
void onDestroy() {
|
||||
mHandler.removeMessages(MSG_FLUSH);
|
||||
mHandler.post(() -> destroySession());
|
||||
mHandler.post(() -> {
|
||||
try {
|
||||
flush(FLUSH_REASON_SESSION_FINISHED);
|
||||
} finally {
|
||||
destroySession();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -571,9 +577,11 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
|
||||
private ParceledListSlice<ContentCaptureEvent> clearEvents() {
|
||||
// NOTE: we must save a reference to the current mEvents and then set it to to null,
|
||||
// otherwise clearing it would clear it in the receiving side if the service is also local.
|
||||
final List<ContentCaptureEvent> events = mEvents == null
|
||||
? Collections.EMPTY_LIST
|
||||
: new ArrayList<>(mEvents);
|
||||
if (mEvents == null) {
|
||||
return new ParceledListSlice<>(Collections.EMPTY_LIST);
|
||||
}
|
||||
|
||||
final List<ContentCaptureEvent> events = new ArrayList<>(mEvents);
|
||||
mEvents.clear();
|
||||
return new ParceledListSlice<>(events);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user