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

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/media/ui/MediaImageManagerTest.java

Issue 2606363002: [MediaNotification] Fix logic for resetting MediaImage (Closed)
Patch Set: fixed build Created 3 years, 11 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
« no previous file with comments | « chrome/android/java_sources.gni ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/junit/src/org/chromium/chrome/browser/media/ui/MediaImageManagerTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/media/ui/MediaImageManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/media/ui/MediaImageManagerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c82cca311354e81b48af9fd7a9ab72c603c30c7a
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/media/ui/MediaImageManagerTest.java
@@ -0,0 +1,208 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.media.ui;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNotNull;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import static org.chromium.content_public.common.MediaMetadata.MediaImage;
+
+import android.graphics.Bitmap;
+import android.graphics.Rect;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowLog;
+
+import org.chromium.content_public.browser.WebContents;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
+
+import java.util.ArrayList;
+
+/**
+ * Robolectric tests for MediaImageManager.
+ */
+@RunWith(LocalRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class MediaImageManagerTest {
+ private static final int TINY_IMAGE_SIZE_PX = 50;
+ private static final int MIN_IMAGE_SIZE_PX = 100;
+ private static final int IDEAL_IMAGE_SIZE_PX = 200;
+ private static final int REQUEST_ID_1 = 1;
+ private static final int REQUEST_ID_2 = 2;
+ private static final String IMAGE_URL = "http://example.com/foo.png";
+
+ @Mock
+ private WebContents mWebContents;
+ @Mock
+ private MediaImageCallback mCallback;
+
+ private MediaImageManager mMediaImageManager;
+
+ // Prepared data for feeding.
+ private ArrayList<MediaImage> mImages;
+ private ArrayList<Bitmap> mBitmaps;
+ private ArrayList<Rect> mOriginalImageSizes;
+
+ @Before
+ public void setUp() {
+ ShadowLog.stream = System.out;
+ MockitoAnnotations.initMocks(this);
+ doReturn(REQUEST_ID_1)
+ .when(mWebContents)
+ .downloadImage(anyString(), anyBoolean(), anyInt(), anyBoolean(),
+ any(MediaImageManager.class));
+ mMediaImageManager = new MediaImageManager(MIN_IMAGE_SIZE_PX, IDEAL_IMAGE_SIZE_PX);
+ mMediaImageManager.setWebContents(mWebContents);
+
+ mImages = new ArrayList<MediaImage>();
+ mImages.add(new MediaImage(IMAGE_URL, "", new ArrayList<Rect>()));
+
+ mBitmaps = new ArrayList<Bitmap>();
+ mBitmaps.add(Bitmap.createBitmap(
+ IDEAL_IMAGE_SIZE_PX, IDEAL_IMAGE_SIZE_PX, Bitmap.Config.ARGB_8888));
+
+ mOriginalImageSizes = new ArrayList<Rect>();
+ mOriginalImageSizes.add(new Rect(0, 0, IDEAL_IMAGE_SIZE_PX, IDEAL_IMAGE_SIZE_PX));
+ }
+
+ @Test
+ public void testDownloadImage() {
+ mMediaImageManager.downloadImage(mImages, mCallback);
+ verify(mWebContents)
+ .downloadImage(eq(IMAGE_URL), eq(false),
+ eq(MediaImageManager.MAX_BITMAP_SIZE_FOR_DOWNLOAD), eq(false),
+ eq(mMediaImageManager));
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_1, 200, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+
+ verify(mCallback).onImageDownloaded(isNotNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNull(Bitmap.class));
+ }
+
+ @Test
+ public void testDownloadImageTwice() {
+ // First download.
+ mMediaImageManager.downloadImage(mImages, mCallback);
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_1, 200, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+
+ // Second download.
+ doReturn(REQUEST_ID_2)
+ .when(mWebContents)
+ .downloadImage(anyString(), anyBoolean(), anyInt(), anyBoolean(),
+ any(MediaImageManager.class));
+ mMediaImageManager.downloadImage(mImages, mCallback);
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_2, 200, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+
+ verify(mWebContents, times(2))
+ .downloadImage(eq(IMAGE_URL), eq(false),
+ eq(MediaImageManager.MAX_BITMAP_SIZE_FOR_DOWNLOAD), eq(false),
+ eq(mMediaImageManager));
+ verify(mCallback, times(2)).onImageDownloaded(isNotNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNull(Bitmap.class));
+ }
+
+ @Test
+ public void testDuplicateResponce() {
+ mMediaImageManager.downloadImage(mImages, mCallback);
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_1, 200, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_1, 200, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+
+ verify(mCallback, times(1)).onImageDownloaded(isNotNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNull(Bitmap.class));
+ }
+
+ @Test
+ public void testWrongResponceId() {
+ mMediaImageManager.downloadImage(mImages, mCallback);
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_2, 200, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+
+ verify(mCallback, times(0)).onImageDownloaded(isNotNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNull(Bitmap.class));
+ }
+
+ @Test
+ public void testTinyImagesRemovedBeforeDownloading() {
+ mImages.clear();
+ ArrayList<Rect> sizes = new ArrayList<Rect>();
+ sizes.add(new Rect(0, 0, TINY_IMAGE_SIZE_PX, TINY_IMAGE_SIZE_PX));
+ mImages.add(new MediaImage(IMAGE_URL, "", sizes));
+ mMediaImageManager.downloadImage(mImages, mCallback);
+
+ verify(mWebContents, times(0))
+ .downloadImage(anyString(), anyBoolean(), anyInt(), anyBoolean(),
+ any(MediaImageManager.class));
+ verify(mCallback).onImageDownloaded(isNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNotNull(Bitmap.class));
+ }
+
+ @Test
+ public void testTinyImagesRemovedAfterDownloading() {
+ mMediaImageManager.downloadImage(mImages, mCallback);
+
+ // Reset the data for feeding.
+ mBitmaps.clear();
+ mBitmaps.add(Bitmap.createBitmap(
+ TINY_IMAGE_SIZE_PX, TINY_IMAGE_SIZE_PX, Bitmap.Config.ARGB_8888));
+ mOriginalImageSizes.clear();
+ mOriginalImageSizes.add(new Rect(0, 0, TINY_IMAGE_SIZE_PX, TINY_IMAGE_SIZE_PX));
+
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_1, 200, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+
+ verify(mCallback).onImageDownloaded(isNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNotNull(Bitmap.class));
+ }
+
+ @Test
+ public void testDownloadImageFails() {
+ mMediaImageManager.downloadImage(mImages, mCallback);
+ mMediaImageManager.onFinishDownloadImage(
+ REQUEST_ID_1, 404, IMAGE_URL, mBitmaps, mOriginalImageSizes);
+
+ verify(mCallback).onImageDownloaded(isNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNotNull(Bitmap.class));
+ }
+
+ @Test
+ public void testEmptyImageList() {
+ mImages.clear();
+ mMediaImageManager.downloadImage(mImages, mCallback);
+
+ verify(mWebContents, times(0))
+ .downloadImage(anyString(), anyBoolean(), anyInt(), anyBoolean(),
+ any(MediaImageManager.class));
+ verify(mCallback).onImageDownloaded(isNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNotNull(Bitmap.class));
+ }
+
+ @Test
+ public void testNullImageList() {
+ mMediaImageManager.downloadImage(null, mCallback);
+
+ verify(mWebContents, times(0))
+ .downloadImage(anyString(), anyBoolean(), anyInt(), anyBoolean(),
+ any(MediaImageManager.class));
+ verify(mCallback).onImageDownloaded(isNull(Bitmap.class));
+ verify(mCallback, times(0)).onImageDownloaded(isNotNull(Bitmap.class));
+ }
+}
« no previous file with comments | « chrome/android/java_sources.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698