| Index: content/browser/fileapi/blob_url_request_job_unittest.cc
|
| diff --git a/content/browser/fileapi/blob_url_request_job_unittest.cc b/content/browser/fileapi/blob_url_request_job_unittest.cc
|
| index 79824772be6a7851251d7217305ac6077947ffaf..42887d320047da8d1aa9e4a34e6e854664420b79 100644
|
| --- a/content/browser/fileapi/blob_url_request_job_unittest.cc
|
| +++ b/content/browser/fileapi/blob_url_request_job_unittest.cc
|
| @@ -29,7 +29,8 @@
|
| #include "storage/common/blob/blob_data.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| -using storage::BlobData;
|
| +using storage::BlobDataSnapshot;
|
| +using storage::BlobDataBuilder;
|
| using storage::BlobURLRequestJob;
|
|
|
| namespace content {
|
| @@ -64,9 +65,8 @@ class BlobURLRequestJobTest : public testing::Test {
|
| net::URLRequestJob* MaybeCreateJob(
|
| net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate) const override {
|
| - return new BlobURLRequestJob(request,
|
| - network_delegate,
|
| - test_->blob_data_.get(),
|
| + return new BlobURLRequestJob(request, network_delegate,
|
| + test_->blob_data_snapshot_.get(),
|
| test_->file_system_context_.get(),
|
| base::MessageLoopProxy::current().get());
|
| }
|
| @@ -76,8 +76,7 @@ class BlobURLRequestJobTest : public testing::Test {
|
| };
|
|
|
| BlobURLRequestJobTest()
|
| - : blob_data_(new BlobData()),
|
| - expected_status_code_(0) {}
|
| + : blob_data_(new BlobDataBuilder("uuid")), expected_status_code_(0) {}
|
|
|
| void SetUp() override {
|
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| @@ -219,16 +218,21 @@ class BlobURLRequestJobTest : public testing::Test {
|
| // Otherwise, this will fail a CHECK.
|
| int64 GetTotalBlobLength() const {
|
| int64 total = 0;
|
| - const std::vector<BlobData::Item>& items = blob_data_->items();
|
| - for (std::vector<BlobData::Item>::const_iterator it = items.begin();
|
| - it != items.end(); ++it) {
|
| - int64 length = base::checked_cast<int64>(it->length());
|
| + scoped_ptr<BlobDataSnapshot> data = blob_data_->Build();
|
| + const auto& items = data->items();
|
| + for (const auto& item : items) {
|
| + int64 length = base::checked_cast<int64>(item->length());
|
| CHECK(length <= kint64max - total);
|
| total += length;
|
| }
|
| return total;
|
| }
|
|
|
| + // Must be called before testing the request.
|
| + void CreateSnapshotFromBlobData() {
|
| + blob_data_snapshot_ = blob_data_->Build().Pass();
|
| + }
|
| +
|
| protected:
|
| base::ScopedTempDir temp_dir_;
|
| base::FilePath temp_file1_;
|
| @@ -243,7 +247,8 @@ class BlobURLRequestJobTest : public testing::Test {
|
|
|
| base::MessageLoopForIO message_loop_;
|
| scoped_refptr<storage::FileSystemContext> file_system_context_;
|
| - scoped_refptr<BlobData> blob_data_;
|
| + scoped_ptr<BlobDataBuilder> blob_data_;
|
| + scoped_ptr<BlobDataSnapshot> blob_data_snapshot_;
|
| net::URLRequestJobFactoryImpl url_request_job_factory_;
|
| net::URLRequestContext url_request_context_;
|
| MockURLRequestDelegate url_request_delegate_;
|
| @@ -255,11 +260,13 @@ class BlobURLRequestJobTest : public testing::Test {
|
|
|
| TEST_F(BlobURLRequestJobTest, TestGetSimpleDataRequest) {
|
| blob_data_->AppendData(kTestData1);
|
| + CreateSnapshotFromBlobData();
|
| TestSuccessNonrangeRequest(kTestData1, arraysize(kTestData1) - 1);
|
| }
|
|
|
| TEST_F(BlobURLRequestJobTest, TestGetSimpleFileRequest) {
|
| blob_data_->AppendFile(temp_file1_, 0, kuint64max, base::Time());
|
| + CreateSnapshotFromBlobData();
|
| TestSuccessNonrangeRequest(kTestFileData1, arraysize(kTestFileData1) - 1);
|
| }
|
|
|
| @@ -274,6 +281,7 @@ TEST_F(BlobURLRequestJobTest, TestGetLargeFileRequest) {
|
| base::WriteFile(large_temp_file, large_data.data(),
|
| large_data.size()));
|
| blob_data_->AppendFile(large_temp_file, 0, kuint64max, base::Time());
|
| + CreateSnapshotFromBlobData();
|
| TestSuccessNonrangeRequest(large_data, large_data.size());
|
| }
|
|
|
| @@ -281,6 +289,7 @@ TEST_F(BlobURLRequestJobTest, TestGetNonExistentFileRequest) {
|
| base::FilePath non_existent_file =
|
| temp_file1_.InsertBeforeExtension(FILE_PATH_LITERAL("-na"));
|
| blob_data_->AppendFile(non_existent_file, 0, kuint64max, base::Time());
|
| + CreateSnapshotFromBlobData();
|
| TestErrorRequest(404);
|
| }
|
|
|
| @@ -288,11 +297,13 @@ TEST_F(BlobURLRequestJobTest, TestGetChangedFileRequest) {
|
| base::Time old_time =
|
| temp_file_modification_time1_ - base::TimeDelta::FromSeconds(10);
|
| blob_data_->AppendFile(temp_file1_, 0, 3, old_time);
|
| + CreateSnapshotFromBlobData();
|
| TestErrorRequest(404);
|
| }
|
|
|
| TEST_F(BlobURLRequestJobTest, TestGetSlicedFileRequest) {
|
| blob_data_->AppendFile(temp_file1_, 2, 4, temp_file_modification_time1_);
|
| + CreateSnapshotFromBlobData();
|
| std::string result(kTestFileData1 + 2, 4);
|
| TestSuccessNonrangeRequest(result, 4);
|
| }
|
| @@ -301,6 +312,7 @@ TEST_F(BlobURLRequestJobTest, TestGetSimpleFileSystemFileRequest) {
|
| SetUpFileSystem();
|
| blob_data_->AppendFileSystemFile(temp_file_system_file1_, 0, kuint64max,
|
| base::Time());
|
| + CreateSnapshotFromBlobData();
|
| TestSuccessNonrangeRequest(kTestFileSystemFileData1,
|
| arraysize(kTestFileSystemFileData1) - 1);
|
| }
|
| @@ -317,6 +329,7 @@ TEST_F(BlobURLRequestJobTest, TestGetLargeFileSystemFileRequest) {
|
|
|
| blob_data_->AppendFileSystemFile(GetFileSystemURL(kFilename), 0, kuint64max,
|
| base::Time());
|
| + CreateSnapshotFromBlobData();
|
| TestSuccessNonrangeRequest(large_data, large_data.size());
|
| }
|
|
|
| @@ -325,6 +338,7 @@ TEST_F(BlobURLRequestJobTest, TestGetNonExistentFileSystemFileRequest) {
|
| GURL non_existent_file = GetFileSystemURL("non-existent.dat");
|
| blob_data_->AppendFileSystemFile(non_existent_file, 0, kuint64max,
|
| base::Time());
|
| + CreateSnapshotFromBlobData();
|
| TestErrorRequest(404);
|
| }
|
|
|
| @@ -334,6 +348,7 @@ TEST_F(BlobURLRequestJobTest, TestGetChangedFileSystemFileRequest) {
|
| temp_file_system_file_modification_time1_ -
|
| base::TimeDelta::FromSeconds(10);
|
| blob_data_->AppendFileSystemFile(temp_file_system_file1_, 0, 3, old_time);
|
| + CreateSnapshotFromBlobData();
|
| TestErrorRequest(404);
|
| }
|
|
|
| @@ -341,6 +356,7 @@ TEST_F(BlobURLRequestJobTest, TestGetSlicedFileSystemFileRequest) {
|
| SetUpFileSystem();
|
| blob_data_->AppendFileSystemFile(temp_file_system_file1_, 2, 4,
|
| temp_file_system_file_modification_time1_);
|
| + CreateSnapshotFromBlobData();
|
| std::string result(kTestFileSystemFileData1 + 2, 4);
|
| TestSuccessNonrangeRequest(result, 4);
|
| }
|
| @@ -349,6 +365,7 @@ TEST_F(BlobURLRequestJobTest, TestGetComplicatedDataAndFileRequest) {
|
| SetUpFileSystem();
|
| std::string result;
|
| BuildComplicatedData(&result);
|
| + CreateSnapshotFromBlobData();
|
| TestSuccessNonrangeRequest(result, GetTotalBlobLength());
|
| }
|
|
|
| @@ -356,6 +373,7 @@ TEST_F(BlobURLRequestJobTest, TestGetRangeRequest1) {
|
| SetUpFileSystem();
|
| std::string result;
|
| BuildComplicatedData(&result);
|
| + CreateSnapshotFromBlobData();
|
| net::HttpRequestHeaders extra_headers;
|
| extra_headers.SetHeader(net::HttpRequestHeaders::kRange,
|
| net::HttpByteRange::Bounded(5, 10).GetHeaderValue());
|
| @@ -377,6 +395,7 @@ TEST_F(BlobURLRequestJobTest, TestGetRangeRequest2) {
|
| SetUpFileSystem();
|
| std::string result;
|
| BuildComplicatedData(&result);
|
| + CreateSnapshotFromBlobData();
|
| net::HttpRequestHeaders extra_headers;
|
| extra_headers.SetHeader(net::HttpRequestHeaders::kRange,
|
| net::HttpByteRange::Suffix(10).GetHeaderValue());
|
| @@ -399,6 +418,7 @@ TEST_F(BlobURLRequestJobTest, TestExtraHeaders) {
|
| blob_data_->set_content_type(kTestContentType);
|
| blob_data_->set_content_disposition(kTestContentDisposition);
|
| blob_data_->AppendData(kTestData1);
|
| + CreateSnapshotFromBlobData();
|
| expected_status_code_ = 200;
|
| expected_response_ = kTestData1;
|
| TestRequest("GET", net::HttpRequestHeaders());
|
|
|