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 |