Index: chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc |
diff --git a/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc b/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc |
index ced1f8f5db4b6cbda02caf72e0487e737dc89c7a..2d9c1eed9f191acd87bd7c3ce60dfe0c5484ac45 100644 |
--- a/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc |
+++ b/chrome/browser/ui/webui/md_downloads/downloads_list_tracker_unittest.cc |
@@ -79,6 +79,7 @@ class TestDownloadsListTracker : public DownloadsListTracker { |
using DownloadsListTracker::IsIncognito; |
using DownloadsListTracker::GetItemForTesting; |
+ using DownloadsListTracker::SetChunkSizeForTesting; |
protected: |
scoped_ptr<base::DictionaryValue> CreateDownloadItemValue( |
@@ -94,6 +95,7 @@ class TestDownloadsListTracker : public DownloadsListTracker { |
class DownloadsListTrackerTest : public testing::Test { |
public: |
DownloadsListTrackerTest() {} |
+ |
~DownloadsListTrackerTest() override { |
for (auto* mock_item : mock_items_) |
testing::Mock::VerifyAndClear(mock_item); |
@@ -173,7 +175,7 @@ TEST_F(DownloadsListTrackerTest, StartCallsInsertItems) { |
ASSERT_TRUE(tracker()->GetItemForTesting(0)); |
EXPECT_TRUE(web_ui()->call_data().empty()); |
- tracker()->Start(); |
+ tracker()->StartAndSendChunk(); |
ASSERT_FALSE(web_ui()->call_data().empty()); |
EXPECT_EQ("downloads.Manager.insertItems", |
@@ -193,7 +195,7 @@ TEST_F(DownloadsListTrackerTest, EmptyGetAllItemsStillCallsInsertItems) { |
ASSERT_FALSE(tracker()->GetItemForTesting(0)); |
ASSERT_TRUE(web_ui()->call_data().empty()); |
- tracker()->Start(); |
+ tracker()->StartAndSendChunk(); |
ASSERT_FALSE(web_ui()->call_data().empty()); |
EXPECT_EQ("downloads.Manager.insertItems", |
@@ -204,7 +206,7 @@ TEST_F(DownloadsListTrackerTest, EmptyGetAllItemsStillCallsInsertItems) { |
TEST_F(DownloadsListTrackerTest, OnDownloadCreatedCallsInsertItems) { |
CreateTracker(); |
- tracker()->Start(); |
+ tracker()->StartAndSendChunk(); |
web_ui()->ClearTrackedCalls(); |
ASSERT_FALSE(tracker()->GetItemForTesting(0)); |
@@ -225,7 +227,7 @@ TEST_F(DownloadsListTrackerTest, OnDownloadRemovedCallsRemoveItem) { |
DownloadItem* first_item = CreateNextItem(); |
CreateTracker(); |
- tracker()->Start(); |
+ tracker()->StartAndSendChunk(); |
web_ui()->ClearTrackedCalls(); |
EXPECT_TRUE(tracker()->GetItemForTesting(0)); |
@@ -243,7 +245,7 @@ TEST_F(DownloadsListTrackerTest, OnDownloadUpdatedCallsRemoveItem) { |
DownloadItem* first_item = CreateNextItem(); |
CreateTracker(); |
- tracker()->Start(); |
+ tracker()->StartAndSendChunk(); |
web_ui()->ClearTrackedCalls(); |
EXPECT_TRUE(tracker()->GetItemForTesting(0)); |
@@ -265,7 +267,7 @@ TEST_F(DownloadsListTrackerTest, StartExcludesHiddenItems) { |
DownloadItemModel(first_item).SetShouldShowInShelf(false); |
CreateTracker(); |
- tracker()->Start(); |
+ tracker()->StartAndSendChunk(); |
ASSERT_FALSE(web_ui()->call_data().empty()); |
@@ -287,3 +289,71 @@ TEST_F(DownloadsListTrackerTest, Incognito) { |
TestDownloadsListTracker tracker(&incognito_manager, web_ui()); |
EXPECT_TRUE(tracker.IsIncognito(item)); |
} |
+ |
+TEST_F(DownloadsListTrackerTest, OnlySendSomeItems) { |
+ CreateNextItem(); |
+ CreateNextItem(); |
+ CreateNextItem(); |
+ CreateNextItem(); |
+ CreateNextItem(); |
+ |
+ CreateTracker(); |
+ tracker()->SetChunkSizeForTesting(3); |
+ tracker()->StartAndSendChunk(); |
+ |
+ ASSERT_FALSE(web_ui()->call_data().empty()); |
+ |
+ EXPECT_EQ("downloads.Manager.insertItems", |
+ web_ui()->call_data()[0]->function_name()); |
+ EXPECT_EQ(0, GetIndex(web_ui()->call_data()[0]->arg1())); |
+ EXPECT_EQ(3u, GetIds(web_ui()->call_data()[0]->arg2()).size()); |
+ |
+ tracker()->StartAndSendChunk(); |
+ ASSERT_GE(2u, web_ui()->call_data().size()); |
+ |
+ EXPECT_EQ("downloads.Manager.insertItems", |
+ web_ui()->call_data()[1]->function_name()); |
+ EXPECT_EQ(3, GetIndex(web_ui()->call_data()[1]->arg1())); |
+ EXPECT_EQ(2u, GetIds(web_ui()->call_data()[1]->arg2()).size()); |
+} |
+ |
+TEST_F(DownloadsListTrackerTest, IgnoreUnsentItemUpdates) { |
+ DownloadItem* unsent_item = CreateNextItem(); |
+ CreateNextItem(); |
+ |
+ CreateTracker(); |
+ tracker()->SetChunkSizeForTesting(1); |
+ tracker()->StartAndSendChunk(); |
+ |
+ ASSERT_FALSE(web_ui()->call_data().empty()); |
+ |
+ EXPECT_EQ("downloads.Manager.insertItems", |
+ web_ui()->call_data()[0]->function_name()); |
+ EXPECT_EQ(1u, GetIds(web_ui()->call_data()[0]->arg2()).size()); |
+ |
+ tracker()->OnDownloadUpdated(manager(), unsent_item); |
+ EXPECT_EQ(1u, web_ui()->call_data().size()); |
+} |
+ |
+TEST_F(DownloadsListTrackerTest, IgnoreUnsentItemRemovals) { |
+ DownloadItem* unsent_item = CreateNextItem(); |
+ CreateNextItem(); |
+ |
+ CreateTracker(); |
+ tracker()->SetChunkSizeForTesting(1); |
+ tracker()->StartAndSendChunk(); |
+ |
+ ASSERT_FALSE(web_ui()->call_data().empty()); |
+ |
+ EXPECT_EQ("downloads.Manager.insertItems", |
+ web_ui()->call_data()[0]->function_name()); |
+ EXPECT_EQ(1u, GetIds(web_ui()->call_data()[0]->arg2()).size()); |
+ |
+ DownloadItemModel(unsent_item).SetShouldShowInShelf(false); |
+ tracker()->OnDownloadUpdated(manager(), unsent_item); |
+ EXPECT_EQ(1u, web_ui()->call_data().size()); |
+ |
+ DownloadItemModel(unsent_item).SetShouldShowInShelf(true); |
+ tracker()->OnDownloadUpdated(manager(), unsent_item); |
+ EXPECT_EQ(1u, web_ui()->call_data().size()); |
+} |