Commit f6757cde authored by Xing Liu's avatar Xing Liu Committed by Commit Bot

Download later: Hide notifications for old download backend.

Download later shouldn't show notifications. This is handled for the
new download backend in offline items code stack, but not for the old
backend. We can block the notification in SystemDownloadNotifier which
is the entry point API to show download notifications.

TBR=dtrainor@chromium.org,qinmin@chromium.org

Bug: 1123923
Change-Id: Ice0ed2ce44dd5aaf4351633f7de828c95cd8073d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2388894Reviewed-by: default avatarXing Liu <xingliu@chromium.org>
Commit-Queue: Xing Liu <xingliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804025}
parent 0494c7f9
......@@ -125,6 +125,8 @@ public class SystemDownloadNotifier implements DownloadNotifier {
@Override
public void notifyDownloadSuccessful(DownloadInfo info, long systemDownloadId,
boolean canResolve, boolean isSupportedMimeType) {
if (info.getOfflineItemSchedule() != null) return;
NotificationInfo notificationInfo =
new NotificationInfo(NotificationType.SUCCEEDED, info, NotificationPriority.HIGH);
notificationInfo.mSystemDownloadId = systemDownloadId;
......@@ -135,6 +137,8 @@ public class SystemDownloadNotifier implements DownloadNotifier {
@Override
public void notifyDownloadFailed(DownloadInfo info) {
if (info.getOfflineItemSchedule() != null) return;
NotificationInfo notificationInfo =
new NotificationInfo(NotificationType.FAILED, info, NotificationPriority.HIGH);
addPendingNotification(notificationInfo);
......@@ -143,6 +147,8 @@ public class SystemDownloadNotifier implements DownloadNotifier {
@Override
public void notifyDownloadProgress(
DownloadInfo info, long startTime, boolean canDownloadWhileMetered) {
if (info.getOfflineItemSchedule() != null) return;
NotificationInfo notificationInfo =
new NotificationInfo(NotificationType.PROGRESS, info, NotificationPriority.LOW);
notificationInfo.mStartTime = startTime;
......@@ -152,6 +158,8 @@ public class SystemDownloadNotifier implements DownloadNotifier {
@Override
public void notifyDownloadPaused(DownloadInfo info) {
if (info.getOfflineItemSchedule() != null) return;
NotificationInfo notificationInfo =
new NotificationInfo(NotificationType.PAUSED, info, NotificationPriority.HIGH);
addPendingNotification(notificationInfo);
......
......@@ -20,6 +20,8 @@ import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.test.ChromeBrowserTestRule;
import org.chromium.components.offline_items_collection.ContentId;
import org.chromium.components.offline_items_collection.OfflineItemSchedule;
import org.chromium.components.offline_items_collection.PendingState;
import org.chromium.content_public.browser.test.util.Criteria;
import org.chromium.content_public.browser.test.util.CriteriaHelper;
......@@ -45,12 +47,15 @@ public class SystemDownloadNotifierTest {
}
private DownloadInfo getDownloadInfo(ContentId id) {
return getDownloadInfoBuilder(id).build();
}
private DownloadInfo.Builder getDownloadInfoBuilder(ContentId id) {
return new DownloadInfo.Builder()
.setFileName("foo")
.setBytesReceived(100)
.setDownloadGuid(UUID.randomUUID().toString())
.setContentId(id)
.build();
.setContentId(id);
}
private void waitForNotifications(int numberOfNotifications) {
......@@ -130,4 +135,24 @@ public class SystemDownloadNotifierTest {
Assert.assertEquals(
notificationId, mMockDownloadNotificationService.getLastNotificationId());
}
/**
* No notifications when {@link DownloadInfo#getOfflineItemSchedule()} exists.
*/
@Test
@SmallTest
@Feature({"Download"})
public void testDownloadLaterNotification() {
DownloadInfo info = getDownloadInfoBuilder(new ContentId("download", "1"))
.setOfflineItemSchedule(new OfflineItemSchedule(true, -1))
.build();
mSystemDownloadNotifier.notifyDownloadProgress(
info, 100, true /* canDownloadWhileMetered */);
mSystemDownloadNotifier.notifyDownloadPaused(info);
mSystemDownloadNotifier.notifyDownloadFailed(info);
mSystemDownloadNotifier.notifyDownloadInterrupted(info, true, PendingState.PENDING_NETWORK);
Assert.assertEquals(0, mMockDownloadNotificationService.getNumberOfNotifications());
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment