Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stack> | 5 #include <stack> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| 11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/message_loop_proxy.h" | 14 #include "base/message_loop_proxy.h" |
| 15 #include "base/scoped_temp_dir.h" | 15 #include "base/scoped_temp_dir.h" |
| 16 #include "base/synchronization/waitable_event.h" | 16 #include "base/synchronization/waitable_event.h" |
| 17 #include "base/threading/thread.h" | 17 #include "base/threading/thread.h" |
| 18 #include "base/time.h" | 18 #include "base/time.h" |
| 19 #include "net/base/file_stream.h" | 19 #include "net/base/file_stream.h" |
| 20 #include "net/base/io_buffer.h" | 20 #include "net/base/io_buffer.h" |
| 21 #include "net/base/net_errors.h" | 21 #include "net/base/net_errors.h" |
| 22 #include "net/http/http_request_headers.h" | 22 #include "net/http/http_request_headers.h" |
| 23 #include "net/http/http_response_headers.h" | 23 #include "net/http/http_response_headers.h" |
| 24 #include "net/url_request/url_request.h" | 24 #include "net/url_request/url_request.h" |
| 25 #include "net/url_request/url_request_context.h" | 25 #include "net/url_request/url_request_context.h" |
| 26 #include "net/url_request/url_request_error_job.h" | 26 #include "net/url_request/url_request_error_job.h" |
| 27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 28 #include "webkit/blob/blob_data.h" | 28 #include "webkit/blob/blob_data.h" |
| 29 #include "webkit/blob/blob_url_request_job.h" | 29 #include "webkit/blob/blob_url_request_job.h" |
| 30 #include "webkit/fileapi/file_system_context.h" | |
| 31 #include "webkit/fileapi/file_system_operation_context.h" | |
| 32 #include "webkit/fileapi/file_system_task_runners.h" | |
| 33 #include "webkit/fileapi/file_system_util.h" | |
| 34 #include "webkit/fileapi/mock_file_system_options.h" | |
| 30 | 35 |
| 31 namespace webkit_blob { | 36 namespace webkit_blob { |
| 32 | 37 |
| 33 static const int kBufferSize = 1024; | 38 namespace { |
| 34 static const char kTestData1[] = "Hello"; | 39 |
| 35 static const char kTestData2[] = "Here it is data."; | 40 const int kBufferSize = 1024; |
| 36 static const char kTestFileData1[] = "0123456789"; | 41 const char kTestData1[] = "Hello"; |
| 37 static const char kTestFileData2[] = "This is sample file."; | 42 const char kTestData2[] = "Here it is data."; |
| 38 static const char kTestContentType[] = "foo/bar"; | 43 const char kTestFileData1[] = "0123456789"; |
| 39 static const char kTestContentDisposition[] = "attachment; filename=foo.txt"; | 44 const char kTestFileData2[] = "This is sample file."; |
| 45 const char kTestFileSystemFileData1[] = "abcdefghijklmnop"; | |
| 46 const char kTestFileSystemFileData2[] = "File system file test data."; | |
| 47 const char kTestContentType[] = "foo/bar"; | |
| 48 const char kTestContentDisposition[] = "attachment; filename=foo.txt"; | |
| 49 | |
| 50 const char kFileSystemURLOrigin[] = "http://remote"; | |
| 51 const fileapi::FileSystemType kFileSystemType = | |
| 52 fileapi::kFileSystemTypeTemporary; | |
| 53 | |
| 54 GURL GetFileSystemURL(const std::string& filename) { | |
| 55 GURL root_uri = fileapi::GetFileSystemRootURI(GURL(kFileSystemURLOrigin), | |
| 56 kFileSystemType); | |
| 57 return GURL(root_uri.spec() + filename); | |
|
kinuko
2012/10/19 04:07:19
Btw this can be also implemented using root URL re
hashimoto
2012/10/19 07:07:45
Done.
| |
| 58 } | |
| 59 | |
| 60 } // namespace | |
| 40 | 61 |
| 41 class BlobURLRequestJobTest : public testing::Test { | 62 class BlobURLRequestJobTest : public testing::Test { |
| 42 public: | 63 public: |
| 43 | 64 |
| 44 // Test Harness ------------------------------------------------------------- | 65 // Test Harness ------------------------------------------------------------- |
| 45 // TODO(jianli): share this test harness with AppCacheURLRequestJobTest | 66 // TODO(jianli): share this test harness with AppCacheURLRequestJobTest |
| 46 | 67 |
| 47 class MockURLRequestDelegate : public net::URLRequest::Delegate { | 68 class MockURLRequestDelegate : public net::URLRequest::Delegate { |
| 48 public: | 69 public: |
| 49 explicit MockURLRequestDelegate(BlobURLRequestJobTest* test) | 70 explicit MockURLRequestDelegate(BlobURLRequestJobTest* test) |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 157 | 178 |
| 158 template <class Method> | 179 template <class Method> |
| 159 void RunTestOnIOThread(Method method) { | 180 void RunTestOnIOThread(Method method) { |
| 160 test_finished_event_ .reset(new base::WaitableEvent(false, false)); | 181 test_finished_event_ .reset(new base::WaitableEvent(false, false)); |
| 161 io_thread_->message_loop()->PostTask( | 182 io_thread_->message_loop()->PostTask( |
| 162 FROM_HERE, base::Bind(&BlobURLRequestJobTest::MethodWrapper<Method>, | 183 FROM_HERE, base::Bind(&BlobURLRequestJobTest::MethodWrapper<Method>, |
| 163 base::Unretained(this), method)); | 184 base::Unretained(this), method)); |
| 164 test_finished_event_->Wait(); | 185 test_finished_event_->Wait(); |
| 165 } | 186 } |
| 166 | 187 |
| 188 void WriteFileSystemFile(const std::string& filename, | |
| 189 const char* buf, int buf_size, | |
| 190 base::Time* modification_time) { | |
| 191 fileapi::FileSystemURL url(GURL(kFileSystemURLOrigin), | |
| 192 fileapi::kFileSystemTypeTemporary, | |
| 193 FilePath().AppendASCII(filename)); | |
| 194 | |
| 195 fileapi::FileSystemFileUtil* file_util = | |
| 196 file_system_context_->GetFileUtil(kFileSystemType); | |
| 197 | |
| 198 fileapi::FileSystemOperationContext context(file_system_context_); | |
| 199 context.set_allowed_bytes_growth(1024); | |
| 200 | |
| 201 base::PlatformFile handle = base::kInvalidPlatformFileValue; | |
| 202 bool created = false; | |
| 203 ASSERT_EQ(base::PLATFORM_FILE_OK, file_util->CreateOrOpen( | |
| 204 &context, | |
| 205 url, | |
| 206 base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE, | |
| 207 &handle, | |
| 208 &created)); | |
| 209 EXPECT_TRUE(created); | |
| 210 ASSERT_NE(base::kInvalidPlatformFileValue, handle); | |
| 211 ASSERT_EQ(buf_size, | |
| 212 base::WritePlatformFile(handle, 0 /* offset */, buf, buf_size)); | |
| 213 base::ClosePlatformFile(handle); | |
| 214 | |
| 215 base::PlatformFileInfo file_info; | |
| 216 FilePath platform_path; | |
| 217 ASSERT_EQ(base::PLATFORM_FILE_OK, | |
| 218 file_util->GetFileInfo(&context, url, &file_info, | |
| 219 &platform_path)); | |
| 220 if (modification_time) | |
| 221 *modification_time = file_info.last_modified; | |
| 222 } | |
| 223 | |
| 167 void SetUpTest() { | 224 void SetUpTest() { |
| 168 DCHECK(MessageLoop::current() == io_thread_->message_loop()); | 225 DCHECK(MessageLoop::current() == io_thread_->message_loop()); |
| 169 | 226 |
| 170 net::URLRequest::Deprecated::RegisterProtocolFactory( | 227 net::URLRequest::Deprecated::RegisterProtocolFactory( |
| 171 "blob", &BlobURLRequestJobFactory); | 228 "blob", &BlobURLRequestJobFactory); |
| 172 url_request_delegate_.reset(new MockURLRequestDelegate(this)); | 229 url_request_delegate_.reset(new MockURLRequestDelegate(this)); |
| 230 | |
| 231 // Prepare file system. | |
| 232 file_system_context_ = new fileapi::FileSystemContext( | |
| 233 fileapi::FileSystemTaskRunners::CreateMockTaskRunners(), | |
| 234 NULL, | |
| 235 NULL, | |
| 236 temp_dir_.path(), | |
| 237 fileapi::CreateDisallowFileAccessOptions()); | |
| 238 file_system_context_->OpenFileSystem(GURL(kFileSystemURLOrigin), | |
| 239 kFileSystemType, | |
| 240 true /* create */, | |
| 241 base::Bind(&OnValidateFileSystem)); | |
| 242 MessageLoop::current()->RunAllPending(); | |
| 243 | |
| 244 ASSERT_EQ(static_cast<int>(arraysize(kTestFileData1) - 1), | |
| 245 file_util::WriteFile(temp_file1_, kTestFileData1, | |
| 246 arraysize(kTestFileData1) - 1)); | |
| 247 | |
| 248 // Prepare files on file system. | |
| 249 const char kFileSystemFilename1[] = "FileSystemFile1.dat"; | |
|
kinuko
2012/10/19 04:07:19
I'd use shorter names if we only use this variable
hashimoto
2012/10/19 07:07:45
Done.
| |
| 250 temp_file_system_file1_ = GetFileSystemURL(kFileSystemFilename1); | |
| 251 WriteFileSystemFile(kFileSystemFilename1, kTestFileSystemFileData1, | |
| 252 arraysize(kTestFileSystemFileData1), | |
| 253 &temp_file_system_file_modification_time1_); | |
| 254 const char kFileSystemFilename2[] = "FileSystemFile2.dat"; | |
| 255 temp_file_system_file2_ = GetFileSystemURL(kFileSystemFilename2); | |
| 256 WriteFileSystemFile(kFileSystemFilename2, kTestFileSystemFileData2, | |
| 257 arraysize(kTestFileSystemFileData2), | |
| 258 &temp_file_system_file_modification_time2_); | |
| 173 } | 259 } |
| 174 | 260 |
| 175 void TearDownTest() { | 261 void TearDownTest() { |
| 176 DCHECK(MessageLoop::current() == io_thread_->message_loop()); | 262 DCHECK(MessageLoop::current() == io_thread_->message_loop()); |
| 177 | 263 |
| 264 file_system_context_ = NULL; | |
| 265 | |
| 178 request_.reset(); | 266 request_.reset(); |
| 179 url_request_delegate_.reset(); | 267 url_request_delegate_.reset(); |
| 180 | 268 |
| 181 DCHECK(!blob_url_request_job_); | 269 DCHECK(!blob_url_request_job_); |
| 182 net::URLRequest::Deprecated::RegisterProtocolFactory("blob", NULL); | 270 net::URLRequest::Deprecated::RegisterProtocolFactory("blob", NULL); |
| 183 } | 271 } |
| 184 | 272 |
| 185 void TestFinished() { | 273 void TestFinished() { |
| 186 // We unwind the stack prior to finishing up to let stack | 274 // We unwind the stack prior to finishing up to let stack |
| 187 // based objects get deleted. | 275 // based objects get deleted. |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 214 | 302 |
| 215 base::Closure task = task_stack_.top().first; | 303 base::Closure task = task_stack_.top().first; |
| 216 bool immediate = task_stack_.top().second; | 304 bool immediate = task_stack_.top().second; |
| 217 task_stack_.pop(); | 305 task_stack_.pop(); |
| 218 if (immediate) | 306 if (immediate) |
| 219 task.Run(); | 307 task.Run(); |
| 220 else | 308 else |
| 221 MessageLoop::current()->PostTask(FROM_HERE, task); | 309 MessageLoop::current()->PostTask(FROM_HERE, task); |
| 222 } | 310 } |
| 223 | 311 |
| 312 static void OnValidateFileSystem(base::PlatformFileError result, | |
| 313 const std::string& name, | |
| 314 const GURL& root) { | |
| 315 ASSERT_EQ(base::PLATFORM_FILE_OK, result); | |
| 316 } | |
| 317 | |
| 224 void TestSuccessRequest(BlobData* blob_data, | 318 void TestSuccessRequest(BlobData* blob_data, |
| 225 const std::string& expected_response) { | 319 const std::string& expected_response) { |
| 226 PushNextTask(base::Bind(&BlobURLRequestJobTest::VerifyResponse, | 320 PushNextTask(base::Bind(&BlobURLRequestJobTest::VerifyResponse, |
| 227 base::Unretained(this))); | 321 base::Unretained(this))); |
| 228 expected_status_code_ = 200; | 322 expected_status_code_ = 200; |
| 229 expected_response_ = expected_response; | 323 expected_response_ = expected_response; |
| 230 return TestRequest("GET", net::HttpRequestHeaders(), blob_data); | 324 return TestRequest("GET", net::HttpRequestHeaders(), blob_data); |
| 231 } | 325 } |
| 232 | 326 |
| 233 void TestErrorRequest(BlobData* blob_data, | 327 void TestErrorRequest(BlobData* blob_data, |
| 234 int expected_status_code) { | 328 int expected_status_code) { |
| 235 PushNextTask(base::Bind(&BlobURLRequestJobTest::VerifyResponse, | 329 PushNextTask(base::Bind(&BlobURLRequestJobTest::VerifyResponse, |
| 236 base::Unretained(this))); | 330 base::Unretained(this))); |
| 237 expected_status_code_ = expected_status_code; | 331 expected_status_code_ = expected_status_code; |
| 238 expected_response_ = ""; | 332 expected_response_ = ""; |
| 239 return TestRequest("GET", net::HttpRequestHeaders(), blob_data); | 333 return TestRequest("GET", net::HttpRequestHeaders(), blob_data); |
| 240 } | 334 } |
| 241 | 335 |
| 242 void TestRequest(const std::string& method, | 336 void TestRequest(const std::string& method, |
| 243 const net::HttpRequestHeaders& extra_headers, | 337 const net::HttpRequestHeaders& extra_headers, |
| 244 BlobData* blob_data) { | 338 BlobData* blob_data) { |
| 245 // This test has async steps. | 339 // This test has async steps. |
| 246 request_.reset(empty_context_.CreateRequest( | 340 request_.reset(empty_context_.CreateRequest( |
| 247 GURL("blob:blah"), url_request_delegate_.get())); | 341 GURL("blob:blah"), url_request_delegate_.get())); |
| 248 request_->set_method(method); | 342 request_->set_method(method); |
| 249 blob_url_request_job_ = new BlobURLRequestJob( | 343 blob_url_request_job_ = new BlobURLRequestJob( |
| 250 request_.get(), | 344 request_.get(), |
| 251 empty_context_.network_delegate(), | 345 empty_context_.network_delegate(), |
| 252 blob_data, | 346 blob_data, |
| 347 file_system_context_, | |
| 253 base::MessageLoopProxy::current()); | 348 base::MessageLoopProxy::current()); |
| 254 | 349 |
| 255 // Start the request. | 350 // Start the request. |
| 256 if (!extra_headers.IsEmpty()) | 351 if (!extra_headers.IsEmpty()) |
| 257 request_->SetExtraRequestHeaders(extra_headers); | 352 request_->SetExtraRequestHeaders(extra_headers); |
| 258 request_->Start(); | 353 request_->Start(); |
| 259 | 354 |
| 260 // Completion is async. | 355 // Completion is async. |
| 261 } | 356 } |
| 262 | 357 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 313 TestErrorRequest(blob_data, 404); | 408 TestErrorRequest(blob_data, 404); |
| 314 } | 409 } |
| 315 | 410 |
| 316 void TestGetSlicedFileRequest() { | 411 void TestGetSlicedFileRequest() { |
| 317 scoped_refptr<BlobData> blob_data(new BlobData()); | 412 scoped_refptr<BlobData> blob_data(new BlobData()); |
| 318 blob_data->AppendFile(temp_file1_, 2, 4, temp_file_modification_time1_); | 413 blob_data->AppendFile(temp_file1_, 2, 4, temp_file_modification_time1_); |
| 319 std::string result(kTestFileData1 + 2, 4); | 414 std::string result(kTestFileData1 + 2, 4); |
| 320 TestSuccessRequest(blob_data, result); | 415 TestSuccessRequest(blob_data, result); |
| 321 } | 416 } |
| 322 | 417 |
| 418 void TestGetSimpleFileSystemFileRequest() { | |
| 419 scoped_refptr<BlobData> blob_data(new BlobData()); | |
| 420 blob_data->AppendFileSystemFile(temp_file_system_file1_, 0, -1, | |
| 421 base::Time()); | |
| 422 TestSuccessRequest(blob_data, kTestFileSystemFileData1); | |
| 423 } | |
| 424 | |
| 425 void TestGetLargeFileSystemFileRequest() { | |
| 426 std::string large_data; | |
| 427 large_data.reserve(kBufferSize * 5); | |
| 428 for (int i = 0; i < kBufferSize * 5; ++i) | |
| 429 large_data.append(1, static_cast<char>(i % 256)); | |
| 430 | |
| 431 const char kFilename[] = "LargeBlob.dat"; | |
| 432 WriteFileSystemFile(kFilename, large_data.data(), large_data.size(), NULL); | |
| 433 | |
| 434 scoped_refptr<BlobData> blob_data(new BlobData()); | |
| 435 blob_data->AppendFileSystemFile(GetFileSystemURL(kFilename), | |
| 436 0, -1, base::Time()); | |
| 437 TestSuccessRequest(blob_data, large_data); | |
| 438 } | |
| 439 | |
| 440 void TestGetNonExistentFileSystemFileRequest() { | |
| 441 GURL non_existent_file = GetFileSystemURL("non-existent.dat"); | |
| 442 scoped_refptr<BlobData> blob_data(new BlobData()); | |
| 443 blob_data->AppendFileSystemFile(non_existent_file, 0, -1, base::Time()); | |
| 444 TestErrorRequest(blob_data, 404); | |
| 445 } | |
| 446 | |
| 447 void TestGetChangedFileSystemFileRequest() { | |
| 448 scoped_refptr<BlobData> blob_data(new BlobData()); | |
| 449 base::Time old_time = | |
| 450 temp_file_system_file_modification_time1_ - | |
| 451 base::TimeDelta::FromSeconds(10); | |
| 452 blob_data->AppendFileSystemFile(temp_file_system_file1_, 0, 3, old_time); | |
| 453 TestErrorRequest(blob_data, 404); | |
| 454 } | |
| 455 | |
| 456 void TestGetSlicedFileSystemFileRequest() { | |
| 457 scoped_refptr<BlobData> blob_data(new BlobData()); | |
| 458 blob_data->AppendFileSystemFile(temp_file_system_file1_, 2, 4, | |
| 459 temp_file_system_file_modification_time1_); | |
| 460 std::string result(kTestFileSystemFileData1 + 2, 4); | |
| 461 TestSuccessRequest(blob_data, result); | |
| 462 } | |
| 463 | |
| 323 scoped_refptr<BlobData> BuildComplicatedData(std::string* expected_result) { | 464 scoped_refptr<BlobData> BuildComplicatedData(std::string* expected_result) { |
| 324 scoped_refptr<BlobData> blob_data(new BlobData()); | 465 scoped_refptr<BlobData> blob_data(new BlobData()); |
| 325 blob_data->AppendData(kTestData1 + 1, 2); | 466 blob_data->AppendData(kTestData1 + 1, 2); |
| 326 blob_data->AppendFile(temp_file1_, 2, 3, temp_file_modification_time1_); | 467 blob_data->AppendFile(temp_file1_, 2, 3, temp_file_modification_time1_); |
| 327 blob_data->AppendData(kTestData2 + 3, 4); | 468 blob_data->AppendFileSystemFile(temp_file_system_file1_, 3, 4, |
| 328 blob_data->AppendFile(temp_file2_, 4, 5, temp_file_modification_time2_); | 469 temp_file_system_file_modification_time1_); |
| 470 blob_data->AppendData(kTestData2 + 4, 5); | |
| 471 blob_data->AppendFile(temp_file2_, 5, 6, temp_file_modification_time2_); | |
| 472 blob_data->AppendFileSystemFile(temp_file_system_file2_, 6, 7, | |
| 473 temp_file_system_file_modification_time2_); | |
| 329 *expected_result = std::string(kTestData1 + 1, 2); | 474 *expected_result = std::string(kTestData1 + 1, 2); |
| 330 *expected_result += std::string(kTestFileData1 + 2, 3); | 475 *expected_result += std::string(kTestFileData1 + 2, 3); |
| 331 *expected_result += std::string(kTestData2 + 3, 4); | 476 *expected_result += std::string(kTestFileSystemFileData1 + 3, 4); |
| 332 *expected_result += std::string(kTestFileData2 + 4, 5); | 477 *expected_result += std::string(kTestData2 + 4, 5); |
| 478 *expected_result += std::string(kTestFileData2 + 5, 6); | |
| 479 *expected_result += std::string(kTestFileSystemFileData2 + 6, 7); | |
| 333 return blob_data; | 480 return blob_data; |
| 334 } | 481 } |
| 335 | 482 |
| 336 void TestGetComplicatedDataAndFileRequest() { | 483 void TestGetComplicatedDataAndFileRequest() { |
| 337 std::string result; | 484 std::string result; |
| 338 scoped_refptr<BlobData> blob_data = BuildComplicatedData(&result); | 485 scoped_refptr<BlobData> blob_data = BuildComplicatedData(&result); |
| 339 TestSuccessRequest(blob_data, result); | 486 TestSuccessRequest(blob_data, result); |
| 340 } | 487 } |
| 341 | 488 |
| 342 void TestGetRangeRequest1() { | 489 void TestGetRangeRequest1() { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 388 EXPECT_STREQ(content_disposition.c_str(), kTestContentDisposition); | 535 EXPECT_STREQ(content_disposition.c_str(), kTestContentDisposition); |
| 389 TestFinished(); | 536 TestFinished(); |
| 390 } | 537 } |
| 391 | 538 |
| 392 private: | 539 private: |
| 393 ScopedTempDir temp_dir_; | 540 ScopedTempDir temp_dir_; |
| 394 FilePath temp_file1_; | 541 FilePath temp_file1_; |
| 395 FilePath temp_file2_; | 542 FilePath temp_file2_; |
| 396 base::Time temp_file_modification_time1_; | 543 base::Time temp_file_modification_time1_; |
| 397 base::Time temp_file_modification_time2_; | 544 base::Time temp_file_modification_time2_; |
| 545 GURL temp_file_system_file1_; | |
| 546 GURL temp_file_system_file2_; | |
| 547 base::Time temp_file_system_file_modification_time1_; | |
| 548 base::Time temp_file_system_file_modification_time2_; | |
| 398 scoped_ptr<base::Thread> io_thread_; | 549 scoped_ptr<base::Thread> io_thread_; |
| 399 static BlobURLRequestJob* blob_url_request_job_; | 550 static BlobURLRequestJob* blob_url_request_job_; |
| 400 | 551 |
| 401 scoped_ptr<base::WaitableEvent> test_finished_event_; | 552 scoped_ptr<base::WaitableEvent> test_finished_event_; |
| 402 std::stack<std::pair<base::Closure, bool> > task_stack_; | 553 std::stack<std::pair<base::Closure, bool> > task_stack_; |
| 403 net::URLRequestContext empty_context_; | 554 net::URLRequestContext empty_context_; |
| 404 scoped_ptr<net::URLRequest> request_; | 555 scoped_ptr<net::URLRequest> request_; |
| 405 scoped_ptr<MockURLRequestDelegate> url_request_delegate_; | 556 scoped_ptr<MockURLRequestDelegate> url_request_delegate_; |
| 557 scoped_refptr<fileapi::FileSystemContext> file_system_context_; | |
| 406 int expected_status_code_; | 558 int expected_status_code_; |
| 407 std::string expected_response_; | 559 std::string expected_response_; |
| 408 }; | 560 }; |
| 409 | 561 |
| 410 // static | 562 // static |
| 411 BlobURLRequestJob* BlobURLRequestJobTest::blob_url_request_job_ = NULL; | 563 BlobURLRequestJob* BlobURLRequestJobTest::blob_url_request_job_ = NULL; |
| 412 | 564 |
| 413 TEST_F(BlobURLRequestJobTest, TestGetSimpleDataRequest) { | 565 TEST_F(BlobURLRequestJobTest, TestGetSimpleDataRequest) { |
| 414 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetSimpleDataRequest); | 566 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetSimpleDataRequest); |
| 415 } | 567 } |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 427 } | 579 } |
| 428 | 580 |
| 429 TEST_F(BlobURLRequestJobTest, TestGetNonExistentFileRequest) { | 581 TEST_F(BlobURLRequestJobTest, TestGetNonExistentFileRequest) { |
| 430 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetNonExistentFileRequest); | 582 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetNonExistentFileRequest); |
| 431 } | 583 } |
| 432 | 584 |
| 433 TEST_F(BlobURLRequestJobTest, TestGetChangedFileRequest) { | 585 TEST_F(BlobURLRequestJobTest, TestGetChangedFileRequest) { |
| 434 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetChangedFileRequest); | 586 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetChangedFileRequest); |
| 435 } | 587 } |
| 436 | 588 |
| 589 TEST_F(BlobURLRequestJobTest, TestGetSimpleFileSystemFileRequest) { | |
| 590 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetSimpleFileSystemFileRequest); | |
| 591 } | |
| 592 | |
| 593 TEST_F(BlobURLRequestJobTest, TestGetLargeFileSystemFileRequest) { | |
| 594 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetLargeFileSystemFileRequest); | |
| 595 } | |
| 596 | |
| 597 TEST_F(BlobURLRequestJobTest, TestGetSlicedFileSystemFileRequest) { | |
| 598 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetSlicedFileSystemFileRequest); | |
| 599 } | |
| 600 | |
| 601 TEST_F(BlobURLRequestJobTest, TestGetNonExistentFileSystemFileRequest) { | |
| 602 RunTestOnIOThread( | |
| 603 &BlobURLRequestJobTest::TestGetNonExistentFileSystemFileRequest); | |
| 604 } | |
| 605 | |
| 606 TEST_F(BlobURLRequestJobTest, TestGetChangedFileSystemFileRequest) { | |
| 607 RunTestOnIOThread( | |
| 608 &BlobURLRequestJobTest::TestGetChangedFileSystemFileRequest); | |
| 609 } | |
| 610 | |
| 437 TEST_F(BlobURLRequestJobTest, TestGetComplicatedDataAndFileRequest) { | 611 TEST_F(BlobURLRequestJobTest, TestGetComplicatedDataAndFileRequest) { |
| 438 RunTestOnIOThread( | 612 RunTestOnIOThread( |
| 439 &BlobURLRequestJobTest::TestGetComplicatedDataAndFileRequest); | 613 &BlobURLRequestJobTest::TestGetComplicatedDataAndFileRequest); |
| 440 } | 614 } |
| 441 | 615 |
| 442 TEST_F(BlobURLRequestJobTest, TestGetRangeRequest1) { | 616 TEST_F(BlobURLRequestJobTest, TestGetRangeRequest1) { |
| 443 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetRangeRequest1); | 617 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetRangeRequest1); |
| 444 } | 618 } |
| 445 | 619 |
| 446 TEST_F(BlobURLRequestJobTest, TestGetRangeRequest2) { | 620 TEST_F(BlobURLRequestJobTest, TestGetRangeRequest2) { |
| 447 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetRangeRequest2); | 621 RunTestOnIOThread(&BlobURLRequestJobTest::TestGetRangeRequest2); |
| 448 } | 622 } |
| 449 | 623 |
| 450 TEST_F(BlobURLRequestJobTest, TestExtraHeaders) { | 624 TEST_F(BlobURLRequestJobTest, TestExtraHeaders) { |
| 451 RunTestOnIOThread(&BlobURLRequestJobTest::TestExtraHeaders); | 625 RunTestOnIOThread(&BlobURLRequestJobTest::TestExtraHeaders); |
| 452 } | 626 } |
| 453 | 627 |
| 454 } // namespace webkit_blob | 628 } // namespace webkit_blob |
| OLD | NEW |