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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/StubbedProvider.java

Issue 2276633002: [Download Home] Add basic tests for the DownloadManagerUi (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restrictions Created 4 years, 4 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/javatests/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapterTest.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/StubbedProvider.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/StubbedProvider.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/StubbedProvider.java
index 95779dc8f630ac5d789740007fb0c97e3a8a7445..9ce1ba74a98351c5837022d6f792397d5031cc1f 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/StubbedProvider.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/StubbedProvider.java
@@ -8,26 +8,33 @@ import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
import android.content.ComponentName;
+import android.os.Handler;
+import android.os.Looper;
+import android.text.TextUtils;
import org.chromium.base.ThreadUtils;
+import org.chromium.chrome.browser.download.DownloadInfo;
import org.chromium.chrome.browser.download.DownloadItem;
-import org.chromium.chrome.browser.download.ui.BackendProvider.DownloadDelegate;
-import org.chromium.chrome.browser.download.ui.BackendProvider.OfflinePageDelegate;
import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadBridge;
import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadItem;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
import org.chromium.content.browser.test.util.CallbackHelper;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
/** Stubs out backends used by the Download Home UI. */
public class StubbedProvider implements BackendProvider {
/** Stubs out the DownloadManagerService. */
- public static class StubbedDownloadDelegate implements DownloadDelegate {
+ public class StubbedDownloadDelegate implements DownloadDelegate {
public final CallbackHelper addCallback = new CallbackHelper();
public final CallbackHelper removeCallback = new CallbackHelper();
+ public final CallbackHelper checkExternalCallback = new CallbackHelper();
+ public final CallbackHelper removeDownloadCallback = new CallbackHelper();
+
public final List<DownloadItem> regularItems = new ArrayList<>();
public final List<DownloadItem> offTheRecordItems = new ArrayList<>();
private DownloadHistoryAdapter mAdapter;
@@ -47,7 +54,7 @@ public class StubbedProvider implements BackendProvider {
@Override
public void getAllDownloads(final boolean isOffTheRecord) {
- ThreadUtils.runOnUiThread(new Runnable() {
+ mHandler.post(new Runnable() {
@Override
public void run() {
mAdapter.onAllDownloadsRetrieved(
@@ -55,12 +62,29 @@ public class StubbedProvider implements BackendProvider {
}
});
}
+
+ @Override
+ public void checkForExternallyRemovedDownloads(boolean isOffTheRecord) {
+ checkExternalCallback.notifyCalled();
+ }
+
+ @Override
+ public void removeDownload(final String guid, final boolean isOffTheRecord) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mAdapter.onDownloadItemRemoved(guid, isOffTheRecord);
+ removeDownloadCallback.notifyCalled();
+ }
+ });
+ }
}
/** Stubs out the OfflinePageDownloadBridge. */
- public static class StubbedOfflinePageDelegate implements OfflinePageDelegate {
+ public class StubbedOfflinePageDelegate implements OfflinePageDelegate {
public final CallbackHelper addCallback = new CallbackHelper();
public final CallbackHelper removeCallback = new CallbackHelper();
+ public final CallbackHelper deleteItemCallback = new CallbackHelper();
public final List<OfflinePageDownloadItem> items = new ArrayList<>();
public OfflinePageDownloadBridge.Observer observer;
@@ -90,16 +114,37 @@ public class StubbedProvider implements BackendProvider {
return items;
}
+ @Override
+ public void deleteItem(final String guid) {
+ for (OfflinePageDownloadItem item : items) {
+ if (TextUtils.equals(item.getGuid(), guid)) {
+ items.remove(item);
+ break;
+ }
+ }
+
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ observer.onItemDeleted(guid);
+ deleteItemCallback.notifyCalled();
+ }
+ });
+ }
+
@Override public void openItem(String guid, ComponentName componentName) { }
- @Override public void deleteItem(String guid) { }
@Override public void destroy() { }
}
- private StubbedDownloadDelegate mDownloadDelegate;
- private StubbedOfflinePageDelegate mOfflineDelegate;
- private SelectionDelegate<DownloadHistoryItemWrapper> mSelectionDelegate;
+ private static final long ONE_GIGABYTE = 1024L * 1024L * 1024L;
+
+ private final Handler mHandler;
+ private final StubbedDownloadDelegate mDownloadDelegate;
+ private final StubbedOfflinePageDelegate mOfflineDelegate;
+ private final SelectionDelegate<DownloadHistoryItemWrapper> mSelectionDelegate;
public StubbedProvider() {
+ mHandler = new Handler(Looper.getMainLooper());
mDownloadDelegate = new StubbedDownloadDelegate();
mOfflineDelegate = new StubbedOfflinePageDelegate();
mSelectionDelegate = new SelectionDelegate<>();
@@ -119,4 +164,114 @@ public class StubbedProvider implements BackendProvider {
public SelectionDelegate<DownloadHistoryItemWrapper> getSelectionDelegate() {
return mSelectionDelegate;
}
+
+ /** Creates a new DownloadItem with pre-defined values. */
+ public static DownloadItem createDownloadItem(int which, String date) throws Exception {
+ DownloadItem item = null;
+ if (which == 0) {
+ item = new DownloadItem(false, new DownloadInfo.Builder()
+ .setUrl("https://google.com")
+ .setContentLength(1)
+ .setFileName("first_file.jpg")
+ .setFilePath("/storage/fake_path/Downloads/first_file.jpg")
+ .setDownloadGuid("first_guid")
+ .setMimeType("image/jpeg")
+ .build());
+ } else if (which == 1) {
+ item = new DownloadItem(false, new DownloadInfo.Builder()
+ .setUrl("https://one.com")
+ .setContentLength(10)
+ .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://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 if (which == 6) {
+ item = new DownloadItem(false, new DownloadInfo.Builder()
+ .setUrl("https://sigh.com")
+ .setContentLength(ONE_GIGABYTE)
+ .setFileName("huge_image.png")
+ .setFilePath("/storage/fake_path/Downloads/huge_image.png")
+ .setDownloadGuid("seventh_guid")
+ .setMimeType("image/png")
+ .build());
+ } else if (which == 7) {
+ item = new DownloadItem(false, new DownloadInfo.Builder()
+ .setUrl("https://sleepy.com")
+ .setContentLength(ONE_GIGABYTE / 2)
+ .setFileName("sleep.pdf")
+ .setFilePath("/storage/fake_path/Downloads/sleep.pdf")
+ .setDownloadGuid("eighth_guid")
+ .setMimeType("application/pdf")
+ .build());
+ } else {
+ return null;
+ }
+
+ item.setStartTime(dateToEpoch(date));
+ return item;
+ }
+
+ /** Creates a new OfflinePageDownloadItem with pre-defined values. */
+ public static 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 if (which == 3) {
+ return new OfflinePageDownloadItem("offline_guid_4", "https://thangs.com",
+ "page 4", "/data/fake_path/Downloads/4", startTime, ONE_GIGABYTE * 5L);
+ } else {
+ return null;
+ }
+ }
+
+ /** Converts a date string to a timestamp. */
+ private static long dateToEpoch(String dateStr) throws Exception {
+ return new SimpleDateFormat("yyyyMMdd HH:mm", Locale.getDefault()).parse(dateStr).getTime();
+ }
+
}
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapterTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698