Render thumbnails in DocumentsUI jank tests.

Bug: 27383277
Change-Id: I0b5f267d7dc6c6c426b68f261c470f4ae46367a4
diff --git a/packages/DocumentsUI/perf-tests/Android.mk b/packages/DocumentsUI/perf-tests/Android.mk
index 919fc56..5ebf85f 100644
--- a/packages/DocumentsUI/perf-tests/Android.mk
+++ b/packages/DocumentsUI/perf-tests/Android.mk
@@ -2,8 +2,8 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := tests
-#LOCAL_SDK_VERSION := current
 
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 LOCAL_SRC_FILES := $(call all-java-files-under, src) \
     $(call all-java-files-under, ../tests/src/com/android/documentsui/bots) \
     ../tests/src/com/android/documentsui/ActivityTest.java \
diff --git a/packages/DocumentsUI/perf-tests/res/raw/earth_small.jpg b/packages/DocumentsUI/perf-tests/res/raw/earth_small.jpg
new file mode 100644
index 0000000..dd2da3e
--- /dev/null
+++ b/packages/DocumentsUI/perf-tests/res/raw/earth_small.jpg
Binary files differ
diff --git a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/StressProvider.java b/packages/DocumentsUI/perf-tests/src/com/android/documentsui/StressProvider.java
index 6147a71..f9b06f8 100644
--- a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/StressProvider.java
+++ b/packages/DocumentsUI/perf-tests/src/com/android/documentsui/StressProvider.java
@@ -18,9 +18,11 @@
 
 import android.content.Context;
 import android.content.pm.ProviderInfo;
+import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
 import android.database.MatrixCursor.RowBuilder;
 import android.database.MatrixCursor;
+import android.graphics.Point;
 import android.os.CancellationSignal;
 import android.os.FileUtils;
 import android.os.ParcelFileDescriptor;
@@ -31,6 +33,7 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -102,7 +105,14 @@
         children = new ArrayList<StubDocument>();
         mChildDocuments.put(STRESS_ROOT_2_DOC_ID, children);
         for (int i = 0; i < STRESS_ROOT_2_ITEMS; i++) {
-            document = StubDocument.createFile(STRESS_ROOT_1_ITEMS + i);
+            try {
+                document = StubDocument.createFile(
+                        getContext(), MIME_TYPE_IMAGE,
+                        com.android.documentsui.perftests.R.raw.earth_small,
+                        STRESS_ROOT_1_ITEMS + i);
+            } catch (IOException e) {
+                return false;
+            }
             mDocuments.put(document.id, document);
             children.add(document);
         }
@@ -151,6 +161,14 @@
     }
 
     @Override
+    public AssetFileDescriptor openDocumentThumbnail(String docId, Point sizeHint,
+            CancellationSignal signal)
+            throws FileNotFoundException {
+        final StubDocument document = mDocuments.get(docId);
+        return getContext().getResources().openRawResourceFd(document.thumbnail);
+    }
+
+    @Override
     public ParcelFileDescriptor openDocument(String docId, String mode,
             CancellationSignal signal)
             throws FileNotFoundException {
@@ -171,7 +189,8 @@
         row.add(Document.COLUMN_DISPLAY_NAME, document.id);
         row.add(Document.COLUMN_SIZE, document.size);
         row.add(Document.COLUMN_MIME_TYPE, document.mimeType);
-        row.add(Document.COLUMN_FLAGS, 0);
+        row.add(Document.COLUMN_FLAGS,
+                document.thumbnail != -1 ? Document.FLAG_SUPPORTS_THUMBNAIL : 0);
         row.add(Document.COLUMN_LAST_MODIFIED, document.lastModified);
     }
 
@@ -184,28 +203,32 @@
         final String id;
         final int size;
         final long lastModified;
+        final int thumbnail;
 
-        private StubDocument(String mimeType, String id, int size, long lastModified) {
+        private StubDocument(String mimeType, String id, int size, long lastModified,
+                int thumbnail) {
             this.mimeType = mimeType;
             this.id = id;
             this.size = size;
             this.lastModified = lastModified;
+            this.thumbnail = thumbnail;
         }
 
         public static StubDocument createDirectory(int index) {
             return new StubDocument(
                     DocumentsContract.Document.MIME_TYPE_DIR, createRandomId(index), 0,
-                    createRandomTime(index));
+                    createRandomTime(index), -1);
         }
 
         public static StubDocument createDirectory(String id) {
-            return new StubDocument(DocumentsContract.Document.MIME_TYPE_DIR, id, 0, 0);
+            return new StubDocument(DocumentsContract.Document.MIME_TYPE_DIR, id, 0, 0, -1);
         }
 
-        public static StubDocument createFile(int index) {
+        public static StubDocument createFile(Context context, String mimeType, int thumbnail,
+                int index) throws IOException {
             return new StubDocument(
-                    MIME_TYPE_IMAGE, createRandomId(index), createRandomSize(index),
-                    createRandomTime(index));
+                    mimeType, createRandomId(index), createRandomSize(index),
+                    createRandomTime(index), thumbnail);
         }
 
         private static String createRandomId(int index) {