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 8a4b6f59d442c85c0ebaa029a51b9a06ecaed883..77f2304e70dea56b53c5bbda617665aef0927e10 100644 |
--- a/content/browser/download/download_manager_impl_unittest.cc |
+++ b/content/browser/download/download_manager_impl_unittest.cc |
@@ -6,12 +6,14 @@ |
#include <stddef.h> |
#include <stdint.h> |
+ |
#include <set> |
#include <string> |
#include <utility> |
#include "base/bind.h" |
#include "base/files/scoped_temp_dir.h" |
+#include "base/guid.h" |
#include "base/macros.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
@@ -49,6 +51,7 @@ using ::testing::Eq; |
using ::testing::Ref; |
using ::testing::Return; |
using ::testing::ReturnRef; |
+using ::testing::ReturnRefOfCopy; |
using ::testing::SetArgPointee; |
using ::testing::StrictMock; |
using ::testing::_; |
@@ -75,26 +78,26 @@ class MockDownloadItemImpl : public DownloadItemImpl { |
public: |
// Use history constructor for minimal base object. |
explicit MockDownloadItemImpl(DownloadItemImplDelegate* delegate) |
- : DownloadItemImpl( |
- delegate, |
- content::DownloadItem::kInvalidId, |
- base::FilePath(), |
- base::FilePath(), |
- std::vector<GURL>(), |
- GURL(), |
- "application/octet-stream", |
- "application/octet-stream", |
- base::Time(), |
- base::Time(), |
- std::string(), |
- std::string(), |
- 0, |
- 0, |
- DownloadItem::COMPLETE, |
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
- DOWNLOAD_INTERRUPT_REASON_NONE, |
- false, |
- net::BoundNetLog()) {} |
+ : DownloadItemImpl(delegate, |
+ std::string("7d122682-55b5-4a47-a253-36cadc3e5bee"), |
+ content::DownloadItem::kInvalidId, |
+ base::FilePath(), |
+ base::FilePath(), |
+ std::vector<GURL>(), |
+ GURL(), |
+ "application/octet-stream", |
+ "application/octet-stream", |
+ base::Time(), |
+ base::Time(), |
+ std::string(), |
+ std::string(), |
+ 0, |
+ 0, |
+ DownloadItem::COMPLETE, |
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
+ DOWNLOAD_INTERRUPT_REASON_NONE, |
+ false, |
+ net::BoundNetLog()) {} |
virtual ~MockDownloadItemImpl() {} |
MOCK_METHOD4(OnDownloadTargetDetermined, |
@@ -153,6 +156,7 @@ class MockDownloadItemImpl : public DownloadItemImpl { |
MOCK_CONST_METHOD0(GetHashState, const std::string&()); |
MOCK_CONST_METHOD0(GetHash, const std::string&()); |
MOCK_CONST_METHOD0(GetId, uint32_t()); |
+ MOCK_CONST_METHOD0(GetGuid, const std::string&()); |
MOCK_CONST_METHOD0(GetStartTime, base::Time()); |
MOCK_CONST_METHOD0(GetEndTime, base::Time()); |
MOCK_METHOD0(GetDownloadManager, DownloadManager*()); |
@@ -237,6 +241,7 @@ class MockDownloadItemFactory |
// Overridden methods from DownloadItemFactory. |
DownloadItemImpl* CreatePersistedItem( |
DownloadItemImplDelegate* delegate, |
+ const std::string& guid, |
uint32_t download_id, |
const base::FilePath& current_path, |
const base::FilePath& target_path, |
@@ -304,6 +309,7 @@ void MockDownloadItemFactory::RemoveItem(int id) { |
DownloadItemImpl* MockDownloadItemFactory::CreatePersistedItem( |
DownloadItemImplDelegate* delegate, |
+ const std::string& guid, |
uint32_t download_id, |
const base::FilePath& current_path, |
const base::FilePath& target_path, |
@@ -327,6 +333,7 @@ DownloadItemImpl* MockDownloadItemFactory::CreatePersistedItem( |
new StrictMock<MockDownloadItemImpl>(&item_delegate_); |
EXPECT_CALL(*result, GetId()) |
.WillRepeatedly(Return(download_id)); |
+ EXPECT_CALL(*result, GetGuid()).WillRepeatedly(ReturnRefOfCopy(guid)); |
items_[download_id] = result; |
return result; |
} |
@@ -342,6 +349,9 @@ DownloadItemImpl* MockDownloadItemFactory::CreateActiveItem( |
new StrictMock<MockDownloadItemImpl>(&item_delegate_); |
EXPECT_CALL(*result, GetId()) |
.WillRepeatedly(Return(download_id)); |
+ EXPECT_CALL(*result, GetGuid()) |
+ .WillRepeatedly( |
+ ReturnRefOfCopy(base::ToUpperASCII(base::GenerateGUID()))); |
items_[download_id] = result; |
// Active items are created and then immediately are called to start |
@@ -712,6 +722,42 @@ TEST_F(DownloadManagerTest, RemoveAllDownloads) { |
// result in them being removed from the DownloadManager list. |
} |
+TEST_F(DownloadManagerTest, GetDownloadByGuid) { |
+ for (uint32_t i = 0; i < 4; ++i) |
+ AddItemToManager(); |
+ |
+ MockDownloadItemImpl& item = GetMockDownloadItem(0); |
+ DownloadItem* result = download_manager_->GetDownloadByGuid(item.GetGuid()); |
+ ASSERT_TRUE(result); |
+ ASSERT_EQ(static_cast<DownloadItem*>(&item), result); |
+ |
+ ASSERT_FALSE(download_manager_->GetDownloadByGuid("")); |
+ |
+ const char kGuid[] = "8DF158E8-C980-4618-BB03-EBA3242EB48B"; |
+ DownloadItem* persisted_item = download_manager_->CreateDownloadItem( |
+ kGuid, |
+ 10, |
+ base::FilePath(), |
+ base::FilePath(), |
+ std::vector<GURL>(), |
+ GURL("http://example.com/a"), |
+ "application/octet-stream", |
+ "application/octet-stream", |
+ base::Time::Now(), |
+ base::Time::Now(), |
+ std::string(), |
+ std::string(), |
+ 10, |
+ 10, |
+ DownloadItem::INTERRUPTED, |
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, |
+ DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, |
+ false); |
+ ASSERT_TRUE(persisted_item); |
+ |
+ ASSERT_EQ(persisted_item, download_manager_->GetDownloadByGuid(kGuid)); |
+} |
+ |
namespace { |
base::Callback<bool(const GURL&)> GetSingleURLFilter(const GURL& url) { |