Clean up code of starting bug report

- Let screenshot fd be null if Shell doesn't want to take default screenshot when bug report is triggered.

BUG:149525300
Test: Flash and test interactive/full bugreports generated using Shell, and Shell flow does not break during tests
Change-Id: I50908af63d74ed66156354ec0b5a237f7131061a
Merged-In: I50908af63d74ed66156354ec0b5a237f7131061a
This commit is contained in:
Paul Chang
2020-02-26 18:13:47 +08:00
parent 6c8486c771
commit 46ab985f41

View File

@@ -615,13 +615,16 @@ public class BugreportProgressService extends Service {
+ " bugreport parcel file descriptor is null."); + " bugreport parcel file descriptor is null.");
return; return;
} }
ParcelFileDescriptor screenshotFd = info.getDefaultScreenshotFd(); ParcelFileDescriptor screenshotFd = null;
if (screenshotFd == null) { if (isDefaultScreenshotRequired(bugreportType)) {
Log.e(TAG, "Failed to start bugreport generation as" screenshotFd = info.getDefaultScreenshotFd();
+ " screenshot parcel file descriptor is null. Deleting bugreport file"); if (screenshotFd == null) {
FileUtils.closeQuietly(bugreportFd); Log.e(TAG, "Failed to start bugreport generation as"
info.bugreportFile.delete(); + " screenshot parcel file descriptor is null. Deleting bugreport file");
return; FileUtils.closeQuietly(bugreportFd);
info.bugreportFile.delete();
return;
}
} }
mBugreportManager = (BugreportManager) mContext.getSystemService( mBugreportManager = (BugreportManager) mContext.getSystemService(
@@ -641,10 +644,20 @@ public class BugreportProgressService extends Service {
// The binder call didn't go through successfully, so need to close the fds. // The binder call didn't go through successfully, so need to close the fds.
// If the calls went through API takes ownership. // If the calls went through API takes ownership.
FileUtils.closeQuietly(bugreportFd); FileUtils.closeQuietly(bugreportFd);
FileUtils.closeQuietly(screenshotFd); if (screenshotFd != null) {
FileUtils.closeQuietly(screenshotFd);
}
} }
} }
private static boolean isDefaultScreenshotRequired(
@BugreportParams.BugreportMode int bugreportType) {
// Modify dumpstate#SetOptionsFromMode as well for default system screenshots.
// We override dumpstate for interactive bugreports.
return bugreportType == BugreportParams.BUGREPORT_MODE_FULL
|| bugreportType == BugreportParams.BUGREPORT_MODE_WEAR;
}
private static ParcelFileDescriptor getFd(File file) { private static ParcelFileDescriptor getFd(File file) {
try { try {
return ParcelFileDescriptor.open(file, return ParcelFileDescriptor.open(file,