Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1247)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java

Issue 2845773003: Photo Picker Dialog: Add caching for the decoded images. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 70d18a837fd8316262c9c3918ccda1a786811a35..ad2d23235185cb46e1b793e91f533fb33886f077 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
@@ -45,6 +45,16 @@ public class PickerBitmapViewHolder extends ViewHolder {
return;
}
+ if (mCategoryView.getHighResBitmaps().get(filePath) == null) {
+ mCategoryView.getHighResBitmaps().put(filePath, bitmap);
Michael van Ouwerkerk 2017/04/27 17:07:34 The documentation for this param says it might be
Finnur 2017/05/04 16:05:15 That changed with the latest sync. Decoding will n
+ }
+
+ if (mCategoryView.getLowResBitmaps().get(filePath) == null) {
+ // Scaling the image down takes between 0-1 ms on average (Nexus 6 phone debug build).
+ Bitmap lowres = BitmapUtils.scale(bitmap, 40, false);
Michael van Ouwerkerk 2017/04/27 17:07:34 What's 40? Px? Dp? Maybe extract a documented cons
Finnur 2017/05/04 16:05:15 Done.
+ mCategoryView.getLowResBitmaps().put(filePath, lowres);
+ }
+
if (!TextUtils.equals(mBitmapDetails.getFilePath(), filePath)) {
return;
}
@@ -69,10 +79,24 @@ public class PickerBitmapViewHolder extends ViewHolder {
return;
}
- // TODO(finnur): Use cached image, if available.
+ String filePath = mBitmapDetails.getFilePath();
+ Bitmap original = mCategoryView.getHighResBitmaps().get(filePath);
+ if (original != null) {
+ mItemView.initialize(mBitmapDetails, original, false);
+ return;
+ }
+
+ int size = mCategoryView.getImageSize();
+ Bitmap placeholder = mCategoryView.getLowResBitmaps().get(filePath);
+ if (placeholder != null) {
+ // Scaling the image up takes between 3-4 ms on average (Nexus 6 phone debug build).
+ placeholder = BitmapUtils.scale(placeholder, size, false);
+ mItemView.initialize(mBitmapDetails, placeholder, true);
+ } else {
+ mItemView.initialize(mBitmapDetails, null, true);
+ }
// TODO(finnur): Use decoder instead.
- int size = mCategoryView.getImageSize();
imageDecodedCallback(mBitmapDetails.getFilePath(), createPlaceholderBitmap(size, size));
}

Powered by Google App Engine
This is Rietveld 408576698