Index: content/browser/download/download_manager_impl_unittest.cc |
diff --git a/content/browser/download/download_manager_impl_unittest.cc b/content/browser/download/download_manager_impl_unittest.cc |
index 52adff4010e44aef4d21566bd76fedc0cca3dec8..65c88263af6ab5e91005561e6158eef5d50f3816 100644 |
--- a/content/browser/download/download_manager_impl_unittest.cc |
+++ b/content/browser/download/download_manager_impl_unittest.cc |
@@ -59,6 +59,10 @@ class ByteStreamReader; |
namespace { |
+const GURL origin1("http://www.origin1.com"); |
+const GURL origin2("http://www.origin2.com"); |
+const GURL origin3("http://www.origin3.com"); |
+ |
// Matches a DownloadCreateInfo* that points to the same object as |info| and |
// has a |default_download_directory| that matches |download_directory|. |
MATCHER_P2(DownloadCreateInfoWithDefaultPath, info, download_directory, "") { |
@@ -694,4 +698,85 @@ TEST_F(DownloadManagerTest, RemoveAllDownloads) { |
// result in them being removed from the DownloadManager list. |
} |
+// Confirm that downloads without origin restrictions are removed. |
+TEST_F(DownloadManagerTest, RemoveUnrestrictedOriginDownloads) { |
+ base::Time now(base::Time::Now()); |
+ for (uint32 i = 0; i < 3; ++i) { |
+ MockDownloadItemImpl& item(AddItemToManager()); |
+ EXPECT_CALL(item, GetStartTime()) |
+ .WillRepeatedly(Return(now)); |
+ EXPECT_CALL(item, GetState()) |
+ .WillRepeatedly(Return(DownloadItem::COMPLETE)); |
+ EXPECT_CALL(item, Remove()); |
+ } |
+ |
+ EXPECT_CALL(GetMockDownloadItem(0), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin1)); |
+ EXPECT_CALL(GetMockDownloadItem(1), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin2)); |
+ EXPECT_CALL(GetMockDownloadItem(2), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin3)); |
+ |
+ int remove_count = download_manager_->RemoveDownloadsBetween( |
+ std::set<GURL>(), base::Time(), base::Time::Max()); |
+ EXPECT_EQ(remove_count, 3); |
+} |
+ |
+// Confirm that downloads from matching restricted origins are removed. |
+TEST_F(DownloadManagerTest, RemoveRestrictedMatchingOriginDownloads) { |
+ base::Time now(base::Time::Now()); |
+ for (uint32 i = 0; i < 3; ++i) { |
+ MockDownloadItemImpl& item(AddItemToManager()); |
+ EXPECT_CALL(item, GetStartTime()) |
+ .WillRepeatedly(Return(now)); |
+ EXPECT_CALL(item, GetState()) |
+ .WillRepeatedly(Return(DownloadItem::COMPLETE)); |
+ } |
+ |
+ EXPECT_CALL(GetMockDownloadItem(0), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin1)); |
+ EXPECT_CALL(GetMockDownloadItem(0), Remove()); |
+ |
+ EXPECT_CALL(GetMockDownloadItem(1), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin2)); |
+ EXPECT_CALL(GetMockDownloadItem(1), Remove()); |
+ |
+ EXPECT_CALL(GetMockDownloadItem(2), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin3)); |
+ EXPECT_CALL(GetMockDownloadItem(2), Remove()) |
+ .Times(0); |
+ |
+ std::set<GURL> restricted_urls; |
+ restricted_urls.insert(origin1); |
+ restricted_urls.insert(origin2); |
+ int remove_count = download_manager_->RemoveDownloadsBetween( |
+ restricted_urls, base::Time(), base::Time::Max()); |
+ EXPECT_EQ(remove_count, 2); |
+} |
+ |
+// Confirm that downloads from non-matching restricted origins are not removed. |
+TEST_F(DownloadManagerTest, RemoveRestrictedNonMatchingOriginDownloads) { |
+ base::Time now(base::Time::Now()); |
+ for (uint32 i = 0; i < 2; ++i) { |
+ MockDownloadItemImpl& item(AddItemToManager()); |
+ EXPECT_CALL(item, GetStartTime()) |
+ .WillRepeatedly(Return(now)); |
+ EXPECT_CALL(item, GetState()) |
+ .WillRepeatedly(Return(DownloadItem::COMPLETE)); |
+ EXPECT_CALL(item, Remove()) |
+ .Times(0); |
+ } |
+ |
+ EXPECT_CALL(GetMockDownloadItem(0), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin1)); |
+ EXPECT_CALL(GetMockDownloadItem(1), GetURL()) |
+ .WillRepeatedly(ReturnRef(origin2)); |
+ |
+ std::set<GURL> restricted_urls; |
+ restricted_urls.insert(origin3); |
+ int remove_count = download_manager_->RemoveDownloadsBetween( |
+ restricted_urls, base::Time(), base::Time::Max()); |
+ EXPECT_EQ(remove_count, 0); |
+} |
+ |
} // namespace content |