| Index: chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapterTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapterTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapterTest.java
|
| index 91754d8b8d83b4720e8d762066b7471646168159..43d31680ca7c8f3c3638ceafd00f1c716fc8f0ce 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapterTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapterTest.java
|
| @@ -9,17 +9,17 @@ import static org.chromium.chrome.browser.widget.DateDividedAdapter.TYPE_NORMAL;
|
|
|
| import android.support.v7.widget.RecyclerView;
|
| import android.test.InstrumentationTestCase;
|
| -import android.test.UiThreadTest;
|
| import android.test.suitebuilder.annotation.SmallTest;
|
|
|
| +import org.chromium.base.ThreadUtils;
|
| import org.chromium.chrome.browser.download.DownloadInfo;
|
| import org.chromium.chrome.browser.download.DownloadItem;
|
| -import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
| +import org.chromium.chrome.browser.download.ui.StubbedProvider.StubbedDownloadDelegate;
|
| +import org.chromium.chrome.browser.download.ui.StubbedProvider.StubbedOfflinePageDelegate;
|
| +import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadItem;
|
| import org.chromium.content.browser.test.util.CallbackHelper;
|
|
|
| import java.text.SimpleDateFormat;
|
| -import java.util.ArrayList;
|
| -import java.util.List;
|
| import java.util.Locale;
|
|
|
| /**
|
| @@ -27,27 +27,6 @@ import java.util.Locale;
|
| */
|
| public class DownloadHistoryAdapterTest extends InstrumentationTestCase {
|
|
|
| - private static class StubbedAdapter extends DownloadHistoryAdapter {
|
| - private final SelectionDelegate<DownloadItem> mDelegate = new SelectionDelegate<>();
|
| -
|
| - StubbedAdapter(boolean showOffTheRecord) {
|
| - super(showOffTheRecord, null);
|
| - }
|
| -
|
| - @Override
|
| - protected SelectionDelegate getSelectionDelegate(DownloadManagerUi manager) {
|
| - return mDelegate;
|
| - }
|
| -
|
| - @Override
|
| - protected void initializeDownloadBridge() {
|
| - }
|
| -
|
| - @Override
|
| - protected void initializeOfflinePageBridge() {
|
| - }
|
| - }
|
| -
|
| private static class Observer extends RecyclerView.AdapterDataObserver {
|
| public CallbackHelper onChangedCallback = new CallbackHelper();
|
|
|
| @@ -59,212 +38,292 @@ public class DownloadHistoryAdapterTest extends InstrumentationTestCase {
|
|
|
| private DownloadHistoryAdapter mAdapter;
|
| private Observer mObserver;
|
| + private StubbedDownloadDelegate mDownloadDelegate;
|
| + private StubbedOfflinePageDelegate mOfflineDelegate;
|
| + private StubbedProvider mBackendProvider;
|
| +
|
| + @Override
|
| + public void setUp() throws Exception {
|
| + super.setUp();
|
| + mBackendProvider = new StubbedProvider();
|
| + mDownloadDelegate = mBackendProvider.getDownloadDelegate();
|
| + mOfflineDelegate = mBackendProvider.getOfflinePageBridge();
|
| + }
|
|
|
| - private void initializeAdapter(boolean showOffTheRecord) {
|
| + private void initializeAdapter(boolean showOffTheRecord) throws Exception {
|
| mObserver = new Observer();
|
| - mAdapter = new StubbedAdapter(showOffTheRecord);
|
| - mAdapter.initialize(null);
|
| + mAdapter = new DownloadHistoryAdapter(showOffTheRecord, null);
|
| mAdapter.registerAdapterDataObserver(mObserver);
|
| +
|
| + // Initialize the Adapter with all the DownloadItems and OfflinePageDownloadItems.
|
| + int callCount = mObserver.onChangedCallback.getCallCount();
|
| + assertEquals(0, callCount);
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mAdapter.initialize(mBackendProvider);
|
| + }
|
| + });
|
| + mDownloadDelegate.addCallback.waitForCallback(0);
|
| + mObserver.onChangedCallback.waitForCallback(callCount, showOffTheRecord ? 3 : 2);
|
| }
|
|
|
| /** Nothing downloaded, nothing shown. */
|
| @SmallTest
|
| public void testInitialize_Empty() throws Exception {
|
| initializeAdapter(false);
|
| -
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - int callCount = mObserver.onChangedCallback.getCallCount();
|
| - assertEquals(0, callCount);
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(callCount, 1);
|
| -
|
| assertEquals(0, mAdapter.getItemCount());
|
| assertEquals(0, mAdapter.getTotalDownloadSize());
|
| + mAdapter.onManagerDestroyed();
|
| + mDownloadDelegate.removeCallback.waitForCallback(0);
|
| }
|
|
|
| /** One downloaded item should show the item and a date header. */
|
| - @UiThreadTest
|
| @SmallTest
|
| public void testInitialize_SingleItem() throws Exception {
|
| + DownloadItem item = createDownloadItem(0, "19840116 12:00");
|
| + mDownloadDelegate.regularItems.add(item);
|
| initializeAdapter(false);
|
| -
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - DownloadItem firstItem = createDownloadItem(0, "19840116 12:00");
|
| - regularItems.add(firstItem);
|
| -
|
| - int callCount = mObserver.onChangedCallback.getCallCount();
|
| - assertEquals(0, callCount);
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(callCount, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL);
|
| + checkAdapterContents(null, item);
|
| assertEquals(1, mAdapter.getTotalDownloadSize());
|
| }
|
|
|
| - /** Two items downloaded on the same day should end up in the same date group. */
|
| - @UiThreadTest
|
| + /** Two items downloaded on the same day should end up in the same group, in recency order. */
|
| @SmallTest
|
| public void testInitialize_TwoItemsOneDate() throws Exception {
|
| + DownloadItem item0 = createDownloadItem(0, "19840116 12:00");
|
| + DownloadItem item1 = createDownloadItem(1, "19840116 12:01");
|
| + mDownloadDelegate.regularItems.add(item0);
|
| + mDownloadDelegate.regularItems.add(item1);
|
| initializeAdapter(false);
|
| -
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - regularItems.add(createDownloadItem(0, "19840116 12:00"));
|
| - regularItems.add(createDownloadItem(1, "19840116 12:01"));
|
| -
|
| - int callCount = mObserver.onChangedCallback.getCallCount();
|
| - assertEquals(0, callCount);
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(callCount, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_NORMAL);
|
| + checkAdapterContents(null, item1, item0);
|
| assertEquals(11, mAdapter.getTotalDownloadSize());
|
| }
|
|
|
| /** Two items downloaded on different days should end up in different date groups. */
|
| - @UiThreadTest
|
| @SmallTest
|
| public void testInitialize_TwoItemsTwoDates() throws Exception {
|
| + DownloadItem item0 = createDownloadItem(0, "19840116 12:00");
|
| + DownloadItem item1 = createDownloadItem(1, "19840117 12:00");
|
| + mDownloadDelegate.regularItems.add(item0);
|
| + mDownloadDelegate.regularItems.add(item1);
|
| initializeAdapter(false);
|
| -
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - regularItems.add(createDownloadItem(0, "19840116 12:00"));
|
| - regularItems.add(createDownloadItem(1, "19840117 12:00"));
|
| -
|
| - int callCount = mObserver.onChangedCallback.getCallCount();
|
| - assertEquals(0, callCount);
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(callCount, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_DATE, TYPE_NORMAL);
|
| + checkAdapterContents(null, item1, null, item0);
|
| assertEquals(11, mAdapter.getTotalDownloadSize());
|
| }
|
|
|
| /** Off the record downloads are ignored if the DownloadHistoryAdapter isn't watching them. */
|
| - @UiThreadTest
|
| @SmallTest
|
| public void testInitialize_OffTheRecord_Ignored() throws Exception {
|
| + DownloadItem item0 = createDownloadItem(0, "19840116 12:00");
|
| + DownloadItem item1 = createDownloadItem(1, "19840116 12:01");
|
| + mDownloadDelegate.regularItems.add(item0);
|
| + mDownloadDelegate.offTheRecordItems.add(item1);
|
| initializeAdapter(false);
|
| -
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - regularItems.add(createDownloadItem(0, "19840116 12:00"));
|
| -
|
| - List<DownloadItem> offTheRecordItems = new ArrayList<DownloadItem>();
|
| - offTheRecordItems.add(createDownloadItem(1, "19840116 12:00"));
|
| -
|
| - int callCount = mObserver.onChangedCallback.getCallCount();
|
| - assertEquals(0, callCount);
|
| - mAdapter.onAllDownloadsRetrieved(offTheRecordItems, true);
|
| - assertEquals(0, callCount);
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(callCount, 1);
|
| -
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL);
|
| + checkAdapterContents(null, item0);
|
| assertEquals(1, mAdapter.getTotalDownloadSize());
|
| }
|
|
|
| /** A regular and a off the record item with the same date are bucketed together. */
|
| - @UiThreadTest
|
| @SmallTest
|
| public void testInitialize_OffTheRecord_TwoItemsOneDate() throws Exception {
|
| + DownloadItem item0 = createDownloadItem(0, "19840116 18:00");
|
| + DownloadItem item1 = createDownloadItem(1, "19840116 12:00");
|
| + mDownloadDelegate.regularItems.add(item0);
|
| + mDownloadDelegate.offTheRecordItems.add(item1);
|
| initializeAdapter(true);
|
| -
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - regularItems.add(createDownloadItem(0, "19840116 12:00"));
|
| -
|
| - List<DownloadItem> offTheRecordItems = new ArrayList<DownloadItem>();
|
| - offTheRecordItems.add(createDownloadItem(1, "19840116 12:00"));
|
| -
|
| - int callCount = mObserver.onChangedCallback.getCallCount();
|
| - assertEquals(0, callCount);
|
| - mAdapter.onAllDownloadsRetrieved(offTheRecordItems, true);
|
| - mObserver.onChangedCallback.waitForCallback(callCount, 1);
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(callCount, 2);
|
| -
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_NORMAL);
|
| + checkAdapterContents(null, item0, item1);
|
| assertEquals(11, mAdapter.getTotalDownloadSize());
|
| }
|
|
|
| - /** Adding new items should bucket them into the proper dates. */
|
| - @UiThreadTest
|
| + /** Test that all the download item types intermingle correctly. */
|
| @SmallTest
|
| - public void testUpdate_UpdateItems() throws Exception {
|
| - initializeAdapter(false);
|
| + public void testInitialize_ThreeItemsDifferentKinds() throws Exception {
|
| + DownloadItem item0 = createDownloadItem(0, "19840116 18:00");
|
| + DownloadItem item1 = createDownloadItem(1, "19840116 12:00");
|
| + OfflinePageDownloadItem item2 = createOfflineItem(2, "19840117 6:00");
|
| + mDownloadDelegate.regularItems.add(item0);
|
| + mDownloadDelegate.offTheRecordItems.add(item1);
|
| + mOfflineDelegate.items.add(item2);
|
| + initializeAdapter(true);
|
| + checkAdapterContents(null, item2, null, item0, item1);
|
| + assertEquals(100011, mAdapter.getTotalDownloadSize());
|
| + }
|
|
|
| + /** Adding and updating new items should bucket them into the proper dates. */
|
| + @SmallTest
|
| + public void testUpdate_UpdateItems() throws Exception {
|
| // Start with an empty Adapter.
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - assertEquals(0, mObserver.onChangedCallback.getCallCount());
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(0, 1);
|
| + initializeAdapter(false);
|
| assertEquals(0, mAdapter.getItemCount());
|
| assertEquals(0, mAdapter.getTotalDownloadSize());
|
|
|
| // Add the first item.
|
| - mAdapter.onDownloadItemUpdated(createDownloadItem(0, "19840116 12:00"), false);
|
| - mObserver.onChangedCallback.waitForCallback(1, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL);
|
| + assertEquals(2, mObserver.onChangedCallback.getCallCount());
|
| + DownloadItem item0 = createDownloadItem(0, "19840116 12:00");
|
| + mAdapter.onDownloadItemUpdated(item0, false);
|
| + mObserver.onChangedCallback.waitForCallback(2);
|
| + checkAdapterContents(null, item0);
|
| assertEquals(1, mAdapter.getTotalDownloadSize());
|
|
|
| // Add a second item with a different date.
|
| - DownloadItem secondItem = createDownloadItem(1, "19840117 12:00");
|
| - assertEquals(2, mObserver.onChangedCallback.getCallCount());
|
| - mAdapter.onDownloadItemUpdated(secondItem, false);
|
| - mObserver.onChangedCallback.waitForCallback(2, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_DATE, TYPE_NORMAL);
|
| + assertEquals(3, mObserver.onChangedCallback.getCallCount());
|
| + DownloadItem item1 = createDownloadItem(1, "19840117 12:00");
|
| + mAdapter.onDownloadItemUpdated(item1, false);
|
| + mObserver.onChangedCallback.waitForCallback(3);
|
| + checkAdapterContents(null, item1, null, item0);
|
| assertEquals(11, mAdapter.getTotalDownloadSize());
|
|
|
| // Add a third item with the same date as the second item.
|
| - assertEquals(3, mObserver.onChangedCallback.getCallCount());
|
| - mAdapter.onDownloadItemUpdated(createDownloadItem(2, "19840117 12:00"), false);
|
| - mObserver.onChangedCallback.waitForCallback(3, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_NORMAL, TYPE_DATE, TYPE_NORMAL);
|
| + assertEquals(4, mObserver.onChangedCallback.getCallCount());
|
| + DownloadItem item2 = createDownloadItem(2, "19840117 18:00");
|
| + mAdapter.onDownloadItemUpdated(item2, false);
|
| + mObserver.onChangedCallback.waitForCallback(4);
|
| + checkAdapterContents(null, item2, item1, null, item0);
|
| assertEquals(111, mAdapter.getTotalDownloadSize());
|
|
|
| - // An item with the same values as the second item should just update the old one.
|
| - assertEquals(4, mObserver.onChangedCallback.getCallCount());
|
| - mAdapter.onDownloadItemUpdated(createDownloadItem(2, "19840117 12:00"), false);
|
| - mObserver.onChangedCallback.waitForCallback(4, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_NORMAL, TYPE_DATE, TYPE_NORMAL);
|
| + // An item with the same download ID as the second item should just update the old one.
|
| + assertEquals(5, mObserver.onChangedCallback.getCallCount());
|
| + DownloadItem item3 = createDownloadItem(2, "19840117 18:00");
|
| + mAdapter.onDownloadItemUpdated(item3, false);
|
| + mObserver.onChangedCallback.waitForCallback(5);
|
| + checkAdapterContents(null, item3, item1, null, item0);
|
| assertEquals(111, mAdapter.getTotalDownloadSize());
|
| +
|
| + // Throw on a new OfflinePageItem.
|
| + assertEquals(6, mObserver.onChangedCallback.getCallCount());
|
| + OfflinePageDownloadItem item4 = createOfflineItem(0, "19840117 19:00");
|
| + mOfflineDelegate.observer.onItemAdded(item4);
|
| + mObserver.onChangedCallback.waitForCallback(6);
|
| + checkAdapterContents(null, item4, item3, item1, null, item0);
|
| +
|
| + // Update the existing OfflinePageItem.
|
| + assertEquals(7, mObserver.onChangedCallback.getCallCount());
|
| + OfflinePageDownloadItem item5 = createOfflineItem(0, "19840117 19:00");
|
| + mOfflineDelegate.observer.onItemUpdated(item5);
|
| + mObserver.onChangedCallback.waitForCallback(7);
|
| + checkAdapterContents(null, item5, item3, item1, null, item0);
|
| }
|
|
|
| /** Test removal of items. */
|
| - @UiThreadTest
|
| @SmallTest
|
| public void testRemove_ThreeItemsTwoDates() throws Exception {
|
| - initializeAdapter(false);
|
| -
|
| // Initialize the DownloadHistoryAdapter with three items in two date buckets.
|
| + DownloadItem regularItem = createDownloadItem(0, "19840116 18:00");
|
| + DownloadItem offTheRecordItem = createDownloadItem(1, "19840116 12:00");
|
| + OfflinePageDownloadItem offlineItem = createOfflineItem(2, "19840117 12:01");
|
| + mDownloadDelegate.regularItems.add(regularItem);
|
| + mDownloadDelegate.offTheRecordItems.add(offTheRecordItem);
|
| + mOfflineDelegate.items.add(offlineItem);
|
| + initializeAdapter(true);
|
| + checkAdapterContents(null, offlineItem, null, regularItem, offTheRecordItem);
|
| + assertEquals(100011, mAdapter.getTotalDownloadSize());
|
| +
|
| + // Remove an item from the date bucket with two items.
|
| + assertEquals(3, mObserver.onChangedCallback.getCallCount());
|
| + mAdapter.onDownloadItemRemoved(offTheRecordItem.getId(), true);
|
| + mObserver.onChangedCallback.waitForCallback(3);
|
| + checkAdapterContents(null, offlineItem, null, regularItem);
|
| + assertEquals(100001, mAdapter.getTotalDownloadSize());
|
| +
|
| + // Remove an item from the second bucket, which removes the bucket entirely.
|
| + assertEquals(4, mObserver.onChangedCallback.getCallCount());
|
| + mOfflineDelegate.observer.onItemDeleted(offlineItem.getGuid());
|
| + mObserver.onChangedCallback.waitForCallback(4);
|
| + checkAdapterContents(null, regularItem);
|
| + assertEquals(1, mAdapter.getTotalDownloadSize());
|
| +
|
| + // Remove the last item in the list.
|
| + assertEquals(5, mObserver.onChangedCallback.getCallCount());
|
| + mAdapter.onDownloadItemRemoved(regularItem.getId(), false);
|
| + mObserver.onChangedCallback.waitForCallback(5);
|
| + assertEquals(0, mAdapter.getItemCount());
|
| + assertEquals(0, mAdapter.getTotalDownloadSize());
|
| + }
|
| +
|
| + /** Test filtering of items. */
|
| + @SmallTest
|
| + public void testFilter_SevenItems() throws Exception {
|
| DownloadItem item0 = createDownloadItem(0, "19840116 12:00");
|
| DownloadItem item1 = createDownloadItem(1, "19840116 12:01");
|
| - DownloadItem item2 = createDownloadItem(2, "19840117 12:01");
|
| + DownloadItem item2 = createDownloadItem(2, "19840117 12:00");
|
| + DownloadItem item3 = createDownloadItem(3, "19840117 12:01");
|
| + DownloadItem item4 = createDownloadItem(4, "19840118 12:00");
|
| + DownloadItem item5 = createDownloadItem(5, "19840118 12:01");
|
| + OfflinePageDownloadItem item6 = createOfflineItem(0, "19840118 6:00");
|
| + mDownloadDelegate.regularItems.add(item0);
|
| + mDownloadDelegate.offTheRecordItems.add(item1);
|
| + mDownloadDelegate.regularItems.add(item2);
|
| + mDownloadDelegate.regularItems.add(item3);
|
| + mDownloadDelegate.offTheRecordItems.add(item4);
|
| + mDownloadDelegate.regularItems.add(item5);
|
| + mOfflineDelegate.items.add(item6);
|
| + initializeAdapter(true);
|
| + checkAdapterContents(null, item5, item4, item6, null, item3, item2, null, item1, item0);
|
| + assertEquals(1666, mAdapter.getTotalDownloadSize());
|
|
|
| - List<DownloadItem> regularItems = new ArrayList<DownloadItem>();
|
| - regularItems.add(item0);
|
| - regularItems.add(item1);
|
| - regularItems.add(item2);
|
| + mAdapter.onFilterChanged(DownloadFilter.FILTER_AUDIO);
|
| + checkAdapterContents(null, item5, item4);
|
| + assertEquals(1666, mAdapter.getTotalDownloadSize()); // Total size ignores filters.
|
|
|
| - assertEquals(0, mObserver.onChangedCallback.getCallCount());
|
| - mAdapter.onAllDownloadsRetrieved(regularItems, false);
|
| - mObserver.onChangedCallback.waitForCallback(0, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_DATE, TYPE_NORMAL, TYPE_NORMAL);
|
| - assertEquals(111, mAdapter.getTotalDownloadSize());
|
| + mAdapter.onFilterChanged(DownloadFilter.FILTER_VIDEO);
|
| + checkAdapterContents(null, item3);
|
|
|
| - // Remove an item from the date bucket with two items.
|
| - assertEquals(1, mObserver.onChangedCallback.getCallCount());
|
| - mAdapter.onDownloadItemRemoved(item1.getId(), false);
|
| - mObserver.onChangedCallback.waitForCallback(1, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL, TYPE_DATE, TYPE_NORMAL);
|
| + mAdapter.onFilterChanged(DownloadFilter.FILTER_IMAGE);
|
| + checkAdapterContents(null, item1, item0);
|
|
|
| - // Remove an item from the second bucket, which removes it entirely.
|
| - assertEquals(2, mObserver.onChangedCallback.getCallCount());
|
| - mAdapter.onDownloadItemRemoved(item2.getId(), false);
|
| - mObserver.onChangedCallback.waitForCallback(2, 1);
|
| - checkAdapterTypes(TYPE_DATE, TYPE_NORMAL);
|
| + mAdapter.onFilterChanged(DownloadFilter.FILTER_PAGE);
|
| + checkAdapterContents(null, item6);
|
| +
|
| + mAdapter.onFilterChanged(DownloadFilter.FILTER_ALL);
|
| + checkAdapterContents(null, item5, item4, item6, null, item3, item2, null, item1, item0);
|
| + assertEquals(1666, mAdapter.getTotalDownloadSize());
|
| + }
|
| +
|
| + /** Tests that the list is updated appropriately when Offline Pages are deleted. */
|
| + @SmallTest
|
| + public void testFilter_AfterOfflineDeletions() throws Exception {
|
| + OfflinePageDownloadItem item0 = createOfflineItem(0, "19840116 6:00");
|
| + OfflinePageDownloadItem item1 = createOfflineItem(1, "19840116 12:00");
|
| + OfflinePageDownloadItem item2 = createOfflineItem(2, "19840120 6:00");
|
| + mOfflineDelegate.items.add(item0);
|
| + mOfflineDelegate.items.add(item1);
|
| + mOfflineDelegate.items.add(item2);
|
| + initializeAdapter(false);
|
| + checkAdapterContents(null, item2, null, item1, item0);
|
| + assertEquals(111000, mAdapter.getTotalDownloadSize());
|
| +
|
| + // Filter shows everything.
|
| + mOfflineDelegate.observer.onItemDeleted(item1.getGuid());
|
| + checkAdapterContents(null, item2, null, item0);
|
| +
|
| + // Filter shows nothing when the item is deleted because it's a different kind of item.
|
| + mAdapter.onFilterChanged(DownloadFilter.FILTER_AUDIO);
|
| + assertEquals(0, mAdapter.getItemCount());
|
| + mOfflineDelegate.observer.onItemDeleted(item0.getGuid());
|
| + assertEquals(0, mAdapter.getItemCount());
|
| +
|
| + // Filter shows just pages.
|
| + mAdapter.onFilterChanged(DownloadFilter.FILTER_PAGE);
|
| + checkAdapterContents(null, item2);
|
| + mOfflineDelegate.observer.onItemDeleted(item2.getGuid());
|
| + assertEquals(0, mAdapter.getItemCount());
|
| }
|
|
|
| - /** Checks that the adapter has the correct types of items in the right places. */
|
| - private void checkAdapterTypes(Integer... expectedTypes) {
|
| - assertEquals(expectedTypes.length, mAdapter.getItemCount());
|
| - for (int i = 0; i < expectedTypes.length; i++) {
|
| - assertEquals(expectedTypes[i].intValue(), mAdapter.getItemViewType(i));
|
| + /** Checks that the adapter has the correct items in the right places. */
|
| + private void checkAdapterContents(Object... expectedItems) {
|
| + assertEquals(expectedItems.length, mAdapter.getItemCount());
|
| + for (int i = 0; i < expectedItems.length; i++) {
|
| + if (expectedItems[i] == null) {
|
| + // Expect a date.
|
| + // TODO(dfalcantara): Check what date the header is showing.
|
| + assertEquals(TYPE_DATE, mAdapter.getItemViewType(i));
|
| + } else {
|
| + // Expect a particular item.
|
| + assertEquals(TYPE_NORMAL, mAdapter.getItemViewType(i));
|
| + assertEquals(expectedItems[i],
|
| + ((DownloadHistoryItemWrapper) mAdapter.getItemAt(i).second).getItem());
|
| + }
|
| }
|
| }
|
|
|
| @@ -281,29 +340,56 @@ public class DownloadHistoryAdapterTest extends InstrumentationTestCase {
|
| item = new DownloadItem(false, new DownloadInfo.Builder()
|
| .setUrl("https://google.com")
|
| .setContentLength(1)
|
| - .setFileName("first_file")
|
| - .setFilePath("/storage/fake_path/Downloads/first_file")
|
| + .setFileName("first_file.jpg")
|
| + .setFilePath("/storage/fake_path/Downloads/first_file.jpg")
|
| .setDownloadGuid("first_guid")
|
| - .setMimeType("image/gif")
|
| + .setMimeType("image/jpeg")
|
| .build());
|
| } else if (which == 1) {
|
| item = new DownloadItem(false, new DownloadInfo.Builder()
|
| - .setUrl("https://ugh.com")
|
| + .setUrl("https://one.com")
|
| .setContentLength(10)
|
| - .setFileName("second_file")
|
| - .setFilePath("/storage/fake_path/Downloads/second_file")
|
| + .setFileName("second_file.gif")
|
| + .setFilePath("/storage/fake_path/Downloads/second_file.gif")
|
| .setDownloadGuid("second_guid")
|
| .setMimeType("image/gif")
|
| .build());
|
| } else if (which == 2) {
|
| item = new DownloadItem(false, new DownloadInfo.Builder()
|
| - .setUrl("https://ugh.com")
|
| + .setUrl("https://is.com")
|
| .setContentLength(100)
|
| .setFileName("third_file")
|
| .setFilePath("/storage/fake_path/Downloads/third_file")
|
| .setDownloadGuid("third_guid")
|
| .setMimeType("text/plain")
|
| .build());
|
| + } else if (which == 3) {
|
| + item = new DownloadItem(false, new DownloadInfo.Builder()
|
| + .setUrl("https://the.com")
|
| + .setContentLength(5)
|
| + .setFileName("four.webm")
|
| + .setFilePath("/storage/fake_path/Downloads/four.webm")
|
| + .setDownloadGuid("fourth_guid")
|
| + .setMimeType("video/webm")
|
| + .build());
|
| + } else if (which == 4) {
|
| + item = new DownloadItem(false, new DownloadInfo.Builder()
|
| + .setUrl("https://loneliest.com")
|
| + .setContentLength(50)
|
| + .setFileName("five.mp3")
|
| + .setFilePath("/storage/fake_path/Downloads/five.mp3")
|
| + .setDownloadGuid("fifth_guid")
|
| + .setMimeType("audio/mp3")
|
| + .build());
|
| + } else if (which == 5) {
|
| + item = new DownloadItem(false, new DownloadInfo.Builder()
|
| + .setUrl("https://number.com")
|
| + .setContentLength(500)
|
| + .setFileName("six.mp3")
|
| + .setFilePath("/storage/fake_path/Downloads/six.mp3")
|
| + .setDownloadGuid("sixth_guid")
|
| + .setMimeType("audio/mp3")
|
| + .build());
|
| } else {
|
| return null;
|
| }
|
| @@ -312,4 +398,22 @@ public class DownloadHistoryAdapterTest extends InstrumentationTestCase {
|
| return item;
|
| }
|
|
|
| + /** Creates a new OfflinePageDownloadItem with pre-defined values. */
|
| + private OfflinePageDownloadItem createOfflineItem(int which, String date)
|
| + throws Exception {
|
| + long startTime = dateToEpoch(date);
|
| + if (which == 0) {
|
| + return new OfflinePageDownloadItem("offline_guid_1", "https://url.com",
|
| + "page 1", "/data/fake_path/Downloads/first_file", startTime, 1000);
|
| + } else if (which == 1) {
|
| + return new OfflinePageDownloadItem("offline_guid_2", "http://stuff_and_things.com",
|
| + "page 2", "/data/fake_path/Downloads/file_two", startTime, 10000);
|
| + } else if (which == 2) {
|
| + return new OfflinePageDownloadItem("offline_guid_3", "https://url.com",
|
| + "page 3", "/data/fake_path/Downloads/3_file", startTime, 100000);
|
| + } else {
|
| + return null;
|
| + }
|
| + }
|
| +
|
| }
|
|
|