| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| 11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/numerics/safe_conversions.h" | 12 #include "base/numerics/safe_conversions.h" |
| 13 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
| 14 #include "base/time/time.h" | 14 #include "base/time/time.h" |
| 15 #include "content/browser/fileapi/mock_url_request_delegate.h" | 15 #include "content/browser/fileapi/mock_url_request_delegate.h" |
| 16 #include "content/public/test/async_file_test_helper.h" | 16 #include "content/public/test/async_file_test_helper.h" |
| 17 #include "content/public/test/test_file_system_context.h" | 17 #include "content/public/test/test_file_system_context.h" |
| 18 #include "net/base/request_priority.h" | 18 #include "net/base/request_priority.h" |
| 19 #include "net/http/http_byte_range.h" | 19 #include "net/http/http_byte_range.h" |
| 20 #include "net/http/http_request_headers.h" | 20 #include "net/http/http_request_headers.h" |
| 21 #include "net/http/http_response_headers.h" | 21 #include "net/http/http_response_headers.h" |
| 22 #include "net/url_request/url_request.h" | 22 #include "net/url_request/url_request.h" |
| 23 #include "net/url_request/url_request_context.h" | 23 #include "net/url_request/url_request_context.h" |
| 24 #include "net/url_request/url_request_job_factory_impl.h" | 24 #include "net/url_request/url_request_job_factory_impl.h" |
| 25 #include "testing/gtest/include/gtest/gtest.h" | 25 #include "testing/gtest/include/gtest/gtest.h" |
| 26 #include "webkit/browser/blob/blob_url_request_job.h" | 26 #include "storage/browser/blob/blob_url_request_job.h" |
| 27 #include "webkit/browser/fileapi/file_system_context.h" | 27 #include "storage/browser/fileapi/file_system_context.h" |
| 28 #include "webkit/browser/fileapi/file_system_operation_context.h" | 28 #include "storage/browser/fileapi/file_system_operation_context.h" |
| 29 #include "webkit/browser/fileapi/file_system_url.h" | 29 #include "storage/browser/fileapi/file_system_url.h" |
| 30 #include "webkit/common/blob/blob_data.h" | 30 #include "storage/common/blob/blob_data.h" |
| 31 | 31 |
| 32 using webkit_blob::BlobData; | 32 using storage::BlobData; |
| 33 using webkit_blob::BlobURLRequestJob; | 33 using storage::BlobURLRequestJob; |
| 34 | 34 |
| 35 namespace content { | 35 namespace content { |
| 36 | 36 |
| 37 namespace { | 37 namespace { |
| 38 | 38 |
| 39 const int kBufferSize = 1024; | 39 const int kBufferSize = 1024; |
| 40 const char kTestData1[] = "Hello"; | 40 const char kTestData1[] = "Hello"; |
| 41 const char kTestData2[] = "Here it is data."; | 41 const char kTestData2[] = "Here it is data."; |
| 42 const char kTestFileData1[] = "0123456789"; | 42 const char kTestFileData1[] = "0123456789"; |
| 43 const char kTestFileData2[] = "This is sample file."; | 43 const char kTestFileData2[] = "This is sample file."; |
| 44 const char kTestFileSystemFileData1[] = "abcdefghijklmnop"; | 44 const char kTestFileSystemFileData1[] = "abcdefghijklmnop"; |
| 45 const char kTestFileSystemFileData2[] = "File system file test data."; | 45 const char kTestFileSystemFileData2[] = "File system file test data."; |
| 46 const char kTestContentType[] = "foo/bar"; | 46 const char kTestContentType[] = "foo/bar"; |
| 47 const char kTestContentDisposition[] = "attachment; filename=foo.txt"; | 47 const char kTestContentDisposition[] = "attachment; filename=foo.txt"; |
| 48 | 48 |
| 49 const char kFileSystemURLOrigin[] = "http://remote"; | 49 const char kFileSystemURLOrigin[] = "http://remote"; |
| 50 const fileapi::FileSystemType kFileSystemType = | 50 const storage::FileSystemType kFileSystemType = |
| 51 fileapi::kFileSystemTypeTemporary; | 51 storage::kFileSystemTypeTemporary; |
| 52 | 52 |
| 53 } // namespace | 53 } // namespace |
| 54 | 54 |
| 55 class BlobURLRequestJobTest : public testing::Test { | 55 class BlobURLRequestJobTest : public testing::Test { |
| 56 public: | 56 public: |
| 57 // A simple ProtocolHandler implementation to create BlobURLRequestJob. | 57 // A simple ProtocolHandler implementation to create BlobURLRequestJob. |
| 58 class MockProtocolHandler : | 58 class MockProtocolHandler : |
| 59 public net::URLRequestJobFactory::ProtocolHandler { | 59 public net::URLRequestJobFactory::ProtocolHandler { |
| 60 public: | 60 public: |
| 61 MockProtocolHandler(BlobURLRequestJobTest* test) : test_(test) {} | 61 MockProtocolHandler(BlobURLRequestJobTest* test) : test_(test) {} |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 } | 107 } |
| 108 | 108 |
| 109 void SetUpFileSystem() { | 109 void SetUpFileSystem() { |
| 110 // Prepare file system. | 110 // Prepare file system. |
| 111 file_system_context_ = CreateFileSystemContextForTesting( | 111 file_system_context_ = CreateFileSystemContextForTesting( |
| 112 NULL, temp_dir_.path()); | 112 NULL, temp_dir_.path()); |
| 113 | 113 |
| 114 file_system_context_->OpenFileSystem( | 114 file_system_context_->OpenFileSystem( |
| 115 GURL(kFileSystemURLOrigin), | 115 GURL(kFileSystemURLOrigin), |
| 116 kFileSystemType, | 116 kFileSystemType, |
| 117 fileapi::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT, | 117 storage::OPEN_FILE_SYSTEM_CREATE_IF_NONEXISTENT, |
| 118 base::Bind(&BlobURLRequestJobTest::OnValidateFileSystem, | 118 base::Bind(&BlobURLRequestJobTest::OnValidateFileSystem, |
| 119 base::Unretained(this))); | 119 base::Unretained(this))); |
| 120 base::RunLoop().RunUntilIdle(); | 120 base::RunLoop().RunUntilIdle(); |
| 121 ASSERT_TRUE(file_system_root_url_.is_valid()); | 121 ASSERT_TRUE(file_system_root_url_.is_valid()); |
| 122 | 122 |
| 123 // Prepare files on file system. | 123 // Prepare files on file system. |
| 124 const char kFilename1[] = "FileSystemFile1.dat"; | 124 const char kFilename1[] = "FileSystemFile1.dat"; |
| 125 temp_file_system_file1_ = GetFileSystemURL(kFilename1); | 125 temp_file_system_file1_ = GetFileSystemURL(kFilename1); |
| 126 WriteFileSystemFile(kFilename1, kTestFileSystemFileData1, | 126 WriteFileSystemFile(kFilename1, kTestFileSystemFileData1, |
| 127 arraysize(kTestFileSystemFileData1) - 1, | 127 arraysize(kTestFileSystemFileData1) - 1, |
| 128 &temp_file_system_file_modification_time1_); | 128 &temp_file_system_file_modification_time1_); |
| 129 const char kFilename2[] = "FileSystemFile2.dat"; | 129 const char kFilename2[] = "FileSystemFile2.dat"; |
| 130 temp_file_system_file2_ = GetFileSystemURL(kFilename2); | 130 temp_file_system_file2_ = GetFileSystemURL(kFilename2); |
| 131 WriteFileSystemFile(kFilename2, kTestFileSystemFileData2, | 131 WriteFileSystemFile(kFilename2, kTestFileSystemFileData2, |
| 132 arraysize(kTestFileSystemFileData2) - 1, | 132 arraysize(kTestFileSystemFileData2) - 1, |
| 133 &temp_file_system_file_modification_time2_); | 133 &temp_file_system_file_modification_time2_); |
| 134 } | 134 } |
| 135 | 135 |
| 136 GURL GetFileSystemURL(const std::string& filename) { | 136 GURL GetFileSystemURL(const std::string& filename) { |
| 137 return GURL(file_system_root_url_.spec() + filename); | 137 return GURL(file_system_root_url_.spec() + filename); |
| 138 } | 138 } |
| 139 | 139 |
| 140 void WriteFileSystemFile(const std::string& filename, | 140 void WriteFileSystemFile(const std::string& filename, |
| 141 const char* buf, int buf_size, | 141 const char* buf, int buf_size, |
| 142 base::Time* modification_time) { | 142 base::Time* modification_time) { |
| 143 fileapi::FileSystemURL url = | 143 storage::FileSystemURL url = |
| 144 file_system_context_->CreateCrackedFileSystemURL( | 144 file_system_context_->CreateCrackedFileSystemURL( |
| 145 GURL(kFileSystemURLOrigin), | 145 GURL(kFileSystemURLOrigin), |
| 146 kFileSystemType, | 146 kFileSystemType, |
| 147 base::FilePath().AppendASCII(filename)); | 147 base::FilePath().AppendASCII(filename)); |
| 148 | 148 |
| 149 ASSERT_EQ(base::File::FILE_OK, | 149 ASSERT_EQ(base::File::FILE_OK, |
| 150 content::AsyncFileTestHelper::CreateFileWithData( | 150 content::AsyncFileTestHelper::CreateFileWithData( |
| 151 file_system_context_, url, buf, buf_size)); | 151 file_system_context_, url, buf, buf_size)); |
| 152 | 152 |
| 153 base::File::Info file_info; | 153 base::File::Info file_info; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 base::FilePath temp_file2_; | 236 base::FilePath temp_file2_; |
| 237 base::Time temp_file_modification_time1_; | 237 base::Time temp_file_modification_time1_; |
| 238 base::Time temp_file_modification_time2_; | 238 base::Time temp_file_modification_time2_; |
| 239 GURL file_system_root_url_; | 239 GURL file_system_root_url_; |
| 240 GURL temp_file_system_file1_; | 240 GURL temp_file_system_file1_; |
| 241 GURL temp_file_system_file2_; | 241 GURL temp_file_system_file2_; |
| 242 base::Time temp_file_system_file_modification_time1_; | 242 base::Time temp_file_system_file_modification_time1_; |
| 243 base::Time temp_file_system_file_modification_time2_; | 243 base::Time temp_file_system_file_modification_time2_; |
| 244 | 244 |
| 245 base::MessageLoopForIO message_loop_; | 245 base::MessageLoopForIO message_loop_; |
| 246 scoped_refptr<fileapi::FileSystemContext> file_system_context_; | 246 scoped_refptr<storage::FileSystemContext> file_system_context_; |
| 247 scoped_refptr<BlobData> blob_data_; | 247 scoped_refptr<BlobData> blob_data_; |
| 248 net::URLRequestJobFactoryImpl url_request_job_factory_; | 248 net::URLRequestJobFactoryImpl url_request_job_factory_; |
| 249 net::URLRequestContext url_request_context_; | 249 net::URLRequestContext url_request_context_; |
| 250 MockURLRequestDelegate url_request_delegate_; | 250 MockURLRequestDelegate url_request_delegate_; |
| 251 scoped_ptr<net::URLRequest> request_; | 251 scoped_ptr<net::URLRequest> request_; |
| 252 | 252 |
| 253 int expected_status_code_; | 253 int expected_status_code_; |
| 254 std::string expected_response_; | 254 std::string expected_response_; |
| 255 }; | 255 }; |
| 256 | 256 |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 EXPECT_TRUE(request_->response_headers()->GetMimeType(&content_type)); | 408 EXPECT_TRUE(request_->response_headers()->GetMimeType(&content_type)); |
| 409 EXPECT_EQ(kTestContentType, content_type); | 409 EXPECT_EQ(kTestContentType, content_type); |
| 410 void* iter = NULL; | 410 void* iter = NULL; |
| 411 std::string content_disposition; | 411 std::string content_disposition; |
| 412 EXPECT_TRUE(request_->response_headers()->EnumerateHeader( | 412 EXPECT_TRUE(request_->response_headers()->EnumerateHeader( |
| 413 &iter, "Content-Disposition", &content_disposition)); | 413 &iter, "Content-Disposition", &content_disposition)); |
| 414 EXPECT_EQ(kTestContentDisposition, content_disposition); | 414 EXPECT_EQ(kTestContentDisposition, content_disposition); |
| 415 } | 415 } |
| 416 | 416 |
| 417 } // namespace content | 417 } // namespace content |
| OLD | NEW |