summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-11-18 17:41:33 -0800
committerThe Android Automerger <android-build@google.com>2013-11-19 17:35:45 -0800
commit0fb8556d38b1ae19e4021e5837353781326101ce (patch)
treefc152471f31844ab2c7b2777ce7b2ac63bbf7502
parentb57512ec9a1ee9f1157551cfea287520478a2800 (diff)
downloadbase-0fb8556d38b1ae19e4021e5837353781326101ce.tar.gz
Mask OOBE when filtering recent documents.
There is a data ownership issue related to recent documents Cursors, and the loader and UI threads can end up traversing the same Cursor at runtime. This change masks OOBE crashes caused by this race until we have time to fix cleanly. Bug: 11736668 Change-Id: I2039a5edcf341fcaedacc2f08bde96fc5a271782
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java2
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java4
2 files changed, 5 insertions, 1 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java b/packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java
index 55d73f233608..1cbc221e1057 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java
@@ -51,7 +51,7 @@ public class FilteringCursorWrapper extends AbstractCursor {
mPosition = new int[count];
cursor.moveToPosition(-1);
- while (cursor.moveToNext()) {
+ while (cursor.moveToNext() && mCount < count) {
final String mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
final long lastModified = getCursorLong(cursor, Document.COLUMN_LAST_MODIFIED);
if (rejectMimes != null && MimePredicate.mimeMatches(rejectMimes, mimeType)) {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java b/packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java
index 3a8a3fbdd103..34ce42dc56f4 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java
@@ -55,6 +55,10 @@ import java.util.concurrent.TimeUnit;
public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
private static final boolean LOGD = true;
+ // TODO: clean up cursor ownership so background thread doesn't traverse
+ // previously returned cursors for filtering/sorting; this currently races
+ // with the UI thread.
+
private static final int MAX_OUTSTANDING_RECENTS = 4;
private static final int MAX_OUTSTANDING_RECENTS_SVELTE = 2;