| Index: chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java
|
| index b4aa77bc5e20e2b41b867b37c8858a5e70da8b96..4dd088612ecefcb055fc6b7fd9d9bd4ead8d5e9f 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java
|
| @@ -4,10 +4,14 @@
|
|
|
| package org.chromium.chrome.browser.photo_picker;
|
|
|
| +import android.content.res.Resources;
|
| import android.graphics.Bitmap;
|
| +import android.os.AsyncTask;
|
| import android.support.v7.widget.RecyclerView.ViewHolder;
|
| import android.text.TextUtils;
|
|
|
| +import org.chromium.chrome.R;
|
| +
|
| import java.util.List;
|
|
|
| /**
|
| @@ -41,6 +45,17 @@ public class PickerBitmapViewHolder
|
| return;
|
| }
|
|
|
| + if (mCategoryView.getHighResBitmaps().get(filePath) == null) {
|
| + mCategoryView.getHighResBitmaps().put(filePath, bitmap);
|
| + }
|
| +
|
| + if (mCategoryView.getLowResBitmaps().get(filePath) == null) {
|
| + Resources resources = mItemView.getContext().getResources();
|
| + new BitmapScalerTask(mCategoryView.getLowResBitmaps(), filePath,
|
| + resources.getDimensionPixelSize(R.dimen.photo_picker_grainy_thumbnail_size))
|
| + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, bitmap);
|
| + }
|
| +
|
| if (!TextUtils.equals(mBitmapDetails.getFilePath(), filePath)) {
|
| return;
|
| }
|
| @@ -67,12 +82,24 @@ public class PickerBitmapViewHolder
|
| return;
|
| }
|
|
|
| - // TODO(finnur): Use cached image, if available.
|
| -
|
| - mItemView.initialize(mBitmapDetails, null, true);
|
| + String filePath = mBitmapDetails.getFilePath();
|
| + Bitmap original = mCategoryView.getHighResBitmaps().get(filePath);
|
| + if (original != null) {
|
| + mItemView.initialize(mBitmapDetails, original, false);
|
| + return;
|
| + }
|
|
|
| int size = mCategoryView.getImageSize();
|
| - mCategoryView.getDecoderServiceHost().decodeImage(mBitmapDetails.getFilePath(), size, this);
|
| + Bitmap placeholder = mCategoryView.getLowResBitmaps().get(filePath);
|
| + if (placeholder != null) {
|
| + // For performance stats see http://crbug.com/719919.
|
| + placeholder = BitmapUtils.scale(placeholder, size, false);
|
| + mItemView.initialize(mBitmapDetails, placeholder, true);
|
| + } else {
|
| + mItemView.initialize(mBitmapDetails, null, true);
|
| + }
|
| +
|
| + mCategoryView.getDecoderServiceHost().decodeImage(filePath, size, this);
|
| }
|
|
|
| /**
|
|
|