Bug 1243558 - Safely close Cursor in ScreenshotObserver. r=ahunt
MozReview-Commit-ID: L2R51jt34oS
--- a/mobile/android/base/java/org/mozilla/gecko/ScreenshotObserver.java
+++ b/mobile/android/base/java/org/mozilla/gecko/ScreenshotObserver.java
@@ -101,18 +101,18 @@ public class ScreenshotObserver {
public void onMediaChange(final Uri uri) {
// Make sure we are on not on the main thread.
final ContentResolver cr = context.getContentResolver();
ThreadUtils.postToBackgroundThread(new Runnable() {
@Override
public void run() {
// Find the most recent image added to the MediaStore and see if it's a screenshot.
+ final Cursor cursor = cr.query(uri, mediaProjections, null, null, MediaStore.Images.ImageColumns.DATE_ADDED + " DESC LIMIT 1");
try {
- Cursor cursor = cr.query(uri, mediaProjections, null, null, MediaStore.Images.ImageColumns.DATE_ADDED + " DESC LIMIT 1");
if (cursor == null) {
return;
}
while (cursor.moveToNext()) {
String data = cursor.getString(0);
Log.i(LOGTAG, "data: " + data);
String display = cursor.getString(1);
@@ -124,19 +124,22 @@ public class ScreenshotObserver {
Log.i(LOGTAG, "title: " + title);
if (album != null && album.toLowerCase().contains("screenshot")) {
if (listener != null) {
listener.onScreenshotTaken(data, title);
break;
}
}
}
- cursor.close();
} catch (Exception e) {
Log.e(LOGTAG, "Failure to process media change: ", e);
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
}
}
});
}
private class MediaObserver extends ContentObserver {
public MediaObserver() {
super(null);