| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.download; | 5 package org.chromium.chrome.browser.download; |
| 6 | 6 |
| 7 import android.app.DownloadManager; | 7 import android.app.DownloadManager; |
| 8 import android.content.Context; | 8 import android.content.Context; |
| 9 import android.os.Handler; | 9 import android.os.Handler; |
| 10 import android.os.HandlerThread; | 10 import android.os.HandlerThread; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 import org.chromium.base.ThreadUtils; | 25 import org.chromium.base.ThreadUtils; |
| 26 import org.chromium.base.metrics.RecordHistogram; | 26 import org.chromium.base.metrics.RecordHistogram; |
| 27 import org.chromium.base.test.BaseJUnit4ClassRunner; | 27 import org.chromium.base.test.BaseJUnit4ClassRunner; |
| 28 import org.chromium.base.test.util.AdvancedMockContext; | 28 import org.chromium.base.test.util.AdvancedMockContext; |
| 29 import org.chromium.base.test.util.Feature; | 29 import org.chromium.base.test.util.Feature; |
| 30 import org.chromium.base.test.util.RetryOnFailure; | 30 import org.chromium.base.test.util.RetryOnFailure; |
| 31 import org.chromium.base.test.util.UrlUtils; | 31 import org.chromium.base.test.util.UrlUtils; |
| 32 import org.chromium.chrome.browser.download.DownloadInfo.Builder; | 32 import org.chromium.chrome.browser.download.DownloadInfo.Builder; |
| 33 import org.chromium.chrome.browser.download.DownloadManagerServiceTest.MockDownl
oadNotifier.MethodID; | 33 import org.chromium.chrome.browser.download.DownloadManagerServiceTest.MockDownl
oadNotifier.MethodID; |
| 34 import org.chromium.components.offline_items_collection.ContentId; | 34 import org.chromium.components.offline_items_collection.ContentId; |
| 35 import org.chromium.components.offline_items_collection.OfflineItem.Progress; |
| 36 import org.chromium.components.offline_items_collection.OfflineItemProgressUnit; |
| 35 import org.chromium.content.browser.test.NativeLibraryTestRule; | 37 import org.chromium.content.browser.test.NativeLibraryTestRule; |
| 36 import org.chromium.content.browser.test.util.Criteria; | 38 import org.chromium.content.browser.test.util.Criteria; |
| 37 import org.chromium.content.browser.test.util.CriteriaHelper; | 39 import org.chromium.content.browser.test.util.CriteriaHelper; |
| 38 import org.chromium.net.ConnectionType; | 40 import org.chromium.net.ConnectionType; |
| 39 import org.chromium.net.test.EmbeddedTestServer; | 41 import org.chromium.net.test.EmbeddedTestServer; |
| 40 | 42 |
| 41 import java.util.Collections; | 43 import java.util.Collections; |
| 42 import java.util.HashSet; | 44 import java.util.HashSet; |
| 43 import java.util.Queue; | 45 import java.util.Queue; |
| 44 import java.util.Random; | 46 import java.util.Random; |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 MockDownloadNotifier notifier = new MockDownloadNotifier(getTestContext(
)); | 370 MockDownloadNotifier notifier = new MockDownloadNotifier(getTestContext(
)); |
| 369 DownloadManagerServiceForTest dService = new DownloadManagerServiceForTe
st( | 371 DownloadManagerServiceForTest dService = new DownloadManagerServiceForTe
st( |
| 370 getTestContext(), notifier, UPDATE_DELAY_FOR_TEST); | 372 getTestContext(), notifier, UPDATE_DELAY_FOR_TEST); |
| 371 DownloadInfo downloadInfo = getDownloadInfo(); | 373 DownloadInfo downloadInfo = getDownloadInfo(); |
| 372 | 374 |
| 373 notifier.expect(MethodID.DOWNLOAD_PROGRESS, downloadInfo); | 375 notifier.expect(MethodID.DOWNLOAD_PROGRESS, downloadInfo); |
| 374 dService.onDownloadUpdated(downloadInfo); | 376 dService.onDownloadUpdated(downloadInfo); |
| 375 notifier.waitTillExpectedCallsComplete(); | 377 notifier.waitTillExpectedCallsComplete(); |
| 376 | 378 |
| 377 // Now post multiple download updated calls and make sure all are receiv
ed. | 379 // Now post multiple download updated calls and make sure all are receiv
ed. |
| 378 DownloadInfo update1 = Builder.fromDownloadInfo(downloadInfo) | 380 DownloadInfo update1 = |
| 379 .setPercentCompleted(10).build(); | 381 Builder.fromDownloadInfo(downloadInfo) |
| 380 DownloadInfo update2 = Builder.fromDownloadInfo(downloadInfo) | 382 .setProgress(new Progress(10, 100L, OfflineItemProgressU
nit.PERCENTAGE)) |
| 381 .setPercentCompleted(30).build(); | 383 .build(); |
| 382 DownloadInfo update3 = Builder.fromDownloadInfo(downloadInfo) | 384 DownloadInfo update2 = |
| 383 .setPercentCompleted(30).build(); | 385 Builder.fromDownloadInfo(downloadInfo) |
| 386 .setProgress(new Progress(30, 100L, OfflineItemProgressU
nit.PERCENTAGE)) |
| 387 .build(); |
| 388 DownloadInfo update3 = |
| 389 Builder.fromDownloadInfo(downloadInfo) |
| 390 .setProgress(new Progress(30, 100L, OfflineItemProgressU
nit.PERCENTAGE)) |
| 391 .build(); |
| 384 notifier.expect(MethodID.DOWNLOAD_PROGRESS, update1) | 392 notifier.expect(MethodID.DOWNLOAD_PROGRESS, update1) |
| 385 .andThen(MethodID.DOWNLOAD_PROGRESS, update2) | 393 .andThen(MethodID.DOWNLOAD_PROGRESS, update2) |
| 386 .andThen(MethodID.DOWNLOAD_PROGRESS, update3); | 394 .andThen(MethodID.DOWNLOAD_PROGRESS, update3); |
| 387 | 395 |
| 388 dService.onDownloadUpdated(update1); | 396 dService.onDownloadUpdated(update1); |
| 389 Thread.sleep(DELAY_BETWEEN_CALLS); | 397 Thread.sleep(DELAY_BETWEEN_CALLS); |
| 390 dService.onDownloadUpdated(update2); | 398 dService.onDownloadUpdated(update2); |
| 391 Thread.sleep(DELAY_BETWEEN_CALLS); | 399 Thread.sleep(DELAY_BETWEEN_CALLS); |
| 392 dService.onDownloadUpdated(update3); | 400 dService.onDownloadUpdated(update3); |
| 393 notifier.waitTillExpectedCallsComplete(); | 401 notifier.waitTillExpectedCallsComplete(); |
| 394 } | 402 } |
| 395 | 403 |
| 396 @Test | 404 @Test |
| 397 @MediumTest | 405 @MediumTest |
| 398 @Feature({"Download"}) | 406 @Feature({"Download"}) |
| 399 public void testOnlyTwoProgressForFastUpdates() throws InterruptedException
{ | 407 public void testOnlyTwoProgressForFastUpdates() throws InterruptedException
{ |
| 400 MockDownloadNotifier notifier = new MockDownloadNotifier(getTestContext(
)); | 408 MockDownloadNotifier notifier = new MockDownloadNotifier(getTestContext(
)); |
| 401 DownloadManagerServiceForTest dService = new DownloadManagerServiceForTe
st( | 409 DownloadManagerServiceForTest dService = new DownloadManagerServiceForTe
st( |
| 402 getTestContext(), notifier, LONG_UPDATE_DELAY_FOR_TEST); | 410 getTestContext(), notifier, LONG_UPDATE_DELAY_FOR_TEST); |
| 403 DownloadInfo downloadInfo = getDownloadInfo(); | 411 DownloadInfo downloadInfo = getDownloadInfo(); |
| 404 DownloadInfo update1 = Builder.fromDownloadInfo(downloadInfo) | 412 DownloadInfo update1 = |
| 405 .setPercentCompleted(10).build(); | 413 Builder.fromDownloadInfo(downloadInfo) |
| 406 DownloadInfo update2 = Builder.fromDownloadInfo(downloadInfo) | 414 .setProgress(new Progress(10, 100L, OfflineItemProgressU
nit.PERCENTAGE)) |
| 407 .setPercentCompleted(20).build(); | 415 .build(); |
| 408 DownloadInfo update3 = Builder.fromDownloadInfo(downloadInfo) | 416 DownloadInfo update2 = |
| 409 .setPercentCompleted(30).build(); | 417 Builder.fromDownloadInfo(downloadInfo) |
| 418 .setProgress(new Progress(10, 100L, OfflineItemProgressU
nit.PERCENTAGE)) |
| 419 .build(); |
| 420 DownloadInfo update3 = |
| 421 Builder.fromDownloadInfo(downloadInfo) |
| 422 .setProgress(new Progress(10, 100L, OfflineItemProgressU
nit.PERCENTAGE)) |
| 423 .build(); |
| 410 | 424 |
| 411 // Should get 2 update calls, the first and the last. The 2nd update wil
l be merged into | 425 // Should get 2 update calls, the first and the last. The 2nd update wil
l be merged into |
| 412 // the last one. | 426 // the last one. |
| 413 notifier.expect(MethodID.DOWNLOAD_PROGRESS, update1) | 427 notifier.expect(MethodID.DOWNLOAD_PROGRESS, update1) |
| 414 .andThen(MethodID.DOWNLOAD_PROGRESS, update3); | 428 .andThen(MethodID.DOWNLOAD_PROGRESS, update3); |
| 415 dService.onDownloadUpdated(update1); | 429 dService.onDownloadUpdated(update1); |
| 416 Thread.sleep(DELAY_BETWEEN_CALLS); | 430 Thread.sleep(DELAY_BETWEEN_CALLS); |
| 417 dService.onDownloadUpdated(update2); | 431 dService.onDownloadUpdated(update2); |
| 418 Thread.sleep(DELAY_BETWEEN_CALLS); | 432 Thread.sleep(DELAY_BETWEEN_CALLS); |
| 419 dService.onDownloadUpdated(update3); | 433 dService.onDownloadUpdated(update3); |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 .setHasUserGesture(false) | 702 .setHasUserGesture(false) |
| 689 .build())); | 703 .build())); |
| 690 Assert.assertFalse(DownloadManagerService.shouldOpenAfterDownload( | 704 Assert.assertFalse(DownloadManagerService.shouldOpenAfterDownload( |
| 691 new DownloadInfo.Builder() | 705 new DownloadInfo.Builder() |
| 692 .setContentDisposition("filename=test.pdf") | 706 .setContentDisposition("filename=test.pdf") |
| 693 .setMimeType("application/pdf") | 707 .setMimeType("application/pdf") |
| 694 .setHasUserGesture(false) | 708 .setHasUserGesture(false) |
| 695 .build())); | 709 .build())); |
| 696 } | 710 } |
| 697 } | 711 } |
| OLD | NEW |