| Index: content/browser/download/download_item_impl_unittest.cc
|
| diff --git a/content/browser/download/download_item_impl_unittest.cc b/content/browser/download/download_item_impl_unittest.cc
|
| index ff5d32602fa1a01c60f8aad2f851a92fd30f38b5..f8e712aedc67ab41456e27eb669db03b5870d1f0 100644
|
| --- a/content/browser/download/download_item_impl_unittest.cc
|
| +++ b/content/browser/download/download_item_impl_unittest.cc
|
| @@ -19,6 +19,7 @@
|
| #include "content/public/browser/download_url_parameters.h"
|
| #include "content/public/common/content_switches.h"
|
| #include "content/public/test/mock_download_item.h"
|
| +#include "content/public/test/test_browser_context.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -87,10 +88,9 @@ class MockDelegate : public DownloadItemImplDelegate {
|
| }
|
| };
|
|
|
| -class MockRequestHandle : public DownloadRequestHandleInterface {
|
| +class MockRequestHandle : public DownloadRequestHandle {
|
| public:
|
| - MOCK_CONST_METHOD0(GetWebContents, WebContents*());
|
| - MOCK_CONST_METHOD0(GetDownloadManager, DownloadManager*());
|
| + MOCK_METHOD1(Start, void(const RequestStartedCallback&));
|
| MOCK_CONST_METHOD0(PauseRequest, void());
|
| MOCK_CONST_METHOD0(ResumeRequest, void());
|
| MOCK_CONST_METHOD0(CancelRequest, void());
|
| @@ -231,9 +231,8 @@ class DownloadItemTest : public testing::Test {
|
| info_->url_chain.push_back(GURL());
|
| info_->etag = "SomethingToSatisfyResumption";
|
|
|
| - DownloadItemImpl* download =
|
| - new DownloadItemImpl(
|
| - &delegate_, next_id++, *(info_.get()), net::BoundNetLog());
|
| + DownloadItemImpl* download = new DownloadItemImpl(
|
| + &delegate_, next_id++, *(info_.get()), net::BoundNetLog());
|
| allocated_downloads_.insert(download);
|
| return download;
|
| }
|
| @@ -254,7 +253,7 @@ class DownloadItemTest : public testing::Test {
|
| EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _));
|
| }
|
|
|
| - scoped_ptr<DownloadRequestHandleInterface> request_handle(
|
| + scoped_ptr<DownloadRequestHandle> request_handle(
|
| new NiceMock<MockRequestHandle>);
|
| item->Start(download_file.Pass(), request_handle.Pass());
|
| loop_.RunUntilIdle();
|
| @@ -417,12 +416,16 @@ TEST_F(DownloadItemTest, ContinueAfterInterrupted) {
|
| CommandLine::ForCurrentProcess()->AppendSwitch(
|
| switches::kEnableDownloadResumption);
|
|
|
| + TestBrowserContext test_browser_context;
|
| DownloadItemImpl* item = CreateDownloadItem();
|
| MockObserver observer(item);
|
| - DownloadItemImplDelegate::DownloadTargetCallback callback;
|
| MockDownloadFile* download_file =
|
| DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
|
|
|
| + EXPECT_CALL(*mock_delegate(), GetBrowserContext())
|
| + .WillRepeatedly(Return(&test_browser_context));
|
| + EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _));
|
| +
|
| // Interrupt the download, using a continuable interrupt.
|
| EXPECT_CALL(*download_file, FullPath())
|
| .WillOnce(Return(base::FilePath()));
|
| @@ -430,9 +433,9 @@ TEST_F(DownloadItemTest, ContinueAfterInterrupted) {
|
| item->DestinationObserverAsWeakPtr()->DestinationError(
|
| DOWNLOAD_INTERRUPT_REASON_FILE_TRANSIENT_ERROR);
|
| ASSERT_TRUE(observer.CheckUpdated());
|
| - // Should attempt to auto-resume. Because we don't have a mock WebContents,
|
| - // ResumeInterruptedDownload() will abort early, with another interrupt,
|
| - // which will be ignored.
|
| +
|
| + // Should attempt to auto-resume. This is checked by verifying the expectation
|
| + // for the MockResumeInterruptedDownload() call for the mock_delegate() above.
|
| ASSERT_EQ(1, observer.GetInterruptCount());
|
| ASSERT_EQ(0, observer.GetResumeCount());
|
| RunAllPendingInMessageLoops();
|
| @@ -445,12 +448,17 @@ TEST_F(DownloadItemTest, RestartAfterInterrupted) {
|
| CommandLine::ForCurrentProcess()->AppendSwitch(
|
| switches::kEnableDownloadResumption);
|
|
|
| + TestBrowserContext test_browser_context;
|
| DownloadItemImpl* item = CreateDownloadItem();
|
| MockObserver observer(item);
|
| - DownloadItemImplDelegate::DownloadTargetCallback callback;
|
| MockDownloadFile* download_file =
|
| DoIntermediateRename(item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
|
|
|
| + EXPECT_CALL(*mock_delegate(), GetBrowserContext())
|
| + .WillRepeatedly(Return(&test_browser_context));
|
| + EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _))
|
| + .Times(0);
|
| +
|
| // Interrupt the download, using a restartable interrupt.
|
| EXPECT_CALL(*download_file, Cancel());
|
| item->DestinationObserverAsWeakPtr()->DestinationError(
|
| @@ -468,6 +476,7 @@ TEST_F(DownloadItemTest, LimitRestartsAfterInterrupted) {
|
| CommandLine::ForCurrentProcess()->AppendSwitch(
|
| switches::kEnableDownloadResumption);
|
|
|
| + TestBrowserContext test_browser_context;
|
| DownloadItemImpl* item = CreateDownloadItem();
|
| base::WeakPtr<DownloadDestinationObserver> as_observer(
|
| item->DestinationObserverAsWeakPtr());
|
| @@ -475,11 +484,15 @@ TEST_F(DownloadItemTest, LimitRestartsAfterInterrupted) {
|
| MockDownloadFile* mock_download_file(NULL);
|
| scoped_ptr<DownloadFile> download_file;
|
| MockRequestHandle* mock_request_handle(NULL);
|
| - scoped_ptr<DownloadRequestHandleInterface> request_handle;
|
| + scoped_ptr<DownloadRequestHandle> request_handle;
|
| DownloadItemImplDelegate::DownloadTargetCallback callback;
|
|
|
| EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _))
|
| .WillRepeatedly(SaveArg<1>(&callback));
|
| + EXPECT_CALL(*mock_delegate(), GetBrowserContext())
|
| + .WillRepeatedly(Return(&test_browser_context));
|
| + EXPECT_CALL(*mock_delegate(), MockResumeInterruptedDownload(_, _))
|
| + .Times(DownloadItemImpl::kMaxAutoResumeAttempts);
|
| for (int i = 0; i < (DownloadItemImpl::kMaxAutoResumeAttempts + 1); ++i) {
|
| DVLOG(20) << "Loop iteration " << i;
|
|
|
| @@ -491,14 +504,6 @@ TEST_F(DownloadItemTest, LimitRestartsAfterInterrupted) {
|
| ON_CALL(*mock_download_file, FullPath())
|
| .WillByDefault(Return(base::FilePath()));
|
|
|
| - // It's too complicated to set up a WebContents instance that would cause
|
| - // the MockDownloadItemDelegate's ResumeInterruptedDownload() function
|
| - // to be callled, so we simply verify that GetWebContents() is called.
|
| - if (i < (DownloadItemImpl::kMaxAutoResumeAttempts - 1)) {
|
| - EXPECT_CALL(*mock_request_handle, GetWebContents())
|
| - .WillRepeatedly(Return(static_cast<WebContents*>(NULL)));
|
| - }
|
| -
|
| // Copied key parts of DoIntermediateRename & AddDownloadFileToDownloadItem
|
| // to allow for holding onto the request handle.
|
| item->Start(download_file.Pass(), request_handle.Pass());
|
| @@ -612,7 +617,7 @@ TEST_F(DownloadItemTest, NotificationAfterTogglePause) {
|
| MockObserver observer(item);
|
| MockDownloadFile* mock_download_file(new MockDownloadFile);
|
| scoped_ptr<DownloadFile> download_file(mock_download_file);
|
| - scoped_ptr<DownloadRequestHandleInterface> request_handle(
|
| + scoped_ptr<DownloadRequestHandle> request_handle(
|
| new NiceMock<MockRequestHandle>);
|
|
|
| EXPECT_CALL(*mock_download_file, Initialize(_));
|
| @@ -661,7 +666,7 @@ TEST_F(DownloadItemTest, Start) {
|
| scoped_ptr<DownloadFile> download_file(mock_download_file);
|
| DownloadItemImpl* item = CreateDownloadItem();
|
| EXPECT_CALL(*mock_download_file, Initialize(_));
|
| - scoped_ptr<DownloadRequestHandleInterface> request_handle(
|
| + scoped_ptr<DownloadRequestHandle> request_handle(
|
| new NiceMock<MockRequestHandle>);
|
| EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _));
|
| item->Start(download_file.Pass(), request_handle.Pass());
|
|
|