Index: content/browser/download/parallel_download_utils_unittest.cc |
diff --git a/content/browser/download/parallel_download_utils_unittest.cc b/content/browser/download/parallel_download_utils_unittest.cc |
index 74f45111583f428cd7f3c93aa789194a9328637f..eab9d3801cabd7961a2329632622955e4a1948c8 100644 |
--- a/content/browser/download/parallel_download_utils_unittest.cc |
+++ b/content/browser/download/parallel_download_utils_unittest.cc |
@@ -88,7 +88,39 @@ TEST(ParallelDownloadUtilsTest, AddOrMergeReceivedSliceIntoSortedArray) { |
EXPECT_EQ(0, slices[0].offset); |
EXPECT_EQ(100, slices[0].received_bytes); |
EXPECT_EQ(slice4, slices[1]); |
+} |
+ |
+// Ensure the minimum slice size is correctly applied. |
+TEST(ParallelDownloadUtilsTest, FindSlicesForRemainingContentMinSliceSize) { |
+ // Minimum slice size is smaller than total length, only one slice returned. |
+ DownloadItem::ReceivedSlices slices = |
+ FindSlicesForRemainingContent(0, 100, 3, 150); |
+ EXPECT_EQ(1u, slices.size()); |
+ EXPECT_EQ(0, slices[0].offset); |
+ EXPECT_EQ(0, slices[0].received_bytes); |
+ |
+ // Request count is large, the minimum slice size should limit the number of |
+ // slices returned. |
+ slices = FindSlicesForRemainingContent(0, 100, 33, 50); |
+ EXPECT_EQ(2u, slices.size()); |
+ EXPECT_EQ(0, slices[0].offset); |
+ EXPECT_EQ(50, slices[0].received_bytes); |
+ EXPECT_EQ(50, slices[1].offset); |
+ EXPECT_EQ(0, slices[1].received_bytes); |
+ |
+ // Can chunk 2 slices under minimum slice size, but request count is only 1, |
+ // request count should win. |
+ slices = FindSlicesForRemainingContent(0, 100, 1, 50); |
+ EXPECT_EQ(1u, slices.size()); |
+ EXPECT_EQ(0, slices[0].offset); |
+ EXPECT_EQ(0, slices[0].received_bytes); |
+ // A total 100 bytes data and a 51 bytes minimum slice size, only one slice is |
+ // returned. |
+ slices = FindSlicesForRemainingContent(0, 100, 3, 51); |
+ EXPECT_EQ(1u, slices.size()); |
+ EXPECT_EQ(0, slices[0].offset); |
+ EXPECT_EQ(0, slices[0].received_bytes); |
} |
} // namespace content |