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

Unified Diff: chrome/browser/chromeos/drive/download_handler_unittest.cc

Issue 1414753005: Evict drive cache with file download from website if necessary. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Free disk space immediately in OnDownloadCreated. Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698