Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(380)

Side by Side Diff: content/browser/download/download_item_impl_unittest.cc

Issue 10915180: Make DownloadHistory observe manager, items (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: @r166680 Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/stl_util.h" 6 #include "base/stl_util.h"
7 #include "base/threading/thread.h" 7 #include "base/threading/thread.h"
8 #include "content/browser/download/byte_stream.h" 8 #include "content/browser/download/byte_stream.h"
9 #include "content/browser/download/download_create_info.h" 9 #include "content/browser/download/download_create_info.h"
10 #include "content/browser/download/download_file_factory.h" 10 #include "content/browser/download/download_file_factory.h"
(...skipping 16 matching lines...) Expand all
27 using ::testing::SaveArg; 27 using ::testing::SaveArg;
28 using ::testing::StrictMock; 28 using ::testing::StrictMock;
29 29
30 namespace content { 30 namespace content {
31 DownloadId::Domain kValidDownloadItemIdDomain = "valid DownloadId::Domain"; 31 DownloadId::Domain kValidDownloadItemIdDomain = "valid DownloadId::Domain";
32 32
33 namespace { 33 namespace {
34 class MockDelegate : public DownloadItemImplDelegate { 34 class MockDelegate : public DownloadItemImplDelegate {
35 public: 35 public:
36 MOCK_METHOD2(DetermineDownloadTarget, void( 36 MOCK_METHOD2(DetermineDownloadTarget, void(
37 DownloadItemImpl* download, const DownloadTargetCallback& callback)); 37 DownloadItemImpl* download, const DownloadTargetCallback&));
38 MOCK_METHOD1(ShouldOpenDownload, bool(DownloadItemImpl* download)); 38 MOCK_METHOD1(ShouldOpenDownload, bool(DownloadItemImpl*));
39 MOCK_METHOD1(ShouldOpenFileBasedOnExtension, bool(const FilePath& path)); 39 MOCK_METHOD1(ShouldOpenFileBasedOnExtension, bool(const FilePath&));
40 MOCK_METHOD1(CheckForFileRemoval, void(DownloadItemImpl* download)); 40 MOCK_METHOD1(CheckForFileRemoval, void(DownloadItemImpl*));
41 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*()); 41 MOCK_CONST_METHOD0(GetBrowserContext, BrowserContext*());
42 MOCK_METHOD1(UpdatePersistence, void(DownloadItemImpl* download)); 42 MOCK_METHOD1(UpdatePersistence, void(DownloadItemImpl*));
43 MOCK_METHOD1(DownloadStopped, void(DownloadItemImpl* download)); 43 MOCK_METHOD1(DownloadStopped, void(DownloadItemImpl*));
44 MOCK_METHOD1(DownloadCompleted, void(DownloadItemImpl* download)); 44 MOCK_METHOD1(DownloadCompleted, void(DownloadItemImpl*));
45 MOCK_METHOD1(DownloadOpened, void(DownloadItemImpl* download)); 45 MOCK_METHOD1(DownloadOpened, void(DownloadItemImpl*));
46 MOCK_METHOD1(DownloadRemoved, void(DownloadItemImpl* download)); 46 MOCK_METHOD1(DownloadRemoved, void(DownloadItemImpl*));
47 MOCK_METHOD1(DownloadRenamedToIntermediateName, 47 MOCK_METHOD1(ShowDownloadInBrowser, void(DownloadItemImpl*));
48 void(DownloadItemImpl* download)); 48 MOCK_CONST_METHOD1(AssertStateConsistent, void(DownloadItemImpl*));
49 MOCK_METHOD1(DownloadRenamedToFinalName, void(DownloadItemImpl* download));
50 MOCK_CONST_METHOD1(AssertStateConsistent, void(DownloadItemImpl* download));
51 virtual DownloadFileManager* GetDownloadFileManager() OVERRIDE {
52 return file_manager_;
53 }
54 private:
55 DownloadFileManager* file_manager_;
56 }; 49 };
57 50
58 class MockRequestHandle : public DownloadRequestHandleInterface { 51 class MockRequestHandle : public DownloadRequestHandleInterface {
59 public: 52 public:
60 MOCK_CONST_METHOD0(GetWebContents, WebContents*()); 53 MOCK_CONST_METHOD0(GetWebContents, WebContents*());
61 MOCK_CONST_METHOD0(GetDownloadManager, DownloadManager*()); 54 MOCK_CONST_METHOD0(GetDownloadManager, DownloadManager*());
62 MOCK_CONST_METHOD0(PauseRequest, void()); 55 MOCK_CONST_METHOD0(PauseRequest, void());
63 MOCK_CONST_METHOD0(ResumeRequest, void()); 56 MOCK_CONST_METHOD0(ResumeRequest, void());
64 MOCK_CONST_METHOD0(CancelRequest, void()); 57 MOCK_CONST_METHOD0(CancelRequest, void());
65 MOCK_CONST_METHOD0(DebugString, std::string()); 58 MOCK_CONST_METHOD0(DebugString, std::string());
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 MockDownloadFile* mock_download_file(new MockDownloadFile); 445 MockDownloadFile* mock_download_file(new MockDownloadFile);
453 scoped_ptr<DownloadFile> download_file(mock_download_file); 446 scoped_ptr<DownloadFile> download_file(mock_download_file);
454 DownloadItemImpl* item = CreateDownloadItem(DownloadItem::IN_PROGRESS); 447 DownloadItemImpl* item = CreateDownloadItem(DownloadItem::IN_PROGRESS);
455 EXPECT_CALL(*mock_download_file, Initialize(_)); 448 EXPECT_CALL(*mock_download_file, Initialize(_));
456 item->Start(download_file.Pass()); 449 item->Start(download_file.Pass());
457 450
458 CleanupItem(item, mock_download_file); 451 CleanupItem(item, mock_download_file);
459 } 452 }
460 453
461 // Test that the delegate is invoked after the download file is renamed. 454 // Test that the delegate is invoked after the download file is renamed.
462 // Delegate::DownloadRenamedToIntermediateName() should be invoked when the
463 // download is renamed to the intermediate name.
464 // Delegate::DownloadRenamedToFinalName() should be invoked after the final
465 // rename.
466 TEST_F(DownloadItemTest, CallbackAfterRename) { 455 TEST_F(DownloadItemTest, CallbackAfterRename) {
467 DownloadItemImpl* item = CreateDownloadItem(DownloadItem::IN_PROGRESS); 456 DownloadItemImpl* item = CreateDownloadItem(DownloadItem::IN_PROGRESS);
468 DownloadItemImplDelegate::DownloadTargetCallback callback; 457 DownloadItemImplDelegate::DownloadTargetCallback callback;
469 MockDownloadFile* download_file = 458 MockDownloadFile* download_file =
470 AddDownloadFileToDownloadItem(item, &callback); 459 AddDownloadFileToDownloadItem(item, &callback);
471 FilePath final_path(FilePath(kDummyPath).AppendASCII("foo.bar")); 460 FilePath final_path(FilePath(kDummyPath).AppendASCII("foo.bar"));
472 FilePath intermediate_path(final_path.InsertBeforeExtensionASCII("x")); 461 FilePath intermediate_path(final_path.InsertBeforeExtensionASCII("x"));
473 FilePath new_intermediate_path(final_path.InsertBeforeExtensionASCII("y")); 462 FilePath new_intermediate_path(final_path.InsertBeforeExtensionASCII("y"));
474 EXPECT_CALL(*download_file, Rename(intermediate_path, false, _)) 463 EXPECT_CALL(*download_file, Rename(intermediate_path, false, _))
475 .WillOnce(ScheduleRenameCallback(new_intermediate_path)); 464 .WillOnce(ScheduleRenameCallback(new_intermediate_path));
465 EXPECT_CALL(*mock_delegate(), ShowDownloadInBrowser(item))
466 .Times(1);
476 467
477 // DownloadItemImpl should invoke this callback on the delegate once the
478 // download is renamed to the intermediate name. Also check that GetFullPath()
479 // returns the intermediate path at the time of the call.
480 EXPECT_CALL(*mock_delegate(),
481 DownloadRenamedToIntermediateName(
482 AllOf(item,
483 Property(&DownloadItem::GetFullPath,
484 new_intermediate_path))));
485 callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE, 468 callback.Run(final_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
486 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path); 469 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
487 RunAllPendingInMessageLoops(); 470 RunAllPendingInMessageLoops();
488 // All the callbacks should have happened by now. 471 // All the callbacks should have happened by now.
489 ::testing::Mock::VerifyAndClearExpectations(download_file); 472 ::testing::Mock::VerifyAndClearExpectations(download_file);
490 ::testing::Mock::VerifyAndClearExpectations(mock_delegate()); 473 ::testing::Mock::VerifyAndClearExpectations(mock_delegate());
491 474
492 item->OnAllDataSaved(""); 475 item->OnAllDataSaved("");
493 EXPECT_CALL(*download_file, Rename(final_path, true, _)) 476 EXPECT_CALL(*download_file, Rename(final_path, true, _))
494 .WillOnce(ScheduleRenameCallback(final_path)); 477 .WillOnce(ScheduleRenameCallback(final_path));
495 // DownloadItemImpl should invoke this callback on the delegate after the
496 // final rename has completed. Also check that GetFullPath() and
497 // GetTargetFilePath() return the final path at the time of the call.
498 EXPECT_CALL(*mock_delegate(),
499 DownloadRenamedToFinalName(
500 AllOf(item,
501 Property(&DownloadItem::GetFullPath, final_path),
502 Property(&DownloadItem::GetTargetFilePath,
503 final_path))));
504 EXPECT_CALL(*mock_delegate(), DownloadCompleted(item)); 478 EXPECT_CALL(*mock_delegate(), DownloadCompleted(item));
505 EXPECT_CALL(*mock_delegate(), ShouldOpenDownload(item)) 479 EXPECT_CALL(*mock_delegate(), ShouldOpenDownload(item))
506 .WillOnce(Return(true)); 480 .WillOnce(Return(true));
507 EXPECT_CALL(*download_file, Detach(_)) 481 EXPECT_CALL(*download_file, Detach(_))
508 .WillOnce(ScheduleDetachCallback()); 482 .WillOnce(ScheduleDetachCallback());
509 item->SetIsPersisted();
510 item->MaybeCompleteDownload(); 483 item->MaybeCompleteDownload();
511 RunAllPendingInMessageLoops(); 484 RunAllPendingInMessageLoops();
512 ::testing::Mock::VerifyAndClearExpectations(download_file); 485 ::testing::Mock::VerifyAndClearExpectations(download_file);
513 ::testing::Mock::VerifyAndClearExpectations(mock_delegate()); 486 ::testing::Mock::VerifyAndClearExpectations(mock_delegate());
514 } 487 }
515 488
516 TEST_F(DownloadItemTest, Interrupted) { 489 TEST_F(DownloadItemTest, Interrupted) {
517 DownloadItemImpl* item = CreateDownloadItem(DownloadItem::IN_PROGRESS); 490 DownloadItemImpl* item = CreateDownloadItem(DownloadItem::IN_PROGRESS);
518 MockDownloadFile* download_file = AddDownloadFileToDownloadItem(item, NULL); 491 MockDownloadFile* download_file = AddDownloadFileToDownloadItem(item, NULL);
519 492
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 EXPECT_EQ("livebeef", item->GetHash()); 603 EXPECT_EQ("livebeef", item->GetHash());
631 EXPECT_EQ("", item->GetHashState()); 604 EXPECT_EQ("", item->GetHashState());
632 EXPECT_TRUE(item->AllDataSaved()); 605 EXPECT_TRUE(item->AllDataSaved());
633 } 606 }
634 607
635 TEST(MockDownloadItem, Compiles) { 608 TEST(MockDownloadItem, Compiles) {
636 MockDownloadItem mock_item; 609 MockDownloadItem mock_item;
637 } 610 }
638 611
639 } // namespace content 612 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698