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()); |