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 4dd088612ecefcb055fc6b7fd9d9bd4ead8d5e9f..bcd8e3473cc0ef15c45de5806c8214aba28be87e 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 |
@@ -7,12 +7,15 @@ package org.chromium.chrome.browser.photo_picker; |
import android.content.res.Resources; |
import android.graphics.Bitmap; |
import android.os.AsyncTask; |
+import android.os.SystemClock; |
import android.support.v7.widget.RecyclerView.ViewHolder; |
import android.text.TextUtils; |
+import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.chrome.R; |
import java.util.List; |
+import java.util.concurrent.TimeUnit; |
/** |
* Holds on to a {@link PickerBitmapView} that displays information about a picker bitmap. |
@@ -69,8 +72,10 @@ public class PickerBitmapViewHolder |
* Display a single item from |position| in the PickerCategoryView. |
* @param categoryView The PickerCategoryView to use to fetch the image. |
* @param position The position of the item to fetch. |
+ * @return The decoding action required to display the item. |
*/ |
- public void displayItem(PickerCategoryView categoryView, int position) { |
+ public @PickerAdapter.DecodeActions int displayItem( |
+ PickerCategoryView categoryView, int position) { |
mCategoryView = categoryView; |
List<PickerBitmap> pickerBitmaps = mCategoryView.getPickerBitmaps(); |
@@ -79,27 +84,33 @@ public class PickerBitmapViewHolder |
if (mBitmapDetails.type() == PickerBitmap.CAMERA |
|| mBitmapDetails.type() == PickerBitmap.GALLERY) { |
mItemView.initialize(mBitmapDetails, null, false); |
- return; |
+ return PickerAdapter.NO_ACTION; |
} |
String filePath = mBitmapDetails.getFilePath(); |
Bitmap original = mCategoryView.getHighResBitmaps().get(filePath); |
if (original != null) { |
mItemView.initialize(mBitmapDetails, original, false); |
- return; |
+ return PickerAdapter.FROM_CACHE; |
} |
int size = mCategoryView.getImageSize(); |
Bitmap placeholder = mCategoryView.getLowResBitmaps().get(filePath); |
if (placeholder != null) { |
// For performance stats see http://crbug.com/719919. |
+ long begin = SystemClock.elapsedRealtime(); |
placeholder = BitmapUtils.scale(placeholder, size, false); |
+ long scaleTime = SystemClock.elapsedRealtime() - begin; |
+ RecordHistogram.recordTimesHistogram( |
+ "Android.PhotoPicker.UpscaleLowResBitmap", scaleTime, TimeUnit.MILLISECONDS); |
+ |
mItemView.initialize(mBitmapDetails, placeholder, true); |
} else { |
mItemView.initialize(mBitmapDetails, null, true); |
} |
mCategoryView.getDecoderServiceHost().decodeImage(filePath, size, this); |
+ return PickerAdapter.DECODE; |
} |
/** |