| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <set> | 5 #include <set> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 // has a |default_download_directory| that matches |download_directory|. | 58 // has a |default_download_directory| that matches |download_directory|. |
| 59 MATCHER_P2(DownloadCreateInfoWithDefaultPath, info, download_directory, "") { | 59 MATCHER_P2(DownloadCreateInfoWithDefaultPath, info, download_directory, "") { |
| 60 return arg == info && | 60 return arg == info && |
| 61 arg->default_download_directory == download_directory; | 61 arg->default_download_directory == download_directory; |
| 62 } | 62 } |
| 63 | 63 |
| 64 class MockDownloadItemImpl : public DownloadItemImpl { | 64 class MockDownloadItemImpl : public DownloadItemImpl { |
| 65 public: | 65 public: |
| 66 // Use history constructor for minimal base object. | 66 // Use history constructor for minimal base object. |
| 67 MockDownloadItemImpl(DownloadItemImplDelegate* delegate) | 67 MockDownloadItemImpl(DownloadItemImplDelegate* delegate) |
| 68 : DownloadItemImpl(delegate, DownloadId(), | 68 : DownloadItemImpl( |
| 69 DownloadPersistentStoreInfo(), | 69 delegate, |
| 70 net::BoundNetLog()) {} | 70 content::DownloadId(), |
| 71 FilePath(), |
| 72 GURL(), |
| 73 GURL(), |
| 74 base::Time(), |
| 75 base::Time(), |
| 76 0, |
| 77 0, |
| 78 DownloadItem::IN_PROGRESS, |
| 79 false, |
| 80 net::BoundNetLog()) {} |
| 71 virtual ~MockDownloadItemImpl() {} | 81 virtual ~MockDownloadItemImpl() {} |
| 72 | 82 |
| 73 MOCK_METHOD4(OnDownloadTargetDetermined, | 83 MOCK_METHOD4(OnDownloadTargetDetermined, |
| 74 void(const FilePath&, TargetDisposition, | 84 void(const FilePath&, TargetDisposition, |
| 75 DownloadDangerType, const FilePath&)); | 85 DownloadDangerType, const FilePath&)); |
| 76 MOCK_METHOD1(AddObserver, void(DownloadItem::Observer*)); | 86 MOCK_METHOD1(AddObserver, void(DownloadItem::Observer*)); |
| 77 MOCK_METHOD1(RemoveObserver, void(DownloadItem::Observer*)); | 87 MOCK_METHOD1(RemoveObserver, void(DownloadItem::Observer*)); |
| 78 MOCK_METHOD0(UpdateObservers, void()); | 88 MOCK_METHOD0(UpdateObservers, void()); |
| 79 MOCK_METHOD0(CanShowInFolder, bool()); | 89 MOCK_METHOD0(CanShowInFolder, bool()); |
| 80 MOCK_METHOD0(CanOpenDownload, bool()); | 90 MOCK_METHOD0(CanOpenDownload, bool()); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 MOCK_CONST_METHOD0(GetReferrerCharset, std::string()); | 137 MOCK_CONST_METHOD0(GetReferrerCharset, std::string()); |
| 128 MOCK_CONST_METHOD0(GetRemoteAddress, std::string()); | 138 MOCK_CONST_METHOD0(GetRemoteAddress, std::string()); |
| 129 MOCK_CONST_METHOD0(GetTotalBytes, int64()); | 139 MOCK_CONST_METHOD0(GetTotalBytes, int64()); |
| 130 MOCK_CONST_METHOD0(GetReceivedBytes, int64()); | 140 MOCK_CONST_METHOD0(GetReceivedBytes, int64()); |
| 131 MOCK_CONST_METHOD0(GetHashState, const std::string&()); | 141 MOCK_CONST_METHOD0(GetHashState, const std::string&()); |
| 132 MOCK_CONST_METHOD0(GetHash, const std::string&()); | 142 MOCK_CONST_METHOD0(GetHash, const std::string&()); |
| 133 MOCK_CONST_METHOD0(GetId, int32()); | 143 MOCK_CONST_METHOD0(GetId, int32()); |
| 134 MOCK_CONST_METHOD0(GetGlobalId, DownloadId()); | 144 MOCK_CONST_METHOD0(GetGlobalId, DownloadId()); |
| 135 MOCK_CONST_METHOD0(GetStartTime, base::Time()); | 145 MOCK_CONST_METHOD0(GetStartTime, base::Time()); |
| 136 MOCK_CONST_METHOD0(GetEndTime, base::Time()); | 146 MOCK_CONST_METHOD0(GetEndTime, base::Time()); |
| 137 MOCK_METHOD0(SetIsPersisted, void()); | |
| 138 MOCK_CONST_METHOD0(IsPersisted, bool()); | |
| 139 MOCK_METHOD1(SetDbHandle, void(int64)); | |
| 140 MOCK_CONST_METHOD0(GetDbHandle, int64()); | |
| 141 MOCK_METHOD0(GetDownloadManager, DownloadManager*()); | 147 MOCK_METHOD0(GetDownloadManager, DownloadManager*()); |
| 142 MOCK_CONST_METHOD0(IsPaused, bool()); | 148 MOCK_CONST_METHOD0(IsPaused, bool()); |
| 143 MOCK_CONST_METHOD0(GetOpenWhenComplete, bool()); | 149 MOCK_CONST_METHOD0(GetOpenWhenComplete, bool()); |
| 144 MOCK_METHOD1(SetOpenWhenComplete, void(bool)); | 150 MOCK_METHOD1(SetOpenWhenComplete, void(bool)); |
| 145 MOCK_CONST_METHOD0(GetFileExternallyRemoved, bool()); | 151 MOCK_CONST_METHOD0(GetFileExternallyRemoved, bool()); |
| 146 MOCK_CONST_METHOD0(GetSafetyState, SafetyState()); | 152 MOCK_CONST_METHOD0(GetSafetyState, SafetyState()); |
| 147 MOCK_CONST_METHOD0(GetDangerType, DownloadDangerType()); | 153 MOCK_CONST_METHOD0(GetDangerType, DownloadDangerType()); |
| 148 MOCK_CONST_METHOD0(IsDangerous, bool()); | 154 MOCK_CONST_METHOD0(IsDangerous, bool()); |
| 149 MOCK_METHOD0(GetAutoOpened, bool()); | 155 MOCK_METHOD0(GetAutoOpened, bool()); |
| 150 MOCK_CONST_METHOD0(GetForcedFilePath, const FilePath&()); | 156 MOCK_CONST_METHOD0(GetForcedFilePath, const FilePath&()); |
| 151 MOCK_CONST_METHOD0(HasUserGesture, bool()); | 157 MOCK_CONST_METHOD0(HasUserGesture, bool()); |
| 152 MOCK_CONST_METHOD0(GetTransitionType, PageTransition()); | 158 MOCK_CONST_METHOD0(GetTransitionType, PageTransition()); |
| 153 MOCK_CONST_METHOD0(IsTemporary, bool()); | 159 MOCK_CONST_METHOD0(IsTemporary, bool()); |
| 154 MOCK_METHOD1(SetIsTemporary, void(bool)); | 160 MOCK_METHOD1(SetIsTemporary, void(bool)); |
| 155 MOCK_METHOD1(SetOpened, void(bool)); | 161 MOCK_METHOD1(SetOpened, void(bool)); |
| 156 MOCK_CONST_METHOD0(GetOpened, bool()); | 162 MOCK_CONST_METHOD0(GetOpened, bool()); |
| 157 MOCK_CONST_METHOD0(GetLastModifiedTime, const std::string&()); | 163 MOCK_CONST_METHOD0(GetLastModifiedTime, const std::string&()); |
| 158 MOCK_CONST_METHOD0(GetETag, const std::string&()); | 164 MOCK_CONST_METHOD0(GetETag, const std::string&()); |
| 159 MOCK_CONST_METHOD0(GetLastReason, DownloadInterruptReason()); | 165 MOCK_CONST_METHOD0(GetLastReason, DownloadInterruptReason()); |
| 160 MOCK_CONST_METHOD0(GetPersistentStoreInfo, DownloadPersistentStoreInfo()); | |
| 161 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*()); | 166 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*()); |
| 162 MOCK_CONST_METHOD0(GetWebContents, WebContents*()); | 167 MOCK_CONST_METHOD0(GetWebContents, WebContents*()); |
| 163 MOCK_CONST_METHOD0(GetFileNameToReportUser, FilePath()); | 168 MOCK_CONST_METHOD0(GetFileNameToReportUser, FilePath()); |
| 164 MOCK_METHOD1(SetDisplayName, void(const FilePath&)); | 169 MOCK_METHOD1(SetDisplayName, void(const FilePath&)); |
| 165 MOCK_CONST_METHOD0(GetUserVerifiedFilePath, FilePath()); | 170 MOCK_CONST_METHOD0(GetUserVerifiedFilePath, FilePath()); |
| 166 MOCK_METHOD0(MockDownloadOpenForTesting, void()); | 171 MOCK_METHOD0(MockDownloadOpenForTesting, void()); |
| 167 // May be called when vlog is on. | 172 // May be called when vlog is on. |
| 168 virtual std::string DebugString(bool verbose) const OVERRIDE { return ""; } | 173 virtual std::string DebugString(bool verbose) const OVERRIDE { return ""; } |
| 169 }; | 174 }; |
| 170 | 175 |
| 171 class MockDownloadManagerDelegate : public DownloadManagerDelegate { | 176 class MockDownloadManagerDelegate : public DownloadManagerDelegate { |
| 172 public: | 177 public: |
| 173 MockDownloadManagerDelegate(); | 178 MockDownloadManagerDelegate(); |
| 174 virtual ~MockDownloadManagerDelegate(); | 179 virtual ~MockDownloadManagerDelegate(); |
| 175 | 180 |
| 176 MOCK_METHOD0(Shutdown, void()); | 181 MOCK_METHOD0(Shutdown, void()); |
| 177 MOCK_METHOD0(GetNextId, DownloadId()); | 182 MOCK_METHOD0(GetNextId, DownloadId()); |
| 178 MOCK_METHOD2(DetermineDownloadTarget, | 183 MOCK_METHOD2(DetermineDownloadTarget, |
| 179 bool(DownloadItem* item, | 184 bool(DownloadItem* item, |
| 180 const DownloadTargetCallback&)); | 185 const DownloadTargetCallback&)); |
| 181 MOCK_METHOD0(GetAlternativeWebContentsToNotifyForDownload, WebContents*()); | 186 MOCK_METHOD0(GetAlternativeWebContentsToNotifyForDownload, WebContents*()); |
| 182 MOCK_METHOD1(ShouldOpenFileBasedOnExtension, bool(const FilePath&)); | 187 MOCK_METHOD1(ShouldOpenFileBasedOnExtension, bool(const FilePath&)); |
| 183 MOCK_METHOD2(ShouldCompleteDownload, | 188 MOCK_METHOD2(ShouldCompleteDownload, |
| 184 bool(DownloadItem*, const base::Closure&)); | 189 bool(DownloadItem*, const base::Closure&)); |
| 185 MOCK_METHOD1(ShouldOpenDownload, bool(DownloadItem*)); | 190 MOCK_METHOD1(ShouldOpenDownload, bool(DownloadItem*)); |
| 186 MOCK_METHOD0(GenerateFileHash, bool()); | 191 MOCK_METHOD0(GenerateFileHash, bool()); |
| 187 MOCK_METHOD1(AddItemToPersistentStore, void(DownloadItem*)); | |
| 188 MOCK_METHOD1(UpdateItemInPersistentStore, void(DownloadItem*)); | |
| 189 MOCK_METHOD2(UpdatePathForItemInPersistentStore, | |
| 190 void(DownloadItem*, const FilePath&)); | |
| 191 MOCK_METHOD1(RemoveItemFromPersistentStore, void(DownloadItem*)); | |
| 192 MOCK_METHOD2(RemoveItemsFromPersistentStoreBetween, void( | |
| 193 base::Time remove_begin, base::Time remove_end)); | |
| 194 MOCK_METHOD4(GetSaveDir, void(BrowserContext*, | 192 MOCK_METHOD4(GetSaveDir, void(BrowserContext*, |
| 195 FilePath*, FilePath*, bool*)); | 193 FilePath*, FilePath*, bool*)); |
| 196 MOCK_METHOD5(ChooseSavePath, void( | 194 MOCK_METHOD5(ChooseSavePath, void( |
| 197 WebContents*, const FilePath&, const FilePath::StringType&, | 195 WebContents*, const FilePath&, const FilePath::StringType&, |
| 198 bool, const SavePackagePathPickedCallback&)); | 196 bool, const SavePackagePathPickedCallback&)); |
| 199 }; | 197 }; |
| 200 | 198 |
| 201 MockDownloadManagerDelegate::MockDownloadManagerDelegate() {} | 199 MockDownloadManagerDelegate::MockDownloadManagerDelegate() {} |
| 202 | 200 |
| 203 MockDownloadManagerDelegate::~MockDownloadManagerDelegate() {} | 201 MockDownloadManagerDelegate::~MockDownloadManagerDelegate() {} |
| (...skipping 17 matching lines...) Expand all Loading... |
| 221 MockDownloadItemImpl* PopItem(); | 219 MockDownloadItemImpl* PopItem(); |
| 222 | 220 |
| 223 // Should be called when the item of this id is removed so that | 221 // Should be called when the item of this id is removed so that |
| 224 // we don't keep dangling pointers. | 222 // we don't keep dangling pointers. |
| 225 void RemoveItem(int id); | 223 void RemoveItem(int id); |
| 226 | 224 |
| 227 // Overridden methods from DownloadItemFactory. | 225 // Overridden methods from DownloadItemFactory. |
| 228 virtual DownloadItemImpl* CreatePersistedItem( | 226 virtual DownloadItemImpl* CreatePersistedItem( |
| 229 DownloadItemImplDelegate* delegate, | 227 DownloadItemImplDelegate* delegate, |
| 230 DownloadId download_id, | 228 DownloadId download_id, |
| 231 const DownloadPersistentStoreInfo& info, | 229 const FilePath& path, |
| 230 const GURL& url, |
| 231 const GURL& referrer_url, |
| 232 const base::Time& start_time, |
| 233 const base::Time& end_time, |
| 234 int64 received_bytes, |
| 235 int64 total_bytes, |
| 236 DownloadItem::DownloadState state, |
| 237 bool opened, |
| 232 const net::BoundNetLog& bound_net_log) OVERRIDE; | 238 const net::BoundNetLog& bound_net_log) OVERRIDE; |
| 233 virtual DownloadItemImpl* CreateActiveItem( | 239 virtual DownloadItemImpl* CreateActiveItem( |
| 234 DownloadItemImplDelegate* delegate, | 240 DownloadItemImplDelegate* delegate, |
| 235 const DownloadCreateInfo& info, | 241 const DownloadCreateInfo& info, |
| 236 scoped_ptr<DownloadRequestHandleInterface> request_handle, | 242 scoped_ptr<DownloadRequestHandleInterface> request_handle, |
| 237 const net::BoundNetLog& bound_net_log) OVERRIDE; | 243 const net::BoundNetLog& bound_net_log) OVERRIDE; |
| 238 virtual DownloadItemImpl* CreateSavePageItem( | 244 virtual DownloadItemImpl* CreateSavePageItem( |
| 239 DownloadItemImplDelegate* delegate, | 245 DownloadItemImplDelegate* delegate, |
| 240 const FilePath& path, | 246 const FilePath& path, |
| 241 const GURL& url, | 247 const GURL& url, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 272 } | 278 } |
| 273 | 279 |
| 274 void MockDownloadItemFactory::RemoveItem(int id) { | 280 void MockDownloadItemFactory::RemoveItem(int id) { |
| 275 DCHECK(items_.find(id) != items_.end()); | 281 DCHECK(items_.find(id) != items_.end()); |
| 276 items_.erase(id); | 282 items_.erase(id); |
| 277 } | 283 } |
| 278 | 284 |
| 279 DownloadItemImpl* MockDownloadItemFactory::CreatePersistedItem( | 285 DownloadItemImpl* MockDownloadItemFactory::CreatePersistedItem( |
| 280 DownloadItemImplDelegate* delegate, | 286 DownloadItemImplDelegate* delegate, |
| 281 DownloadId download_id, | 287 DownloadId download_id, |
| 282 const DownloadPersistentStoreInfo& info, | 288 const FilePath& path, |
| 289 const GURL& url, |
| 290 const GURL& referrer_url, |
| 291 const base::Time& start_time, |
| 292 const base::Time& end_time, |
| 293 int64 received_bytes, |
| 294 int64 total_bytes, |
| 295 DownloadItem::DownloadState state, |
| 296 bool opened, |
| 283 const net::BoundNetLog& bound_net_log) { | 297 const net::BoundNetLog& bound_net_log) { |
| 284 int local_id = download_id.local(); | 298 int local_id = download_id.local(); |
| 285 DCHECK(items_.find(local_id) == items_.end()); | 299 DCHECK(items_.find(local_id) == items_.end()); |
| 286 | 300 |
| 287 MockDownloadItemImpl* result = | 301 MockDownloadItemImpl* result = |
| 288 new StrictMock<MockDownloadItemImpl>(&item_delegate_); | 302 new StrictMock<MockDownloadItemImpl>(&item_delegate_); |
| 289 EXPECT_CALL(*result, GetId()) | 303 EXPECT_CALL(*result, GetId()) |
| 290 .WillRepeatedly(Return(local_id)); | 304 .WillRepeatedly(Return(local_id)); |
| 291 items_[local_id] = result; | 305 items_[local_id] = result; |
| 292 | 306 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 download_manager_->DetermineDownloadTarget( | 551 download_manager_->DetermineDownloadTarget( |
| 538 item, base::Bind( | 552 item, base::Bind( |
| 539 &DownloadManagerTest::DownloadTargetDeterminedCallback, | 553 &DownloadManagerTest::DownloadTargetDeterminedCallback, |
| 540 base::Unretained(this))); | 554 base::Unretained(this))); |
| 541 } | 555 } |
| 542 | 556 |
| 543 void AddItemToHistory(MockDownloadItemImpl& item, int64 db_handle) { | 557 void AddItemToHistory(MockDownloadItemImpl& item, int64 db_handle) { |
| 544 // For DCHECK in AddDownloadItemToHistory. Don't want to use | 558 // For DCHECK in AddDownloadItemToHistory. Don't want to use |
| 545 // WillRepeatedly as it may have to return true after this. | 559 // WillRepeatedly as it may have to return true after this. |
| 546 if (DCHECK_IS_ON()) | 560 if (DCHECK_IS_ON()) |
| 547 EXPECT_CALL(item, IsPersisted()) | |
| 548 .WillRepeatedly(Return(false)); | |
| 549 | |
| 550 EXPECT_CALL(item, SetDbHandle(db_handle)); | |
| 551 EXPECT_CALL(item, SetIsPersisted()); | |
| 552 EXPECT_CALL(item, GetDbHandle()) | |
| 553 .WillRepeatedly(Return(db_handle)); | |
| 554 | |
| 555 // Null out ShowDownloadInBrowser | 561 // Null out ShowDownloadInBrowser |
| 556 EXPECT_CALL(item, GetWebContents()) | 562 EXPECT_CALL(item, GetWebContents()) |
| 557 .WillOnce(Return(static_cast<WebContents*>(NULL))); | 563 .WillOnce(Return(static_cast<WebContents*>(NULL))); |
| 558 EXPECT_CALL(GetMockDownloadManagerDelegate(), | 564 EXPECT_CALL(GetMockDownloadManagerDelegate(), |
| 559 GetAlternativeWebContentsToNotifyForDownload()) | 565 GetAlternativeWebContentsToNotifyForDownload()) |
| 560 .WillOnce(Return(static_cast<WebContents*>(NULL))); | 566 .WillOnce(Return(static_cast<WebContents*>(NULL))); |
| 561 | 567 |
| 562 EXPECT_CALL(item, IsInProgress()) | 568 EXPECT_CALL(item, IsInProgress()) |
| 563 .WillOnce(Return(true)); | 569 .WillOnce(Return(true)); |
| 564 | 570 |
| 565 // History addition should result in a call into MaybeCompleteDownload(). | 571 // History addition should result in a call into MaybeCompleteDownload(). |
| 566 EXPECT_CALL(item, MaybeCompleteDownload()) | 572 EXPECT_CALL(item, MaybeCompleteDownload()) |
| 567 .WillOnce(Return()); | 573 .WillOnce(Return()); |
| 568 | |
| 569 download_manager_->OnItemAddedToPersistentStore(item.GetId(), db_handle); | |
| 570 } | 574 } |
| 571 | 575 |
| 572 protected: | 576 protected: |
| 573 // Key test variable; we'll keep it available to sub-classes. | 577 // Key test variable; we'll keep it available to sub-classes. |
| 574 scoped_refptr<DownloadManagerImpl> download_manager_; | 578 scoped_refptr<DownloadManagerImpl> download_manager_; |
| 575 base::WeakPtr<MockDownloadFileFactory> mock_download_file_factory_; | 579 base::WeakPtr<MockDownloadFileFactory> mock_download_file_factory_; |
| 576 | 580 |
| 577 // Target detetermined callback. | 581 // Target detetermined callback. |
| 578 bool callback_called_; | 582 bool callback_called_; |
| 579 FilePath target_path_; | 583 FilePath target_path_; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 callback_called_ = false; | 653 callback_called_ = false; |
| 650 DetermineDownloadTarget(&item); | 654 DetermineDownloadTarget(&item); |
| 651 EXPECT_TRUE(callback_called_); | 655 EXPECT_TRUE(callback_called_); |
| 652 EXPECT_EQ(path, target_path_); | 656 EXPECT_EQ(path, target_path_); |
| 653 EXPECT_EQ(DownloadItem::TARGET_DISPOSITION_OVERWRITE, target_disposition_); | 657 EXPECT_EQ(DownloadItem::TARGET_DISPOSITION_OVERWRITE, target_disposition_); |
| 654 EXPECT_EQ(DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, danger_type_); | 658 EXPECT_EQ(DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, danger_type_); |
| 655 EXPECT_EQ(path, intermediate_path_); | 659 EXPECT_EQ(path, intermediate_path_); |
| 656 } | 660 } |
| 657 | 661 |
| 658 // Does DownloadStopped remove Download from appropriate queues? | 662 // Does DownloadStopped remove Download from appropriate queues? |
| 659 // This test tests non-persisted downloads. | 663 TEST_F(DownloadManagerTest, OnDownloadStopped) { |
| 660 TEST_F(DownloadManagerTest, OnDownloadStopped_NonPersisted) { | |
| 661 // Put a mock we have a handle to on the download manager. | 664 // Put a mock we have a handle to on the download manager. |
| 662 MockDownloadItemImpl& item(AddItemToManager()); | 665 MockDownloadItemImpl& item(AddItemToManager()); |
| 663 | 666 |
| 664 EXPECT_CALL(item, IsPersisted()) | |
| 665 .WillRepeatedly(Return(false)); | |
| 666 EXPECT_CALL(item, GetState()) | 667 EXPECT_CALL(item, GetState()) |
| 667 .WillRepeatedly(Return(DownloadItem::CANCELLED)); | 668 .WillRepeatedly(Return(DownloadItem::CANCELLED)); |
| 668 EXPECT_CALL(item, GetDbHandle()) | |
| 669 .WillRepeatedly(Return(DownloadItem::kUninitializedHandle)); | |
| 670 | 669 |
| 671 DownloadStopped(&item); | 670 DownloadStopped(&item); |
| 672 } | 671 } |
| 673 | |
| 674 // Does DownloadStopped remove Download from appropriate queues? | |
| 675 // This test tests persisted downloads. | |
| 676 TEST_F(DownloadManagerTest, OnDownloadStopped_Persisted) { | |
| 677 // Put a mock we have a handle to on the download manager. | |
| 678 MockDownloadItemImpl& item(AddItemToManager()); | |
| 679 int64 db_handle = 0x7; | |
| 680 AddItemToHistory(item, db_handle); | |
| 681 | |
| 682 EXPECT_CALL(item, IsPersisted()) | |
| 683 .WillRepeatedly(Return(true)); | |
| 684 EXPECT_CALL(GetMockDownloadManagerDelegate(), | |
| 685 UpdateItemInPersistentStore(&item)); | |
| 686 EXPECT_CALL(item, GetState()) | |
| 687 .WillRepeatedly(Return(DownloadItem::CANCELLED)); | |
| 688 EXPECT_CALL(item, GetDbHandle()) | |
| 689 .WillRepeatedly(Return(db_handle)); | |
| 690 | |
| 691 DownloadStopped(&item); | |
| 692 } | |
| 693 | 672 |
| 694 } // namespace content | 673 } // namespace content |
| OLD | NEW |