Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(380)

Side by Side Diff: net/base/file_stream_unittest.cc

Issue 1148383003: Only support seeking file streams from the beginning of the file. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698