Relay extras from sorted cursor.

Add a test to ensure extras are relayed.

Bug: 32229795

Change-Id: I253eb04ab2a7e893534f40ced259146f6b00e75b
diff --git a/src/com/android/documentsui/sorting/SortingCursorWrapper.java b/src/com/android/documentsui/sorting/SortingCursorWrapper.java
index 89869d9..691c1d7 100644
--- a/src/com/android/documentsui/sorting/SortingCursorWrapper.java
+++ b/src/com/android/documentsui/sorting/SortingCursorWrapper.java
@@ -21,6 +21,7 @@
 
 import android.database.AbstractCursor;
 import android.database.Cursor;
+import android.os.Bundle;
 import android.provider.DocumentsContract.Document;
 
 import com.android.documentsui.base.Shared;
@@ -156,6 +157,11 @@
         return mCursor.isNull(column);
     }
 
+    @Override
+    public Bundle getExtras() {
+        return mCursor.getExtras();
+    }
+
     /**
      * @return Timestamp for the given document. Some docs (e.g. active downloads) have a null
      * timestamp - these will be replaced with MAX_LONG so that such files get sorted to the top
diff --git a/tests/common/com/android/documentsui/StubProvider.java b/tests/common/com/android/documentsui/StubProvider.java
index f71ce5d..dbd948c 100644
--- a/tests/common/com/android/documentsui/StubProvider.java
+++ b/tests/common/com/android/documentsui/StubProvider.java
@@ -766,7 +766,7 @@
             this.file = file;
             this.documentId = getDocumentIdForFile(file);
             this.mimeType = Document.MIME_TYPE_DIR;
-            this.streamTypes = new ArrayList<String>();
+            this.streamTypes = new ArrayList<>();
             this.flags = Document.FLAG_DIR_SUPPORTS_CREATE | Document.FLAG_SUPPORTS_RENAME;
             this.parentId = null;
             this.rootInfo = rootInfo;
diff --git a/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java b/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java
index 1d6a09c..eb1c54f 100644
--- a/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java
+++ b/tests/unit/com/android/documentsui/sorting/SortingCursorWrapperTest.java
@@ -17,13 +17,14 @@
 package com.android.documentsui.sorting;
 
 import static com.android.documentsui.base.DocumentInfo.getCursorString;
-
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 
 import android.database.Cursor;
 import android.database.MatrixCursor;
+import android.os.Bundle;
+import android.provider.DocumentsContract;
 import android.provider.DocumentsContract.Document;
 import android.support.test.runner.AndroidJUnit4;
 
@@ -366,6 +367,27 @@
         }
     }
 
+    @Test
+    public void testReturnsWrappedExtras() {
+        MatrixCursor c = new MatrixCursor(COLUMNS);
+        Bundle extras = new Bundle();
+        extras.putBoolean(DocumentsContract.EXTRA_LOADING, true);
+        extras.putString(DocumentsContract.EXTRA_INFO, "cheddar");
+        extras.putString(DocumentsContract.EXTRA_ERROR, "flop");
+        c.setExtras(extras);
+
+        // set sorting to avoid an NPE.
+        sortModel.sortByUser(
+                SortModel.SORT_DIMENSION_ID_DATE,
+                SortDimension.SORT_DIRECTION_DESCENDING);
+
+        Bundle actual = createSortingCursorWrapper(c).getExtras();
+
+        assertTrue(actual.getBoolean(DocumentsContract.EXTRA_LOADING, false));
+        assertEquals("cheddar", actual.getString(DocumentsContract.EXTRA_INFO));
+        assertEquals("flop", actual.getString(DocumentsContract.EXTRA_ERROR));
+    }
+
     private Cursor createSortingCursorWrapper() {
         return createSortingCursorWrapper(cursor);
     }