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

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

Issue 148133007: [Downloads] Always call DM::StartDownload() for explicit downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typos Created 4 years, 10 months 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 "content/browser/download/download_manager_impl.h" 5 #include "content/browser/download/download_manager_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 MOCK_METHOD0(OpenDownload, void()); 110 MOCK_METHOD0(OpenDownload, void());
111 MOCK_METHOD0(ShowDownloadInShell, void()); 111 MOCK_METHOD0(ShowDownloadInShell, void());
112 MOCK_METHOD0(ValidateDangerousDownload, void()); 112 MOCK_METHOD0(ValidateDangerousDownload, void());
113 MOCK_METHOD1(StealDangerousDownload, void(const AcquireFileCallback&)); 113 MOCK_METHOD1(StealDangerousDownload, void(const AcquireFileCallback&));
114 MOCK_METHOD3(UpdateProgress, void(int64_t, int64_t, const std::string&)); 114 MOCK_METHOD3(UpdateProgress, void(int64_t, int64_t, const std::string&));
115 MOCK_METHOD1(Cancel, void(bool)); 115 MOCK_METHOD1(Cancel, void(bool));
116 MOCK_METHOD0(MarkAsComplete, void()); 116 MOCK_METHOD0(MarkAsComplete, void());
117 MOCK_METHOD1(OnAllDataSaved, void(const std::string&)); 117 MOCK_METHOD1(OnAllDataSaved, void(const std::string&));
118 MOCK_METHOD0(OnDownloadedFileRemoved, void()); 118 MOCK_METHOD0(OnDownloadedFileRemoved, void());
119 void Start(scoped_ptr<DownloadFile> download_file, 119 void Start(scoped_ptr<DownloadFile> download_file,
120 scoped_ptr<DownloadRequestHandleInterface> req_handle) override { 120 scoped_ptr<DownloadRequestHandleInterface> req_handle,
121 const DownloadCreateInfo& create_info) override {
121 MockStart(download_file.get(), req_handle.get()); 122 MockStart(download_file.get(), req_handle.get());
122 } 123 }
123 124
124 MOCK_METHOD2(MockStart, void(DownloadFile*, DownloadRequestHandleInterface*)); 125 MOCK_METHOD2(MockStart, void(DownloadFile*, DownloadRequestHandleInterface*));
125 126
126 MOCK_METHOD0(Remove, void()); 127 MOCK_METHOD0(Remove, void());
127 MOCK_CONST_METHOD1(TimeRemaining, bool(base::TimeDelta*)); 128 MOCK_CONST_METHOD1(TimeRemaining, bool(base::TimeDelta*));
128 MOCK_CONST_METHOD0(CurrentSpeed, int64_t()); 129 MOCK_CONST_METHOD0(CurrentSpeed, int64_t());
129 MOCK_CONST_METHOD0(PercentComplete, int()); 130 MOCK_CONST_METHOD0(PercentComplete, int());
130 MOCK_CONST_METHOD0(AllDataSaved, bool()); 131 MOCK_CONST_METHOD0(AllDataSaved, bool());
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 } 372 }
372 373
373 class MockDownloadFileFactory 374 class MockDownloadFileFactory
374 : public DownloadFileFactory, 375 : public DownloadFileFactory,
375 public base::SupportsWeakPtr<MockDownloadFileFactory> { 376 public base::SupportsWeakPtr<MockDownloadFileFactory> {
376 public: 377 public:
377 MockDownloadFileFactory() {} 378 MockDownloadFileFactory() {}
378 virtual ~MockDownloadFileFactory() {} 379 virtual ~MockDownloadFileFactory() {}
379 380
380 // Overridden method from DownloadFileFactory 381 // Overridden method from DownloadFileFactory
381 MOCK_METHOD8(MockCreateFile, MockDownloadFile*( 382 MOCK_METHOD3(MockCreateFile,
382 const DownloadSaveInfo&, 383 MockDownloadFile*(const DownloadSaveInfo&,
383 const base::FilePath&, 384 bool,
384 const GURL&, const GURL&, bool, 385 ByteStreamReader*));
385 ByteStreamReader*,
386 const net::BoundNetLog&,
387 base::WeakPtr<DownloadDestinationObserver>));
388 386
389 virtual DownloadFile* CreateFile( 387 virtual DownloadFile* CreateFile(
390 scoped_ptr<DownloadSaveInfo> save_info, 388 const DownloadSaveInfo& save_info,
391 const base::FilePath& default_download_directory, 389 const base::FilePath& default_download_directory,
392 const GURL& url, 390 const GURL& url,
393 const GURL& referrer_url, 391 const GURL& referrer_url,
394 bool calculate_hash, 392 bool calculate_hash,
395 scoped_ptr<ByteStreamReader> stream, 393 base::File file_stream,
394 scoped_ptr<ByteStreamReader> byte_stream,
396 const net::BoundNetLog& bound_net_log, 395 const net::BoundNetLog& bound_net_log,
397 base::WeakPtr<DownloadDestinationObserver> observer) { 396 base::WeakPtr<DownloadDestinationObserver> observer) {
398 return MockCreateFile(*save_info.get(), default_download_directory, url, 397 return MockCreateFile(save_info, calculate_hash, byte_stream.get());
399 referrer_url, calculate_hash,
400 stream.get(), bound_net_log, observer);
401 } 398 }
402 }; 399 };
403 400
404 class MockBrowserContext : public BrowserContext { 401 class MockBrowserContext : public BrowserContext {
405 public: 402 public:
406 MockBrowserContext() {} 403 MockBrowserContext() {}
407 ~MockBrowserContext() {} 404 ~MockBrowserContext() {}
408 405
409 MOCK_CONST_METHOD0(GetPath, base::FilePath()); 406 MOCK_CONST_METHOD0(GetPath, base::FilePath());
410 MOCK_METHOD1(CreateZoomLevelDelegateMock, 407 MOCK_METHOD1(CreateZoomLevelDelegateMock,
(...skipping 27 matching lines...) Expand all
438 class MockDownloadManagerObserver : public DownloadManager::Observer { 435 class MockDownloadManagerObserver : public DownloadManager::Observer {
439 public: 436 public:
440 MockDownloadManagerObserver() {} 437 MockDownloadManagerObserver() {}
441 ~MockDownloadManagerObserver() {} 438 ~MockDownloadManagerObserver() {}
442 MOCK_METHOD2(OnDownloadCreated, void( 439 MOCK_METHOD2(OnDownloadCreated, void(
443 DownloadManager*, DownloadItem*)); 440 DownloadManager*, DownloadItem*));
444 MOCK_METHOD1(ManagerGoingDown, void(DownloadManager*)); 441 MOCK_METHOD1(ManagerGoingDown, void(DownloadManager*));
445 MOCK_METHOD2(SelectFileDialogDisplayed, void(DownloadManager*, int32_t)); 442 MOCK_METHOD2(SelectFileDialogDisplayed, void(DownloadManager*, int32_t));
446 }; 443 };
447 444
445 class MockByteStreamReader : public ByteStreamReader {
446 public:
447 virtual ~MockByteStreamReader() {}
448 MOCK_METHOD2(Read, StreamState(scoped_refptr<net::IOBuffer>*, size_t*));
449 MOCK_CONST_METHOD0(GetStatus, int());
450 MOCK_METHOD1(RegisterCallback, void(const base::Closure&));
451 };
452
448 } // namespace 453 } // namespace
449 454
450 class DownloadManagerTest : public testing::Test { 455 class DownloadManagerTest : public testing::Test {
451 public: 456 public:
452 static const char* kTestData; 457 static const char* kTestData;
453 static const size_t kTestDataLen; 458 static const size_t kTestDataLen;
454 459
455 DownloadManagerTest() 460 DownloadManagerTest()
456 : callback_called_(false), 461 : callback_called_(false),
457 ui_thread_(BrowserThread::UI, &message_loop_), 462 ui_thread_(BrowserThread::UI, &message_loop_),
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 uint32_t id = next_download_id_; 527 uint32_t id = next_download_id_;
523 ++next_download_id_; 528 ++next_download_id_;
524 info.request_handle.reset(new DownloadRequestHandle); 529 info.request_handle.reset(new DownloadRequestHandle);
525 download_manager_->CreateActiveItem(id, info); 530 download_manager_->CreateActiveItem(id, info);
526 DCHECK(mock_download_item_factory_->GetItem(id)); 531 DCHECK(mock_download_item_factory_->GetItem(id));
527 MockDownloadItemImpl& item(*mock_download_item_factory_->GetItem(id)); 532 MockDownloadItemImpl& item(*mock_download_item_factory_->GetItem(id));
528 // Satisfy expectation. If the item is created in StartDownload(), 533 // Satisfy expectation. If the item is created in StartDownload(),
529 // we call Start on it immediately, so we need to set that expectation 534 // we call Start on it immediately, so we need to set that expectation
530 // in the factory. 535 // in the factory.
531 scoped_ptr<DownloadRequestHandleInterface> req_handle; 536 scoped_ptr<DownloadRequestHandleInterface> req_handle;
532 item.Start(scoped_ptr<DownloadFile>(), std::move(req_handle)); 537 item.Start(scoped_ptr<DownloadFile>(), std::move(req_handle), info);
533 DCHECK(id < download_urls_.size()); 538 DCHECK(id < download_urls_.size());
534 EXPECT_CALL(item, GetURL()).WillRepeatedly(ReturnRef(download_urls_[id])); 539 EXPECT_CALL(item, GetURL()).WillRepeatedly(ReturnRef(download_urls_[id]));
535 540
536 return item; 541 return item;
537 } 542 }
538 543
539 MockDownloadItemImpl& GetMockDownloadItem(int id) { 544 MockDownloadItemImpl& GetMockDownloadItem(int id) {
540 MockDownloadItemImpl* itemp = mock_download_item_factory_->GetItem(id); 545 MockDownloadItemImpl* itemp = mock_download_item_factory_->GetItem(id);
541 546
542 DCHECK(itemp); 547 DCHECK(itemp);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 scoped_ptr<MockBrowserContext> mock_browser_context_; 603 scoped_ptr<MockBrowserContext> mock_browser_context_;
599 scoped_ptr<MockDownloadManagerObserver> observer_; 604 scoped_ptr<MockDownloadManagerObserver> observer_;
600 uint32_t next_download_id_; 605 uint32_t next_download_id_;
601 606
602 DISALLOW_COPY_AND_ASSIGN(DownloadManagerTest); 607 DISALLOW_COPY_AND_ASSIGN(DownloadManagerTest);
603 }; 608 };
604 609
605 // Confirm the appropriate invocations occur when you start a download. 610 // Confirm the appropriate invocations occur when you start a download.
606 TEST_F(DownloadManagerTest, StartDownload) { 611 TEST_F(DownloadManagerTest, StartDownload) {
607 scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo); 612 scoped_ptr<DownloadCreateInfo> info(new DownloadCreateInfo);
608 scoped_ptr<ByteStreamReader> stream; 613 scoped_ptr<ByteStreamReader> stream(new MockByteStreamReader);
609 uint32_t local_id(5); // Random value 614 uint32_t local_id(5); // Random value
610 base::FilePath download_path(FILE_PATH_LITERAL("download/path")); 615 base::FilePath download_path(FILE_PATH_LITERAL("download/path"));
611 616
612 EXPECT_FALSE(download_manager_->GetDownload(local_id)); 617 EXPECT_FALSE(download_manager_->GetDownload(local_id));
613 618
614 EXPECT_CALL(GetMockObserver(), OnDownloadCreated(download_manager_.get(), _)) 619 EXPECT_CALL(GetMockObserver(), OnDownloadCreated(download_manager_.get(), _))
615 .WillOnce(Return()); 620 .WillOnce(Return());
616 EXPECT_CALL(GetMockDownloadManagerDelegate(), GetNextId(_)) 621 EXPECT_CALL(GetMockDownloadManagerDelegate(), GetNextId(_))
617 .WillOnce(RunCallback<0>(local_id)); 622 .WillOnce(RunCallback<0>(local_id));
618 623
619 // Doing nothing will set the default download directory to null. 624 // Doing nothing will set the default download directory to null.
620 EXPECT_CALL(GetMockDownloadManagerDelegate(), GetSaveDir(_, _, _, _)); 625 EXPECT_CALL(GetMockDownloadManagerDelegate(), GetSaveDir(_, _, _, _));
621 EXPECT_CALL(GetMockDownloadManagerDelegate(), GenerateFileHash()) 626 EXPECT_CALL(GetMockDownloadManagerDelegate(), GenerateFileHash())
622 .WillOnce(Return(true)); 627 .WillOnce(Return(true));
623 EXPECT_CALL(GetMockDownloadManagerDelegate(), 628 EXPECT_CALL(GetMockDownloadManagerDelegate(),
624 ApplicationClientIdForFileScanning()) 629 ApplicationClientIdForFileScanning())
625 .WillRepeatedly(Return("client-id")); 630 .WillRepeatedly(Return("client-id"));
626 MockDownloadFile* mock_file = new MockDownloadFile; 631 MockDownloadFile* mock_file = new MockDownloadFile;
627 EXPECT_CALL(*mock_file, SetClientGuid("client-id")); 632 EXPECT_CALL(*mock_file, SetClientGuid("client-id"));
628 EXPECT_CALL(*mock_download_file_factory_.get(), 633 EXPECT_CALL(*mock_download_file_factory_.get(),
629 MockCreateFile(Ref(*info->save_info.get()), _, _, _, true, 634 MockCreateFile(Ref(*info->save_info.get()), true, stream.get()))
630 stream.get(), _, _))
631 .WillOnce(Return(mock_file)); 635 .WillOnce(Return(mock_file));
632 636
633 download_manager_->StartDownload(std::move(info), std::move(stream), 637 download_manager_->StartDownload(std::move(info), std::move(stream),
634 DownloadUrlParameters::OnStartedCallback()); 638 DownloadUrlParameters::OnStartedCallback());
635 EXPECT_TRUE(download_manager_->GetDownload(local_id)); 639 EXPECT_TRUE(download_manager_->GetDownload(local_id));
636 } 640 }
637 641
638 // Confirm that calling DetermineDownloadTarget behaves properly if the delegate 642 // Confirm that calling DetermineDownloadTarget behaves properly if the delegate
639 // blocks starting. 643 // blocks starting.
640 TEST_F(DownloadManagerTest, DetermineDownloadTarget_True) { 644 TEST_F(DownloadManagerTest, DetermineDownloadTarget_True) {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 EXPECT_CALL(GetMockDownloadItem(0), Remove()); 724 EXPECT_CALL(GetMockDownloadItem(0), Remove());
721 EXPECT_CALL(GetMockDownloadItem(1), Remove()).Times(0); 725 EXPECT_CALL(GetMockDownloadItem(1), Remove()).Times(0);
722 726
723 url::Origin origin_to_clear(download_urls_[0]); 727 url::Origin origin_to_clear(download_urls_[0]);
724 int remove_count = download_manager_->RemoveDownloadsByOriginAndTime( 728 int remove_count = download_manager_->RemoveDownloadsByOriginAndTime(
725 origin_to_clear, base::Time(), base::Time::Max()); 729 origin_to_clear, base::Time(), base::Time::Max());
726 EXPECT_EQ(remove_count, 1); 730 EXPECT_EQ(remove_count, 1);
727 } 731 }
728 732
729 } // namespace content 733 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/download/download_manager_impl.cc ('k') | content/browser/download/download_request_core.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698