| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
|
| index 7d99986fe6f1df09a45022777b0ac8074a927bc2..70e3ab666c4e2be2aeaae0adbfac70efd33be73c 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticle.java
|
| @@ -3,27 +3,14 @@
|
| // found in the LICENSE file.
|
| package org.chromium.chrome.browser.ntp.snippets;
|
|
|
| -import android.graphics.drawable.Drawable;
|
| -import android.os.AsyncTask;
|
| -import android.view.View;
|
| -import android.widget.ImageView;
|
| +import android.graphics.Bitmap;
|
|
|
| -import org.chromium.base.Log;
|
| -import org.chromium.base.StreamUtil;
|
| import org.chromium.chrome.browser.ntp.cards.NewTabPageListItem;
|
|
|
| -import java.io.IOException;
|
| -import java.io.InputStream;
|
| -import java.net.MalformedURLException;
|
| -import java.net.URL;
|
| -
|
| /**
|
| * Represents the data for an article card on the NTP.
|
| */
|
| public class SnippetArticle implements NewTabPageListItem {
|
| - private static final String TAG = "SnippetArticle";
|
| -
|
| - private static final int FADE_IN_ANIMATION_TIME_MS = 300;
|
|
|
| public final String mTitle;
|
| public final String mPublisher;
|
| @@ -33,54 +20,8 @@
|
| public final long mTimestamp;
|
| public final int mPosition;
|
|
|
| - private ThumbnailRenderingTask mThumbnailRenderingTask;
|
| -
|
| - // Async task to create the thumbnail from a URL
|
| - // TODO(maybelle): This task to retrieve the thumbnail from the web is temporary while
|
| - // we are prototyping this feature for clank. For the real production feature, we
|
| - // will likely have to download/decode the thumbnail on the native side.
|
| - private static class ThumbnailRenderingTask extends AsyncTask<String, Void, Drawable> {
|
| - private ImageView mThumbnailView;
|
| -
|
| - ThumbnailRenderingTask(ImageView thumbnailView) {
|
| - mThumbnailView = thumbnailView;
|
| -
|
| - // The view might be already holding the thumbnail from another snippet, as the view
|
| - // is recycled. We start by hiding it to avoid having a stale image be displayed while
|
| - // the new one is being downloaded.
|
| - mThumbnailView.setVisibility(View.INVISIBLE);
|
| - }
|
| -
|
| - @Override
|
| - protected Drawable doInBackground(String... params) {
|
| - if (params[0].isEmpty()) return null;
|
| - InputStream is = null;
|
| - try {
|
| - is = (InputStream) new URL(params[0]).getContent();
|
| - return Drawable.createFromStream(is, "thumbnail");
|
| - } catch (MalformedURLException e) {
|
| - Log.e(TAG, "Could not get image thumbnail due to malformed URL", e);
|
| - } catch (IOException e) {
|
| - Log.e(TAG, "Could not get image thumbnail", e);
|
| - } finally {
|
| - StreamUtil.closeQuietly(is);
|
| - }
|
| - return null;
|
| - }
|
| -
|
| - @Override
|
| - protected void onPostExecute(Drawable thumbnail) {
|
| - if (thumbnail == null) {
|
| - mThumbnailView.setVisibility(View.GONE);
|
| - } else {
|
| - // Fade in the image thumbnail
|
| - mThumbnailView.setImageDrawable(thumbnail);
|
| - mThumbnailView.setVisibility(View.VISIBLE);
|
| - mThumbnailView.setAlpha(0f);
|
| - mThumbnailView.animate().alpha(1f).setDuration(FADE_IN_ANIMATION_TIME_MS);
|
| - }
|
| - }
|
| - }
|
| + /** Bitmap of the thumbnail, fetched lazily, when the RecyclerView wants to show the snippet. */
|
| + private Bitmap mThumbnailBitmap;
|
|
|
| /**
|
| * Creates a SnippetArticle object that will hold the data
|
| @@ -108,16 +49,11 @@ public int getType() {
|
| return NewTabPageListItem.VIEW_TYPE_SNIPPET;
|
| }
|
|
|
| - /**
|
| - * Retrieves this SnippetArticle's thumbnail asynchronously and sets it onto the given
|
| - * ImageView.
|
| - *
|
| - * @param view The ImageView to set the thumbnail onto.
|
| - */
|
| - public void setThumbnailOnView(ImageView view) {
|
| - if (mThumbnailRenderingTask != null) mThumbnailRenderingTask.cancel(true);
|
| + Bitmap getThumbnailBitmap() {
|
| + return mThumbnailBitmap;
|
| + }
|
|
|
| - mThumbnailRenderingTask = new ThumbnailRenderingTask(view);
|
| - mThumbnailRenderingTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, mThumbnailUrl);
|
| + void setThumbnailBitmap(Bitmap bitmap) {
|
| + mThumbnailBitmap = bitmap;
|
| }
|
| }
|
|
|