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..d4f923370b6afffbcd57d66548f1891b277ad8ae 100644 |
--- a/content/browser/download/download_manager_impl_unittest.cc |
+++ b/content/browser/download/download_manager_impl_unittest.cc |
@@ -37,6 +37,7 @@ |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gmock_mutant.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "url/origin.h" |
using ::testing::AllOf; |
using ::testing::DoAll; |
@@ -483,6 +484,10 @@ class DownloadManagerTest : public testing::Test { |
observer_.reset(new MockDownloadManagerObserver()); |
download_manager_->AddObserver(observer_.get()); |
download_manager_->SetDelegate(mock_download_manager_delegate_.get()); |
+ download_urls_.push_back(GURL("http://www.url1.com")); |
+ download_urls_.push_back(GURL("http://www.url2.com")); |
+ download_urls_.push_back(GURL("http://www.url3.com")); |
+ download_urls_.push_back(GURL("http://www.url4.com")); |
} |
void TearDown() override { |
@@ -502,6 +507,7 @@ class DownloadManagerTest : public testing::Test { |
message_loop_.RunUntilIdle(); |
mock_download_manager_delegate_.reset(); |
mock_browser_context_.reset(); |
+ download_urls_.clear(); |
} |
// Returns download id. |
@@ -521,6 +527,8 @@ class DownloadManagerTest : public testing::Test { |
// in the factory. |
scoped_ptr<DownloadRequestHandleInterface> req_handle; |
item.Start(scoped_ptr<DownloadFile>(), req_handle.Pass()); |
+ DCHECK(id < download_urls_.size()); |
+ EXPECT_CALL(item, GetURL()).WillRepeatedly(ReturnRef(download_urls_[id])); |
return item; |
} |
@@ -576,6 +584,8 @@ class DownloadManagerTest : public testing::Test { |
DownloadDangerType danger_type_; |
base::FilePath intermediate_path_; |
+ std::vector<GURL> download_urls_; |
+ |
private: |
base::MessageLoopForUI message_loop_; |
TestBrowserThread ui_thread_; |
@@ -694,4 +704,23 @@ TEST_F(DownloadManagerTest, RemoveAllDownloads) { |
// result in them being removed from the DownloadManager list. |
} |
+// Confirm that only downloads with same origin are removed. |
+TEST_F(DownloadManagerTest, RemoveSameOriginDownloads) { |
+ 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(GetMockDownloadItem(0), Remove()); |
+ EXPECT_CALL(GetMockDownloadItem(1), Remove()).Times(0); |
+ |
+ url::Origin origin_to_clear(download_urls_[0]); |
+ int remove_count = download_manager_->RemoveDownloadsByOriginAndTime( |
+ origin_to_clear, base::Time(), base::Time::Max()); |
+ EXPECT_EQ(remove_count, 1); |
+} |
+ |
} // namespace content |