summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java19
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java2
-rw-r--r--packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java4
3 files changed, 10 insertions, 15 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
index bae18ab06317..68b1bcc411fc 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
@@ -22,6 +22,7 @@ import static com.android.documentsui.State.SORT_ORDER_LAST_MODIFIED;
import static com.android.documentsui.State.SORT_ORDER_SIZE;
import android.database.Cursor;
+import android.database.MergeCursor;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
@@ -71,16 +72,6 @@ public class Model {
@Nullable String error;
@Nullable DocumentInfo doc;
- /**
- * Generates a Model ID for a cursor entry that refers to a document. The Model ID is a unique
- * string that can be used to identify the document referred to by the cursor.
- *
- * @param c A cursor that refers to a document.
- */
- static String createModelId(String authority, String docId) {
- return authority + "|" + docId;
- }
-
private void notifyUpdateListeners() {
for (UpdateListener listener: mUpdateListeners) {
listener.onModelUpdate(this);
@@ -174,7 +165,13 @@ public class Model {
// Generates a Model ID for a cursor entry that refers to a document. The Model ID is a
// unique string that can be used to identify the document referred to by the cursor.
- mIds[pos] = createModelId(getString(mAuthorityIndex), getString(mDocIdIndex));
+ // If the cursor is a merged cursor over multiple authorities, then prefix the ids
+ // with the authority to avoid collisions.
+ if (mCursor instanceof MergeCursor) {
+ mIds[pos] = getString(mAuthorityIndex) + "|" + mCursor.getString(mDocIdIndex);
+ } else {
+ mIds[pos] = mCursor.getString(mDocIdIndex);
+ }
mimeType = getString(mMimeTypeIndex);
isDirs[pos] = Document.MIME_TYPE_DIR.equals(mimeType);
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java
index c6ad5116d93b..3536593564af 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java
@@ -284,7 +284,7 @@ public class ModelTest extends AndroidTestCase {
String id = Integer.toString(i);
row.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY);
row.add(Document.COLUMN_DOCUMENT_ID, id);
- currentDownloads.add(Model.createModelId(AUTHORITY, id));
+ currentDownloads.add(id);
}
DirectoryResult r = new DirectoryResult();
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java
index d8c29db81a77..2d819ffcdf07 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java
@@ -62,9 +62,7 @@ public class TestModel extends Model {
update(r);
}
- // Note that model id includes authority qualifier and is distinct
- // WRT documentId because of this.
String idForPosition(int p) {
- return createModelId(mAuthority, Integer.toString(p));
+ return Integer.toString(p);
}
}