| 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 "net/base/file_stream.h" | 5 #include "net/base/file_stream.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/files/file.h" | 9 #include "base/files/file.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 // 1. Test reading with a file handle. | 113 // 1. Test reading with a file handle. |
| 114 ASSERT_EQ(kTestDataSize, | 114 ASSERT_EQ(kTestDataSize, |
| 115 base::WriteFile(temp_file_path(), kTestData, kTestDataSize)); | 115 base::WriteFile(temp_file_path(), kTestData, kTestDataSize)); |
| 116 int flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ | | 116 int flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ | |
| 117 base::File::FLAG_ASYNC; | 117 base::File::FLAG_ASYNC; |
| 118 base::File file(temp_file_path(), flags); | 118 base::File file(temp_file_path(), flags); |
| 119 | 119 |
| 120 // Seek to the beginning of the file and read. | 120 // Seek to the beginning of the file and read. |
| 121 scoped_ptr<FileStream> read_stream( | 121 scoped_ptr<FileStream> read_stream( |
| 122 new FileStream(file.Pass(), base::MessageLoopProxy::current())); | 122 new FileStream(file.Pass(), base::MessageLoopProxy::current())); |
| 123 ASSERT_EQ(ERR_IO_PENDING, | 123 ASSERT_EQ(ERR_IO_PENDING, read_stream->Seek(0, callback64.callback())); |
| 124 read_stream->Seek(base::File::FROM_BEGIN, 0, | |
| 125 callback64.callback())); | |
| 126 ASSERT_EQ(0, callback64.WaitForResult()); | 124 ASSERT_EQ(0, callback64.WaitForResult()); |
| 127 // Read into buffer and compare. | 125 // Read into buffer and compare. |
| 128 scoped_refptr<IOBufferWithSize> read_buffer = | 126 scoped_refptr<IOBufferWithSize> read_buffer = |
| 129 new IOBufferWithSize(kTestDataSize); | 127 new IOBufferWithSize(kTestDataSize); |
| 130 rv = read_stream->Read(read_buffer.get(), kTestDataSize, callback.callback()); | 128 rv = read_stream->Read(read_buffer.get(), kTestDataSize, callback.callback()); |
| 131 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); | 129 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); |
| 132 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); | 130 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); |
| 133 read_stream.reset(); | 131 read_stream.reset(); |
| 134 | 132 |
| 135 // 2. Test writing with a file handle. | 133 // 2. Test writing with a file handle. |
| 136 base::DeleteFile(temp_file_path(), false); | 134 base::DeleteFile(temp_file_path(), false); |
| 137 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE | | 135 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE | |
| 138 base::File::FLAG_ASYNC; | 136 base::File::FLAG_ASYNC; |
| 139 file.Initialize(temp_file_path(), flags); | 137 file.Initialize(temp_file_path(), flags); |
| 140 | 138 |
| 141 scoped_ptr<FileStream> write_stream( | 139 scoped_ptr<FileStream> write_stream( |
| 142 new FileStream(file.Pass(), base::MessageLoopProxy::current())); | 140 new FileStream(file.Pass(), base::MessageLoopProxy::current())); |
| 143 ASSERT_EQ(ERR_IO_PENDING, | 141 ASSERT_EQ(ERR_IO_PENDING, write_stream->Seek(0, callback64.callback())); |
| 144 write_stream->Seek(base::File::FROM_BEGIN, 0, | |
| 145 callback64.callback())); | |
| 146 ASSERT_EQ(0, callback64.WaitForResult()); | 142 ASSERT_EQ(0, callback64.WaitForResult()); |
| 147 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer(); | 143 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer(); |
| 148 rv = write_stream->Write(write_buffer.get(), kTestDataSize, | 144 rv = write_stream->Write(write_buffer.get(), kTestDataSize, |
| 149 callback.callback()); | 145 callback.callback()); |
| 150 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); | 146 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); |
| 151 write_stream.reset(); | 147 write_stream.reset(); |
| 152 | 148 |
| 153 // Read into buffer and compare to make sure the handle worked fine. | 149 // Read into buffer and compare to make sure the handle worked fine. |
| 154 ASSERT_EQ(kTestDataSize, | 150 ASSERT_EQ(kTestDataSize, |
| 155 base::ReadFile(temp_file_path(), read_buffer->data(), | 151 base::ReadFile(temp_file_path(), read_buffer->data(), |
| 156 kTestDataSize)); | 152 kTestDataSize)); |
| 157 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); | 153 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); |
| 158 } | 154 } |
| 159 | 155 |
| 160 TEST_F(FileStreamTest, UseClosedStream) { | 156 TEST_F(FileStreamTest, UseClosedStream) { |
| 161 int rv = 0; | 157 int rv = 0; |
| 162 TestCompletionCallback callback; | 158 TestCompletionCallback callback; |
| 163 TestInt64CompletionCallback callback64; | 159 TestInt64CompletionCallback callback64; |
| 164 | 160 |
| 165 FileStream stream(base::MessageLoopProxy::current()); | 161 FileStream stream(base::MessageLoopProxy::current()); |
| 166 | 162 |
| 167 EXPECT_FALSE(stream.IsOpen()); | 163 EXPECT_FALSE(stream.IsOpen()); |
| 168 | 164 |
| 169 // Try seeking... | 165 // Try seeking... |
| 170 rv = stream.Seek(base::File::FROM_BEGIN, 5, callback64.callback()); | 166 rv = stream.Seek(5, callback64.callback()); |
| 171 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv)); | 167 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv)); |
| 172 | 168 |
| 173 // Try reading... | 169 // Try reading... |
| 174 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10); | 170 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10); |
| 175 rv = stream.Read(buf.get(), buf->size(), callback.callback()); | 171 rv = stream.Read(buf.get(), buf->size(), callback.callback()); |
| 176 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv)); | 172 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv)); |
| 177 } | 173 } |
| 178 | 174 |
| 179 TEST_F(FileStreamTest, Read) { | 175 TEST_F(FileStreamTest, Read) { |
| 180 int64 file_size; | 176 int64 file_size; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 FileStream stream(base::MessageLoopProxy::current()); | 233 FileStream stream(base::MessageLoopProxy::current()); |
| 238 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | | 234 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | |
| 239 base::File::FLAG_ASYNC; | 235 base::File::FLAG_ASYNC; |
| 240 TestCompletionCallback callback; | 236 TestCompletionCallback callback; |
| 241 int rv = stream.Open(temp_file_path(), flags, callback.callback()); | 237 int rv = stream.Open(temp_file_path(), flags, callback.callback()); |
| 242 EXPECT_EQ(ERR_IO_PENDING, rv); | 238 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 243 EXPECT_EQ(OK, callback.WaitForResult()); | 239 EXPECT_EQ(OK, callback.WaitForResult()); |
| 244 | 240 |
| 245 TestInt64CompletionCallback callback64; | 241 TestInt64CompletionCallback callback64; |
| 246 const int64 kOffset = 3; | 242 const int64 kOffset = 3; |
| 247 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback()); | 243 rv = stream.Seek(kOffset, callback64.callback()); |
| 248 ASSERT_EQ(ERR_IO_PENDING, rv); | 244 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 249 int64 new_offset = callback64.WaitForResult(); | 245 int64 new_offset = callback64.WaitForResult(); |
| 250 EXPECT_EQ(kOffset, new_offset); | 246 EXPECT_EQ(kOffset, new_offset); |
| 251 | 247 |
| 252 int total_bytes_read = 0; | 248 int total_bytes_read = 0; |
| 253 | 249 |
| 254 std::string data_read; | 250 std::string data_read; |
| 255 for (;;) { | 251 for (;;) { |
| 256 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); | 252 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); |
| 257 rv = stream.Read(buf.get(), buf->size(), callback.callback()); | 253 rv = stream.Read(buf.get(), buf->size(), callback.callback()); |
| 258 if (rv == ERR_IO_PENDING) | 254 if (rv == ERR_IO_PENDING) |
| 259 rv = callback.WaitForResult(); | 255 rv = callback.WaitForResult(); |
| 260 EXPECT_LE(0, rv); | 256 EXPECT_LE(0, rv); |
| 261 if (rv <= 0) | 257 if (rv <= 0) |
| 262 break; | 258 break; |
| 263 total_bytes_read += rv; | 259 total_bytes_read += rv; |
| 264 data_read.append(buf->data(), rv); | 260 data_read.append(buf->data(), rv); |
| 265 } | 261 } |
| 266 EXPECT_EQ(file_size - kOffset, total_bytes_read); | 262 EXPECT_EQ(file_size - kOffset, total_bytes_read); |
| 267 EXPECT_EQ(kTestData + kOffset, data_read); | 263 EXPECT_EQ(kTestData + kOffset, data_read); |
| 268 } | 264 } |
| 269 | 265 |
| 270 TEST_F(FileStreamTest, SeekAround) { | |
| 271 FileStream stream(base::MessageLoopProxy::current()); | |
| 272 int flags = base::File::FLAG_OPEN | base::File::FLAG_ASYNC | | |
| 273 base::File::FLAG_READ; | |
| 274 TestCompletionCallback callback; | |
| 275 int rv = stream.Open(temp_file_path(), flags, callback.callback()); | |
| 276 EXPECT_EQ(ERR_IO_PENDING, rv); | |
| 277 EXPECT_EQ(OK, callback.WaitForResult()); | |
| 278 | |
| 279 TestInt64CompletionCallback callback64; | |
| 280 | |
| 281 const int64 kOffset = 3; | |
| 282 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback()); | |
| 283 ASSERT_EQ(ERR_IO_PENDING, rv); | |
| 284 int64 new_offset = callback64.WaitForResult(); | |
| 285 EXPECT_EQ(kOffset, new_offset); | |
| 286 | |
| 287 rv = stream.Seek(base::File::FROM_CURRENT, kOffset, callback64.callback()); | |
| 288 ASSERT_EQ(ERR_IO_PENDING, rv); | |
| 289 new_offset = callback64.WaitForResult(); | |
| 290 EXPECT_EQ(2 * kOffset, new_offset); | |
| 291 | |
| 292 rv = stream.Seek(base::File::FROM_CURRENT, -kOffset, callback64.callback()); | |
| 293 ASSERT_EQ(ERR_IO_PENDING, rv); | |
| 294 new_offset = callback64.WaitForResult(); | |
| 295 EXPECT_EQ(kOffset, new_offset); | |
| 296 | |
| 297 const int kTestDataLen = arraysize(kTestData) - 1; | |
| 298 | |
| 299 rv = stream.Seek(base::File::FROM_END, -kTestDataLen, callback64.callback()); | |
| 300 ASSERT_EQ(ERR_IO_PENDING, rv); | |
| 301 new_offset = callback64.WaitForResult(); | |
| 302 EXPECT_EQ(0, new_offset); | |
| 303 } | |
| 304 | |
| 305 TEST_F(FileStreamTest, Write) { | 266 TEST_F(FileStreamTest, Write) { |
| 306 FileStream stream(base::MessageLoopProxy::current()); | 267 FileStream stream(base::MessageLoopProxy::current()); |
| 307 int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | | 268 int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | |
| 308 base::File::FLAG_ASYNC; | 269 base::File::FLAG_ASYNC; |
| 309 TestCompletionCallback callback; | 270 TestCompletionCallback callback; |
| 310 int rv = stream.Open(temp_file_path(), flags, callback.callback()); | 271 int rv = stream.Open(temp_file_path(), flags, callback.callback()); |
| 311 EXPECT_EQ(OK, callback.GetResult(rv)); | 272 EXPECT_EQ(OK, callback.GetResult(rv)); |
| 312 | 273 |
| 313 int64 file_size; | 274 int64 file_size; |
| 314 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); | 275 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 | 322 |
| 362 FileStream stream(base::MessageLoopProxy::current()); | 323 FileStream stream(base::MessageLoopProxy::current()); |
| 363 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | | 324 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | |
| 364 base::File::FLAG_ASYNC; | 325 base::File::FLAG_ASYNC; |
| 365 TestCompletionCallback callback; | 326 TestCompletionCallback callback; |
| 366 int rv = stream.Open(temp_file_path(), flags, callback.callback()); | 327 int rv = stream.Open(temp_file_path(), flags, callback.callback()); |
| 367 EXPECT_EQ(ERR_IO_PENDING, rv); | 328 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 368 EXPECT_EQ(OK, callback.WaitForResult()); | 329 EXPECT_EQ(OK, callback.WaitForResult()); |
| 369 | 330 |
| 370 TestInt64CompletionCallback callback64; | 331 TestInt64CompletionCallback callback64; |
| 371 const int64 kOffset = 0; | 332 const int64 kOffset = kTestDataSize; |
| 372 rv = stream.Seek(base::File::FROM_END, kOffset, callback64.callback()); | 333 rv = stream.Seek(kOffset, callback64.callback()); |
| 373 ASSERT_EQ(ERR_IO_PENDING, rv); | 334 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 374 int64 new_offset = callback64.WaitForResult(); | 335 int64 new_offset = callback64.WaitForResult(); |
| 375 EXPECT_EQ(kTestDataSize, new_offset); | 336 EXPECT_EQ(kTestDataSize, new_offset); |
| 376 | 337 |
| 377 int total_bytes_written = 0; | 338 int total_bytes_written = 0; |
| 378 | 339 |
| 379 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 340 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 380 scoped_refptr<DrainableIOBuffer> drainable = | 341 scoped_refptr<DrainableIOBuffer> drainable = |
| 381 new DrainableIOBuffer(buf.get(), buf->size()); | 342 new DrainableIOBuffer(buf.get(), buf->size()); |
| 382 while (total_bytes_written != kTestDataSize) { | 343 while (total_bytes_written != kTestDataSize) { |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 scoped_ptr<FileStream> stream( | 415 scoped_ptr<FileStream> stream( |
| 455 new FileStream(base::MessageLoopProxy::current())); | 416 new FileStream(base::MessageLoopProxy::current())); |
| 456 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | | 417 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | |
| 457 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; | 418 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; |
| 458 TestCompletionCallback callback; | 419 TestCompletionCallback callback; |
| 459 int rv = stream->Open(temp_file_path(), flags, callback.callback()); | 420 int rv = stream->Open(temp_file_path(), flags, callback.callback()); |
| 460 EXPECT_EQ(ERR_IO_PENDING, rv); | 421 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 461 EXPECT_EQ(OK, callback.WaitForResult()); | 422 EXPECT_EQ(OK, callback.WaitForResult()); |
| 462 | 423 |
| 463 TestInt64CompletionCallback callback64; | 424 TestInt64CompletionCallback callback64; |
| 464 rv = stream->Seek(base::File::FROM_END, 0, callback64.callback()); | 425 rv = stream->Seek(file_size, callback64.callback()); |
| 465 ASSERT_EQ(ERR_IO_PENDING, rv); | 426 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 466 int64 offset = callback64.WaitForResult(); | 427 int64 offset = callback64.WaitForResult(); |
| 467 EXPECT_EQ(offset, file_size); | 428 EXPECT_EQ(offset, file_size); |
| 468 | 429 |
| 469 int total_bytes_written = 0; | 430 int total_bytes_written = 0; |
| 470 | 431 |
| 471 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 432 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 472 scoped_refptr<DrainableIOBuffer> drainable = | 433 scoped_refptr<DrainableIOBuffer> drainable = |
| 473 new DrainableIOBuffer(buf.get(), buf->size()); | 434 new DrainableIOBuffer(buf.get(), buf->size()); |
| 474 while (total_bytes_written != kTestDataSize) { | 435 while (total_bytes_written != kTestDataSize) { |
| 475 rv = stream->Write(drainable.get(), drainable->BytesRemaining(), | 436 rv = stream->Write(drainable.get(), drainable->BytesRemaining(), |
| 476 callback.callback()); | 437 callback.callback()); |
| 477 if (rv == ERR_IO_PENDING) | 438 if (rv == ERR_IO_PENDING) |
| 478 rv = callback.WaitForResult(); | 439 rv = callback.WaitForResult(); |
| 479 EXPECT_LT(0, rv); | 440 EXPECT_LT(0, rv); |
| 480 if (rv <= 0) | 441 if (rv <= 0) |
| 481 break; | 442 break; |
| 482 drainable->DidConsume(rv); | 443 drainable->DidConsume(rv); |
| 483 total_bytes_written += rv; | 444 total_bytes_written += rv; |
| 484 } | 445 } |
| 485 | 446 |
| 486 EXPECT_EQ(kTestDataSize, total_bytes_written); | 447 EXPECT_EQ(kTestDataSize, total_bytes_written); |
| 487 | 448 |
| 488 rv = stream->Seek(base::File::FROM_BEGIN, 0, callback64.callback()); | 449 rv = stream->Seek(0, callback64.callback()); |
| 489 ASSERT_EQ(ERR_IO_PENDING, rv); | 450 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 490 offset = callback64.WaitForResult(); | 451 offset = callback64.WaitForResult(); |
| 491 EXPECT_EQ(0, offset); | 452 EXPECT_EQ(0, offset); |
| 492 | 453 |
| 493 int total_bytes_read = 0; | 454 int total_bytes_read = 0; |
| 494 | 455 |
| 495 std::string data_read; | 456 std::string data_read; |
| 496 for (;;) { | 457 for (;;) { |
| 497 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); | 458 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); |
| 498 rv = stream->Read(buf.get(), buf->size(), callback.callback()); | 459 rv = stream->Read(buf.get(), buf->size(), callback.callback()); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 rv = stream_->Write( | 542 rv = stream_->Write( |
| 582 drainable_.get(), drainable_->BytesRemaining(), callback.callback()); | 543 drainable_.get(), drainable_->BytesRemaining(), callback.callback()); |
| 583 DCHECK_EQ(ERR_IO_PENDING, rv); | 544 DCHECK_EQ(ERR_IO_PENDING, rv); |
| 584 rv = callback.WaitForResult(); | 545 rv = callback.WaitForResult(); |
| 585 drainable_->DidConsume(total_bytes_written); | 546 drainable_->DidConsume(total_bytes_written); |
| 586 *total_bytes_written_ += total_bytes_written; | 547 *total_bytes_written_ += total_bytes_written; |
| 587 *total_bytes_read_ += total_bytes_read; | 548 *total_bytes_read_ += total_bytes_read; |
| 588 *data_read_ += data_read; | 549 *data_read_ += data_read; |
| 589 } else { // We're done writing all data. Start reading the data. | 550 } else { // We're done writing all data. Start reading the data. |
| 590 TestInt64CompletionCallback callback64; | 551 TestInt64CompletionCallback callback64; |
| 591 EXPECT_EQ(ERR_IO_PENDING, | 552 EXPECT_EQ(ERR_IO_PENDING, stream_->Seek(0, callback64.callback())); |
| 592 stream_->Seek(base::File::FROM_BEGIN, 0, | |
| 593 callback64.callback())); | |
| 594 { | 553 { |
| 595 base::MessageLoop::ScopedNestableTaskAllower allow( | 554 base::MessageLoop::ScopedNestableTaskAllower allow( |
| 596 base::MessageLoop::current()); | 555 base::MessageLoop::current()); |
| 597 EXPECT_LE(0, callback64.WaitForResult()); | 556 EXPECT_LE(0, callback64.WaitForResult()); |
| 598 } | 557 } |
| 599 } | 558 } |
| 600 | 559 |
| 601 result_ = *total_bytes_written_; | 560 result_ = *total_bytes_written_; |
| 602 have_result_ = true; | 561 have_result_ = true; |
| 603 if (waiting_for_result_) | 562 if (waiting_for_result_) |
| (...skipping 21 matching lines...) Expand all Loading... |
| 625 scoped_ptr<FileStream> stream( | 584 scoped_ptr<FileStream> stream( |
| 626 new FileStream(base::MessageLoopProxy::current())); | 585 new FileStream(base::MessageLoopProxy::current())); |
| 627 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | | 586 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | |
| 628 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; | 587 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; |
| 629 TestCompletionCallback open_callback; | 588 TestCompletionCallback open_callback; |
| 630 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); | 589 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); |
| 631 EXPECT_EQ(ERR_IO_PENDING, rv); | 590 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 632 EXPECT_EQ(OK, open_callback.WaitForResult()); | 591 EXPECT_EQ(OK, open_callback.WaitForResult()); |
| 633 | 592 |
| 634 TestInt64CompletionCallback callback64; | 593 TestInt64CompletionCallback callback64; |
| 635 EXPECT_EQ(ERR_IO_PENDING, | 594 EXPECT_EQ(ERR_IO_PENDING, stream->Seek(file_size, callback64.callback())); |
| 636 stream->Seek(base::File::FROM_END, 0, callback64.callback())); | |
| 637 EXPECT_EQ(file_size, callback64.WaitForResult()); | 595 EXPECT_EQ(file_size, callback64.WaitForResult()); |
| 638 | 596 |
| 639 int total_bytes_written = 0; | 597 int total_bytes_written = 0; |
| 640 int total_bytes_read = 0; | 598 int total_bytes_read = 0; |
| 641 std::string data_read; | 599 std::string data_read; |
| 642 TestWriteReadCompletionCallback callback(stream.get(), &total_bytes_written, | 600 TestWriteReadCompletionCallback callback(stream.get(), &total_bytes_written, |
| 643 &total_bytes_read, &data_read); | 601 &total_bytes_read, &data_read); |
| 644 | 602 |
| 645 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 603 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 646 rv = stream->Write(buf.get(), buf->size(), callback.callback()); | 604 rv = stream->Write(buf.get(), buf->size(), callback.callback()); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 732 scoped_ptr<FileStream> stream( | 690 scoped_ptr<FileStream> stream( |
| 733 new FileStream(base::MessageLoopProxy::current())); | 691 new FileStream(base::MessageLoopProxy::current())); |
| 734 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | | 692 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | |
| 735 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; | 693 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; |
| 736 TestCompletionCallback open_callback; | 694 TestCompletionCallback open_callback; |
| 737 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); | 695 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); |
| 738 EXPECT_EQ(ERR_IO_PENDING, rv); | 696 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 739 EXPECT_EQ(OK, open_callback.WaitForResult()); | 697 EXPECT_EQ(OK, open_callback.WaitForResult()); |
| 740 | 698 |
| 741 TestInt64CompletionCallback callback64; | 699 TestInt64CompletionCallback callback64; |
| 742 EXPECT_EQ(ERR_IO_PENDING, | 700 EXPECT_EQ(ERR_IO_PENDING, stream->Seek(file_size, callback64.callback())); |
| 743 stream->Seek(base::File::FROM_END, 0, callback64.callback())); | |
| 744 EXPECT_EQ(file_size, callback64.WaitForResult()); | 701 EXPECT_EQ(file_size, callback64.WaitForResult()); |
| 745 | 702 |
| 746 int total_bytes_written = 0; | 703 int total_bytes_written = 0; |
| 747 TestWriteCloseCompletionCallback callback(stream.get(), &total_bytes_written); | 704 TestWriteCloseCompletionCallback callback(stream.get(), &total_bytes_written); |
| 748 | 705 |
| 749 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 706 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 750 rv = stream->Write(buf.get(), buf->size(), callback.callback()); | 707 rv = stream->Write(buf.get(), buf->size(), callback.callback()); |
| 751 if (rv == ERR_IO_PENDING) | 708 if (rv == ERR_IO_PENDING) |
| 752 total_bytes_written = callback.WaitForResult(); | 709 total_bytes_written = callback.WaitForResult(); |
| 753 EXPECT_LT(0, total_bytes_written); | 710 EXPECT_LT(0, total_bytes_written); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 879 total_bytes_read += rv; | 836 total_bytes_read += rv; |
| 880 data_read.append(buf->data(), rv); | 837 data_read.append(buf->data(), rv); |
| 881 } | 838 } |
| 882 EXPECT_EQ(file_size, total_bytes_read); | 839 EXPECT_EQ(file_size, total_bytes_read); |
| 883 } | 840 } |
| 884 #endif | 841 #endif |
| 885 | 842 |
| 886 } // namespace | 843 } // namespace |
| 887 | 844 |
| 888 } // namespace net | 845 } // namespace net |
| OLD | NEW |