| Index: chrome/browser/chromeos/drive/download_handler_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/download_handler_unittest.cc b/chrome/browser/chromeos/drive/download_handler_unittest.cc
|
| index 52bde9123f12669dcd1911528fab184285e241ac..ab8e3ebea2108d1d8eabb00d5ab40cfe2fa312c7 100644
|
| --- a/chrome/browser/chromeos/drive/download_handler_unittest.cc
|
| +++ b/chrome/browser/chromeos/drive/download_handler_unittest.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/chromeos/drive/download_handler.h"
|
|
|
| #include "base/files/scoped_temp_dir.h"
|
| +#include "base/run_loop.h"
|
| #include "chrome/browser/chromeos/drive/file_system_util.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "components/drive/dummy_file_system.h"
|
| @@ -42,6 +43,15 @@ class DownloadHandlerTestFileSystem : public DummyFileSystem {
|
| callback.Run(error_);
|
| }
|
|
|
| + void FreeDiskSpaceIfNeededFor(
|
| + int64 num_bytes,
|
| + const FreeDiskSpaceCallback& callback) override {
|
| + free_disk_space_if_needed_for_num_bytes_.push_back(num_bytes);
|
| + callback.Run(true);
|
| + }
|
| +
|
| + std::vector<int64> free_disk_space_if_needed_for_num_bytes_;
|
| +
|
| private:
|
| FileError error_;
|
| };
|
| @@ -62,6 +72,8 @@ class DownloadHandlerTest : public testing::Test {
|
|
|
| download_handler_.reset(new DownloadHandler(&test_file_system_));
|
| download_handler_->Initialize(download_manager_.get(), temp_dir_.path());
|
| + download_handler_->SetFreeDiskSpaceDelayForTesting(
|
| + base::TimeDelta::FromMilliseconds(0));
|
| }
|
|
|
| protected:
|
| @@ -196,4 +208,77 @@ TEST_F(DownloadHandlerTest, CheckForFileExistence) {
|
| EXPECT_FALSE(file_exists);
|
| }
|
|
|
| +TEST_F(DownloadHandlerTest, FreeDiskSpaceForUnknownSizeDownload) {
|
| + const int kUnknownSizeDownloadRequestSize = 512 * (1 << 20); // 512MB
|
| + ASSERT_EQ(0u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| + EXPECT_CALL(download_item_, IsDone()).WillRepeatedly(testing::Return(false));
|
| + EXPECT_CALL(download_item_, GetTotalBytes())
|
| + .WillRepeatedly(testing::Return(0));
|
| +
|
| + download_handler_->FreeDiskSpaceIfNeeded(&download_item_,
|
| + true /* immediate */);
|
| + ASSERT_EQ(1u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| + ASSERT_EQ(kUnknownSizeDownloadRequestSize,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_[0]);
|
| +
|
| + download_handler_->FreeDiskSpaceIfNeeded(&download_item_,
|
| + false /* not immediate */);
|
| +
|
| + // FreeDiskSpaceIfNeededFor should be rate limited.
|
| + ASSERT_EQ(1u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| +
|
| + download_handler_->FreeDiskSpaceIfNeeded(&download_item_,
|
| + false /* not immediate */);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + ASSERT_EQ(2u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| + ASSERT_EQ(kUnknownSizeDownloadRequestSize,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_[1]);
|
| +}
|
| +
|
| +TEST_F(DownloadHandlerTest, FreeDiskSpaceForKnownSizeDownload) {
|
| + const int kKnownDownloadSize = 5 * (1 << 20); // 5MB
|
| + ASSERT_EQ(0u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| + EXPECT_CALL(download_item_, IsDone()).WillRepeatedly(testing::Return(false));
|
| + EXPECT_CALL(download_item_, GetTotalBytes())
|
| + .WillRepeatedly(testing::Return(kKnownDownloadSize));
|
| + EXPECT_CALL(download_item_, GetReceivedBytes())
|
| + .WillOnce(testing::Return(0))
|
| + .WillOnce(testing::Return(100));
|
| +
|
| + download_handler_->FreeDiskSpaceIfNeeded(&download_item_,
|
| + true /* immediate */);
|
| +
|
| + ASSERT_EQ(1u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| + ASSERT_EQ(kKnownDownloadSize,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_[0]);
|
| +
|
| + download_handler_->FreeDiskSpaceIfNeeded(&download_item_,
|
| + false /* not immediate */);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + ASSERT_EQ(2u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| + ASSERT_EQ(kKnownDownloadSize - 100,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_[1]);
|
| +}
|
| +
|
| +TEST_F(DownloadHandlerTest, FreeDiskSpaceForAlreadyCompletedDownload) {
|
| + ASSERT_EQ(0u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| + EXPECT_CALL(download_item_, IsDone()).WillOnce(testing::Return(true));
|
| +
|
| + download_handler_->FreeDiskSpaceIfNeeded(&download_item_,
|
| + true /* immediate */);
|
| +
|
| + ASSERT_EQ(0u,
|
| + test_file_system_.free_disk_space_if_needed_for_num_bytes_.size());
|
| +}
|
| +
|
| } // namespace drive
|
|
|