| Index: chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
|
| index 17dde3f751d184e8bdd61754dbf8f3b81d296824..6c73972eadb3c87da1d3b42c7a18259e2ac6809e 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
|
| @@ -10,7 +10,6 @@ import android.graphics.Rect;
|
| import android.support.v7.widget.GridLayoutManager;
|
| import android.support.v7.widget.RecyclerView;
|
| import android.support.v7.widget.Toolbar.OnMenuItemClickListener;
|
| -import android.util.AttributeSet;
|
| import android.view.LayoutInflater;
|
| import android.view.MenuItem;
|
| import android.view.View;
|
| @@ -21,14 +20,14 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
|
| import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
| import org.chromium.ui.PhotoPickerListener;
|
|
|
| -import java.util.ArrayList;
|
| import java.util.List;
|
|
|
| /**
|
| * A class for keeping track of common data associated with showing photos in
|
| * the photo picker, for example the RecyclerView and the bitmap caches.
|
| */
|
| -public class PickerCategoryView extends RelativeLayout implements OnMenuItemClickListener {
|
| +public class PickerCategoryView extends RelativeLayout
|
| + implements FileEnumWorkerTask.FilesEnumeratedCallback, OnMenuItemClickListener {
|
| // The dialog that owns us.
|
| private PhotoPickerDialog mDialog;
|
|
|
| @@ -69,21 +68,14 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
|
| // The size of the bitmaps (equal length for width and height).
|
| private int mImageSize;
|
|
|
| + // A worker task for asynchronously enumerating files off the main thread.
|
| + private FileEnumWorkerTask mWorkerTask;
|
| +
|
| public PickerCategoryView(Context context) {
|
| super(context);
|
| postConstruction(context);
|
| }
|
|
|
| - public PickerCategoryView(Context context, AttributeSet attrs) {
|
| - super(context, attrs);
|
| - postConstruction(context);
|
| - }
|
| -
|
| - public PickerCategoryView(Context context, AttributeSet attrs, int defStyle) {
|
| - super(context, attrs, defStyle);
|
| - postConstruction(context);
|
| - }
|
| -
|
| /**
|
| * A helper function for initializing the PickerCategoryView.
|
| * @param context The context to use.
|
| @@ -120,6 +112,16 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
|
| }
|
|
|
| /**
|
| + * Cancels any outstanding requests.
|
| + */
|
| + public void onDialogDismissed() {
|
| + if (mWorkerTask != null) {
|
| + mWorkerTask.cancel(true);
|
| + mWorkerTask = null;
|
| + }
|
| + }
|
| +
|
| + /**
|
| * Initializes the PickerCategoryView object.
|
| * @param dialog The dialog showing us.
|
| * @param listener The listener who should be notified of actions.
|
| @@ -134,6 +136,16 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
|
| mListener = listener;
|
| }
|
|
|
| + // FileEnumWorkerTask.FilesEnumeratedCallback:
|
| +
|
| + @Override
|
| + public void filesEnumeratedCallback(List<PickerBitmap> files) {
|
| + mPickerBitmaps = files;
|
| + if (files != null && files.size() > 0) {
|
| + mPickerAdapter.notifyDataSetChanged();
|
| + }
|
| + }
|
| +
|
| // OnMenuItemClickListener:
|
|
|
| @Override
|
| @@ -203,15 +215,12 @@ public class PickerCategoryView extends RelativeLayout implements OnMenuItemClic
|
| * Prepares bitmaps for loading.
|
| */
|
| private void prepareBitmaps() {
|
| - // TODO(finnur): Use worker thread to fetch bitmaps instead of hard-coding.
|
| - mPickerBitmaps = new ArrayList<>();
|
| - mPickerBitmaps.add(0, new PickerBitmap("", 0, PickerBitmap.GALLERY));
|
| - mPickerBitmaps.add(0, new PickerBitmap("", 0, PickerBitmap.CAMERA));
|
| - mPickerBitmaps.add(new PickerBitmap("foo/bar1.jpg", 1, PickerBitmap.PICTURE));
|
| - mPickerBitmaps.add(new PickerBitmap("foo/bar2.jpg", 2, PickerBitmap.PICTURE));
|
| - mPickerBitmaps.add(new PickerBitmap("foo/bar3.jpg", 3, PickerBitmap.PICTURE));
|
| - mPickerBitmaps.add(new PickerBitmap("foo/bar4.jpg", 4, PickerBitmap.PICTURE));
|
| - mPickerAdapter.notifyDataSetChanged();
|
| + if (mWorkerTask != null) {
|
| + mWorkerTask.cancel(true);
|
| + }
|
| +
|
| + mWorkerTask = new FileEnumWorkerTask(this, new MimeTypeFileFilter("image/*"));
|
| + mWorkerTask.execute();
|
| }
|
|
|
| /**
|
|
|