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

Side by Side Diff: ppapi/tests/test_file_io.cc

Issue 7387011: Clean up the file dev interfaces. The combination of some dev and some non (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « ppapi/tests/test_file_io.h ('k') | ppapi/tests/test_file_system.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ppapi/tests/test_file_io.h" 5 #include "ppapi/tests/test_file_io.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "ppapi/c/dev/ppb_testing_dev.h"
11 #include "ppapi/c/pp_errors.h" 12 #include "ppapi/c/pp_errors.h"
12 #include "ppapi/c/dev/ppb_file_io_dev.h" 13 #include "ppapi/c/ppb_file_io.h"
13 #include "ppapi/c/dev/ppb_testing_dev.h" 14 #include "ppapi/cpp/dev/file_io.h"
14 #include "ppapi/cpp/dev/file_io_dev.h" 15 #include "ppapi/cpp/dev/file_ref.h"
dmichael (off chromium) 2011/07/15 16:31:46 missed dev in the directory of these two
15 #include "ppapi/cpp/dev/file_ref_dev.h"
16 #include "ppapi/cpp/dev/file_system_dev.h" 16 #include "ppapi/cpp/dev/file_system_dev.h"
17 #include "ppapi/cpp/instance.h" 17 #include "ppapi/cpp/instance.h"
18 #include "ppapi/cpp/module.h" 18 #include "ppapi/cpp/module.h"
19 #include "ppapi/tests/test_utils.h" 19 #include "ppapi/tests/test_utils.h"
20 #include "ppapi/tests/testing_instance.h" 20 #include "ppapi/tests/testing_instance.h"
21 21
22 REGISTER_TEST_CASE(FileIO); 22 REGISTER_TEST_CASE(FileIO);
23 23
24 namespace { 24 namespace {
25 25
(...skipping 26 matching lines...) Expand all
52 result += kFlagNames[index]; 52 result += kFlagNames[index];
53 } 53 }
54 } 54 }
55 if (first_flag) 55 if (first_flag)
56 result += "[None]"; 56 result += "[None]";
57 57
58 return result; 58 return result;
59 } 59 }
60 60
61 int32_t ReadEntireFile(PP_Instance instance, 61 int32_t ReadEntireFile(PP_Instance instance,
62 pp::FileIO_Dev* file_io, 62 pp::FileIO* file_io,
63 int32_t offset, 63 int32_t offset,
64 std::string* data) { 64 std::string* data) {
65 TestCompletionCallback callback(instance); 65 TestCompletionCallback callback(instance);
66 char buf[256]; 66 char buf[256];
67 int32_t read_offset = offset; 67 int32_t read_offset = offset;
68 68
69 for (;;) { 69 for (;;) {
70 int32_t rv = file_io->Read(read_offset, buf, sizeof(buf), callback); 70 int32_t rv = file_io->Read(read_offset, buf, sizeof(buf), callback);
71 if (rv == PP_OK_COMPLETIONPENDING) 71 if (rv == PP_OK_COMPLETIONPENDING)
72 rv = callback.WaitForResult(); 72 rv = callback.WaitForResult();
73 if (rv < 0) 73 if (rv < 0)
74 return rv; 74 return rv;
75 if (rv == 0) 75 if (rv == 0)
76 break; 76 break;
77 read_offset += rv; 77 read_offset += rv;
78 data->append(buf, rv); 78 data->append(buf, rv);
79 } 79 }
80 80
81 return PP_OK; 81 return PP_OK;
82 } 82 }
83 83
84 int32_t WriteEntireBuffer(PP_Instance instance, 84 int32_t WriteEntireBuffer(PP_Instance instance,
85 pp::FileIO_Dev* file_io, 85 pp::FileIO* file_io,
86 int32_t offset, 86 int32_t offset,
87 const std::string& data) { 87 const std::string& data) {
88 TestCompletionCallback callback(instance); 88 TestCompletionCallback callback(instance);
89 int32_t write_offset = offset; 89 int32_t write_offset = offset;
90 const char* buf = data.c_str(); 90 const char* buf = data.c_str();
91 int32_t size = data.size(); 91 int32_t size = data.size();
92 92
93 while (write_offset < offset + size) { 93 while (write_offset < offset + size) {
94 int32_t rv = file_io->Write(write_offset, &buf[write_offset - offset], 94 int32_t rv = file_io->Write(write_offset, &buf[write_offset - offset],
95 size - write_offset + offset, callback); 95 size - write_offset + offset, callback);
(...skipping 25 matching lines...) Expand all
121 RUN_TEST_FORCEASYNC_AND_NOT(NotAllowMixedReadWrite); 121 RUN_TEST_FORCEASYNC_AND_NOT(NotAllowMixedReadWrite);
122 122
123 // TODO(viettrungluu): add tests: 123 // TODO(viettrungluu): add tests:
124 // - that PP_ERROR_PENDING is correctly returned 124 // - that PP_ERROR_PENDING is correctly returned
125 // - that operations respect the file open modes (flags) 125 // - that operations respect the file open modes (flags)
126 } 126 }
127 127
128 std::string TestFileIO::TestOpen() { 128 std::string TestFileIO::TestOpen() {
129 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 129 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
130 130
131 pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); 131 pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
132 pp::FileRef_Dev file_ref(file_system, "/file_open"); 132 pp::FileRef file_ref(file_system, "/file_open");
133 int32_t rv = file_system.Open(1024, callback); 133 int32_t rv = file_system.Open(1024, callback);
134 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 134 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
135 return ReportError("FileSystem::Open force_async", rv); 135 return ReportError("FileSystem::Open force_async", rv);
136 if (rv == PP_OK_COMPLETIONPENDING) 136 if (rv == PP_OK_COMPLETIONPENDING)
137 rv = callback.WaitForResult(); 137 rv = callback.WaitForResult();
138 if (rv != PP_OK) 138 if (rv != PP_OK)
139 return ReportError("FileSystem::Open", rv); 139 return ReportError("FileSystem::Open", rv);
140 140
141 std::string result; 141 std::string result;
142 result = MatchOpenExpectations( 142 result = MatchOpenExpectations(
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 INVALID_FLAG_COMBINATION); 219 INVALID_FLAG_COMBINATION);
220 if (!result.empty()) 220 if (!result.empty())
221 return result; 221 return result;
222 222
223 PASS(); 223 PASS();
224 } 224 }
225 225
226 std::string TestFileIO::TestReadWriteSetLength() { 226 std::string TestFileIO::TestReadWriteSetLength() {
227 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 227 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
228 228
229 pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); 229 pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
230 pp::FileRef_Dev file_ref(file_system, "/file_read_write_setlength"); 230 pp::FileRef file_ref(file_system, "/file_read_write_setlength");
231 int32_t rv = file_system.Open(1024, callback); 231 int32_t rv = file_system.Open(1024, callback);
232 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 232 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
233 return ReportError("FileSystem::Open force_async", rv); 233 return ReportError("FileSystem::Open force_async", rv);
234 if (rv == PP_OK_COMPLETIONPENDING) 234 if (rv == PP_OK_COMPLETIONPENDING)
235 rv = callback.WaitForResult(); 235 rv = callback.WaitForResult();
236 if (rv != PP_OK) 236 if (rv != PP_OK)
237 return ReportError("FileSystem::Open", rv); 237 return ReportError("FileSystem::Open", rv);
238 238
239 pp::FileIO_Dev file_io(instance_); 239 pp::FileIO file_io(instance_);
240 rv = file_io.Open(file_ref, 240 rv = file_io.Open(file_ref,
241 PP_FILEOPENFLAG_CREATE | 241 PP_FILEOPENFLAG_CREATE |
242 PP_FILEOPENFLAG_TRUNCATE | 242 PP_FILEOPENFLAG_TRUNCATE |
243 PP_FILEOPENFLAG_READ | 243 PP_FILEOPENFLAG_READ |
244 PP_FILEOPENFLAG_WRITE, 244 PP_FILEOPENFLAG_WRITE,
245 callback); 245 callback);
246 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 246 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
247 return ReportError("FileIO::Open force_async", rv); 247 return ReportError("FileIO::Open force_async", rv);
248 if (rv == PP_OK_COMPLETIONPENDING) 248 if (rv == PP_OK_COMPLETIONPENDING)
249 rv = callback.WaitForResult(); 249 rv = callback.WaitForResult();
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 if (read_buffer != std::string("testtest\0\0\0\0", 12)) 342 if (read_buffer != std::string("testtest\0\0\0\0", 12))
343 return ReportMismatch("FileIO::Read", read_buffer, 343 return ReportMismatch("FileIO::Read", read_buffer,
344 std::string("testtest\0\0\0\0", 12)); 344 std::string("testtest\0\0\0\0", 12));
345 345
346 PASS(); 346 PASS();
347 } 347 }
348 348
349 std::string TestFileIO::TestTouchQuery() { 349 std::string TestFileIO::TestTouchQuery() {
350 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 350 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
351 351
352 pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); 352 pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
353 int32_t rv = file_system.Open(1024, callback); 353 int32_t rv = file_system.Open(1024, callback);
354 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 354 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
355 return ReportError("FileSystem::Open force_async", rv); 355 return ReportError("FileSystem::Open force_async", rv);
356 if (rv == PP_OK_COMPLETIONPENDING) 356 if (rv == PP_OK_COMPLETIONPENDING)
357 rv = callback.WaitForResult(); 357 rv = callback.WaitForResult();
358 if (rv != PP_OK) 358 if (rv != PP_OK)
359 return ReportError("FileSystem::Open", rv); 359 return ReportError("FileSystem::Open", rv);
360 360
361 pp::FileRef_Dev file_ref(file_system, "/file_touch"); 361 pp::FileRef file_ref(file_system, "/file_touch");
362 pp::FileIO_Dev file_io(instance_); 362 pp::FileIO file_io(instance_);
363 rv = file_io.Open(file_ref, 363 rv = file_io.Open(file_ref,
364 PP_FILEOPENFLAG_CREATE | 364 PP_FILEOPENFLAG_CREATE |
365 PP_FILEOPENFLAG_TRUNCATE | 365 PP_FILEOPENFLAG_TRUNCATE |
366 PP_FILEOPENFLAG_WRITE, 366 PP_FILEOPENFLAG_WRITE,
367 callback); 367 callback);
368 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 368 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
369 return ReportError("FileIO::Open force_async", rv); 369 return ReportError("FileIO::Open force_async", rv);
370 if (rv == PP_OK_COMPLETIONPENDING) 370 if (rv == PP_OK_COMPLETIONPENDING)
371 rv = callback.WaitForResult(); 371 rv = callback.WaitForResult();
372 if (rv != PP_OK) 372 if (rv != PP_OK)
(...skipping 13 matching lines...) Expand all
386 const PP_Time last_access_time = 123 * 24 * 3600.0; 386 const PP_Time last_access_time = 123 * 24 * 3600.0;
387 const PP_Time last_modified_time = 246.0; 387 const PP_Time last_modified_time = 246.0;
388 rv = file_io.Touch(last_access_time, last_modified_time, callback); 388 rv = file_io.Touch(last_access_time, last_modified_time, callback);
389 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 389 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
390 return ReportError("FileIO::Touch force_async", rv); 390 return ReportError("FileIO::Touch force_async", rv);
391 if (rv == PP_OK_COMPLETIONPENDING) 391 if (rv == PP_OK_COMPLETIONPENDING)
392 rv = callback.WaitForResult(); 392 rv = callback.WaitForResult();
393 if (rv != PP_OK) 393 if (rv != PP_OK)
394 return ReportError("FileIO::Touch", rv); 394 return ReportError("FileIO::Touch", rv);
395 395
396 PP_FileInfo_Dev info; 396 PP_FileInfo info;
397 rv = file_io.Query(&info, callback); 397 rv = file_io.Query(&info, callback);
398 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 398 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
399 return ReportError("FileIO::Query force_async", rv); 399 return ReportError("FileIO::Query force_async", rv);
400 if (rv == PP_OK_COMPLETIONPENDING) 400 if (rv == PP_OK_COMPLETIONPENDING)
401 rv = callback.WaitForResult(); 401 rv = callback.WaitForResult();
402 if (rv != PP_OK) 402 if (rv != PP_OK)
403 return ReportError("FileIO::Query", rv); 403 return ReportError("FileIO::Query", rv);
404 404
405 if ((info.size != 4) || 405 if ((info.size != 4) ||
406 (info.type != PP_FILETYPE_REGULAR) || 406 (info.type != PP_FILETYPE_REGULAR) ||
(...skipping 10 matching lines...) Expand all
417 rv = callback.WaitForResult(); 417 rv = callback.WaitForResult();
418 if (rv != PP_OK) 418 if (rv != PP_OK)
419 return ReportError("FileIO::Query", rv); 419 return ReportError("FileIO::Query", rv);
420 420
421 PASS(); 421 PASS();
422 } 422 }
423 423
424 std::string TestFileIO::TestAbortCalls() { 424 std::string TestFileIO::TestAbortCalls() {
425 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 425 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
426 426
427 pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); 427 pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
428 pp::FileRef_Dev file_ref(file_system, "/file_abort_calls"); 428 pp::FileRef file_ref(file_system, "/file_abort_calls");
429 int32_t rv = file_system.Open(1024, callback); 429 int32_t rv = file_system.Open(1024, callback);
430 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 430 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
431 return ReportError("FileSystem::Open force_async", rv); 431 return ReportError("FileSystem::Open force_async", rv);
432 if (rv == PP_OK_COMPLETIONPENDING) 432 if (rv == PP_OK_COMPLETIONPENDING)
433 rv = callback.WaitForResult(); 433 rv = callback.WaitForResult();
434 if (rv != PP_OK) 434 if (rv != PP_OK)
435 return ReportError("FileSystem::Open", rv); 435 return ReportError("FileSystem::Open", rv);
436 436
437 // First, create a file which to do ops on. 437 // First, create a file which to do ops on.
438 { 438 {
439 pp::FileIO_Dev file_io(instance_); 439 pp::FileIO file_io(instance_);
440 rv = file_io.Open(file_ref, 440 rv = file_io.Open(file_ref,
441 PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE, 441 PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE,
442 callback); 442 callback);
443 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 443 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
444 return ReportError("FileIO::Open force_async", rv); 444 return ReportError("FileIO::Open force_async", rv);
445 if (rv == PP_OK_COMPLETIONPENDING) 445 if (rv == PP_OK_COMPLETIONPENDING)
446 rv = callback.WaitForResult(); 446 rv = callback.WaitForResult();
447 if (rv != PP_OK) 447 if (rv != PP_OK)
448 return ReportError("FileIO::Open", rv); 448 return ReportError("FileIO::Open", rv);
449 449
450 // N.B.: Should write at least 3 bytes. 450 // N.B.: Should write at least 3 bytes.
451 rv = WriteEntireBuffer(instance_->pp_instance(), 451 rv = WriteEntireBuffer(instance_->pp_instance(),
452 &file_io, 452 &file_io,
453 0, 453 0,
454 "foobarbazquux"); 454 "foobarbazquux");
455 if (rv != PP_OK) 455 if (rv != PP_OK)
456 return ReportError("FileIO::Write", rv); 456 return ReportError("FileIO::Write", rv);
457 } 457 }
458 458
459 // Abort |Open()|. 459 // Abort |Open()|.
460 { 460 {
461 callback.reset_run_count(); 461 callback.reset_run_count();
462 rv = pp::FileIO_Dev(instance_) 462 rv = pp::FileIO(instance_)
463 .Open(file_ref, PP_FILEOPENFLAG_READ,callback); 463 .Open(file_ref, PP_FILEOPENFLAG_READ,callback);
464 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 464 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
465 return ReportError("FileIO::Open force_async", rv); 465 return ReportError("FileIO::Open force_async", rv);
466 if (callback.run_count() > 0) 466 if (callback.run_count() > 0)
467 return "FileIO::Open ran callback synchronously."; 467 return "FileIO::Open ran callback synchronously.";
468 if (rv == PP_OK_COMPLETIONPENDING) { 468 if (rv == PP_OK_COMPLETIONPENDING) {
469 rv = callback.WaitForResult(); 469 rv = callback.WaitForResult();
470 if (rv != PP_ERROR_ABORTED) 470 if (rv != PP_ERROR_ABORTED)
471 return "FileIO::Open not aborted."; 471 return "FileIO::Open not aborted.";
472 } else if (rv != PP_OK) { 472 } else if (rv != PP_OK) {
473 return ReportError("FileIO::Open", rv); 473 return ReportError("FileIO::Open", rv);
474 } 474 }
475 } 475 }
476 476
477 // Abort |Query()|. 477 // Abort |Query()|.
478 { 478 {
479 PP_FileInfo_Dev info = { 0 }; 479 PP_FileInfo info = { 0 };
480 { 480 {
481 pp::FileIO_Dev file_io(instance_); 481 pp::FileIO file_io(instance_);
482 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback); 482 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
483 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 483 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
484 return ReportError("FileIO::Open force_async", rv); 484 return ReportError("FileIO::Open force_async", rv);
485 if (rv == PP_OK_COMPLETIONPENDING) 485 if (rv == PP_OK_COMPLETIONPENDING)
486 rv = callback.WaitForResult(); 486 rv = callback.WaitForResult();
487 if (rv != PP_OK) 487 if (rv != PP_OK)
488 return ReportError("FileIO::Open", rv); 488 return ReportError("FileIO::Open", rv);
489 489
490 callback.reset_run_count(); 490 callback.reset_run_count();
491 rv = file_io.Query(&info, callback); 491 rv = file_io.Query(&info, callback);
492 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 492 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
493 return ReportError("FileIO::Query force_async", rv); 493 return ReportError("FileIO::Query force_async", rv);
494 } // Destroy |file_io|. 494 } // Destroy |file_io|.
495 if (rv == PP_OK_COMPLETIONPENDING) { 495 if (rv == PP_OK_COMPLETIONPENDING) {
496 // Save a copy and make sure |info| doesn't get written to. 496 // Save a copy and make sure |info| doesn't get written to.
497 PP_FileInfo_Dev info_copy; 497 PP_FileInfo info_copy;
498 memcpy(&info_copy, &info, sizeof(info)); 498 memcpy(&info_copy, &info, sizeof(info));
499 rv = callback.WaitForResult(); 499 rv = callback.WaitForResult();
500 if (rv != PP_ERROR_ABORTED) 500 if (rv != PP_ERROR_ABORTED)
501 return "FileIO::Query not aborted."; 501 return "FileIO::Query not aborted.";
502 if (memcmp(&info_copy, &info, sizeof(info)) != 0) 502 if (memcmp(&info_copy, &info, sizeof(info)) != 0)
503 return "FileIO::Query wrote data after resource destruction."; 503 return "FileIO::Query wrote data after resource destruction.";
504 } else if (rv != PP_OK) { 504 } else if (rv != PP_OK) {
505 return ReportError("FileIO::Query", rv); 505 return ReportError("FileIO::Query", rv);
506 } 506 }
507 } 507 }
508 508
509 // Abort |Touch()|. 509 // Abort |Touch()|.
510 { 510 {
511 { 511 {
512 pp::FileIO_Dev file_io(instance_); 512 pp::FileIO file_io(instance_);
513 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_WRITE, callback); 513 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_WRITE, callback);
514 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 514 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
515 return ReportError("FileIO::Open force_async", rv); 515 return ReportError("FileIO::Open force_async", rv);
516 if (rv == PP_OK_COMPLETIONPENDING) 516 if (rv == PP_OK_COMPLETIONPENDING)
517 rv = callback.WaitForResult(); 517 rv = callback.WaitForResult();
518 if (rv != PP_OK) 518 if (rv != PP_OK)
519 return ReportError("FileIO::Open", rv); 519 return ReportError("FileIO::Open", rv);
520 520
521 callback.reset_run_count(); 521 callback.reset_run_count();
522 rv = file_io.Touch(0, 0, callback); 522 rv = file_io.Touch(0, 0, callback);
523 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 523 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
524 return ReportError("FileIO::Touch force_async", rv); 524 return ReportError("FileIO::Touch force_async", rv);
525 } // Destroy |file_io|. 525 } // Destroy |file_io|.
526 if (rv == PP_OK_COMPLETIONPENDING) { 526 if (rv == PP_OK_COMPLETIONPENDING) {
527 rv = callback.WaitForResult(); 527 rv = callback.WaitForResult();
528 if (rv != PP_ERROR_ABORTED) 528 if (rv != PP_ERROR_ABORTED)
529 return "FileIO::Touch not aborted."; 529 return "FileIO::Touch not aborted.";
530 } else if (rv != PP_OK) { 530 } else if (rv != PP_OK) {
531 return ReportError("FileIO::Touch", rv); 531 return ReportError("FileIO::Touch", rv);
532 } 532 }
533 } 533 }
534 534
535 // Abort |Read()|. 535 // Abort |Read()|.
536 { 536 {
537 char buf[3] = { 0 }; 537 char buf[3] = { 0 };
538 { 538 {
539 pp::FileIO_Dev file_io(instance_); 539 pp::FileIO file_io(instance_);
540 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback); 540 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
541 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 541 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
542 return ReportError("FileIO::Open force_async", rv); 542 return ReportError("FileIO::Open force_async", rv);
543 if (rv == PP_OK_COMPLETIONPENDING) 543 if (rv == PP_OK_COMPLETIONPENDING)
544 rv = callback.WaitForResult(); 544 rv = callback.WaitForResult();
545 if (rv != PP_OK) 545 if (rv != PP_OK)
546 return ReportError("FileIO::Open", rv); 546 return ReportError("FileIO::Open", rv);
547 547
548 callback.reset_run_count(); 548 callback.reset_run_count();
549 rv = file_io.Read(0, buf, sizeof(buf), callback); 549 rv = file_io.Read(0, buf, sizeof(buf), callback);
(...skipping 11 matching lines...) Expand all
561 return "FileIO::Read wrote data after resource destruction."; 561 return "FileIO::Read wrote data after resource destruction.";
562 } else if (rv != PP_OK) { 562 } else if (rv != PP_OK) {
563 return ReportError("FileIO::Read", rv); 563 return ReportError("FileIO::Read", rv);
564 } 564 }
565 } 565 }
566 566
567 // Abort |Write()|. 567 // Abort |Write()|.
568 { 568 {
569 char buf[3] = { 0 }; 569 char buf[3] = { 0 };
570 { 570 {
571 pp::FileIO_Dev file_io(instance_); 571 pp::FileIO file_io(instance_);
572 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback); 572 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
573 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 573 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
574 return ReportError("FileIO::Open force_async", rv); 574 return ReportError("FileIO::Open force_async", rv);
575 if (rv == PP_OK_COMPLETIONPENDING) 575 if (rv == PP_OK_COMPLETIONPENDING)
576 rv = callback.WaitForResult(); 576 rv = callback.WaitForResult();
577 if (rv != PP_OK) 577 if (rv != PP_OK)
578 return ReportError("FileIO::Open", rv); 578 return ReportError("FileIO::Open", rv);
579 579
580 callback.reset_run_count(); 580 callback.reset_run_count();
581 rv = file_io.Write(0, buf, sizeof(buf), callback); 581 rv = file_io.Write(0, buf, sizeof(buf), callback);
582 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 582 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
583 return ReportError("FileIO::Write force_async", rv); 583 return ReportError("FileIO::Write force_async", rv);
584 } // Destroy |file_io|. 584 } // Destroy |file_io|.
585 if (rv == PP_OK_COMPLETIONPENDING) { 585 if (rv == PP_OK_COMPLETIONPENDING) {
586 rv = callback.WaitForResult(); 586 rv = callback.WaitForResult();
587 if (rv != PP_ERROR_ABORTED) 587 if (rv != PP_ERROR_ABORTED)
588 return "FileIO::Write not aborted."; 588 return "FileIO::Write not aborted.";
589 } else if (rv != PP_OK) { 589 } else if (rv != PP_OK) {
590 return ReportError("FileIO::Write", rv); 590 return ReportError("FileIO::Write", rv);
591 } 591 }
592 } 592 }
593 593
594 // Abort |SetLength()|. 594 // Abort |SetLength()|.
595 { 595 {
596 { 596 {
597 pp::FileIO_Dev file_io(instance_); 597 pp::FileIO file_io(instance_);
598 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback); 598 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
599 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 599 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
600 return ReportError("FileIO::Open force_async", rv); 600 return ReportError("FileIO::Open force_async", rv);
601 if (rv == PP_OK_COMPLETIONPENDING) 601 if (rv == PP_OK_COMPLETIONPENDING)
602 rv = callback.WaitForResult(); 602 rv = callback.WaitForResult();
603 if (rv != PP_OK) 603 if (rv != PP_OK)
604 return ReportError("FileIO::Open", rv); 604 return ReportError("FileIO::Open", rv);
605 605
606 callback.reset_run_count(); 606 callback.reset_run_count();
607 rv = file_io.SetLength(3, callback); 607 rv = file_io.SetLength(3, callback);
608 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 608 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
609 return ReportError("FileIO::SetLength force_async", rv); 609 return ReportError("FileIO::SetLength force_async", rv);
610 } // Destroy |file_io|. 610 } // Destroy |file_io|.
611 if (rv == PP_OK_COMPLETIONPENDING) { 611 if (rv == PP_OK_COMPLETIONPENDING) {
612 rv = callback.WaitForResult(); 612 rv = callback.WaitForResult();
613 if (rv != PP_ERROR_ABORTED) 613 if (rv != PP_ERROR_ABORTED)
614 return "FileIO::SetLength not aborted."; 614 return "FileIO::SetLength not aborted.";
615 } else if (rv != PP_OK) { 615 } else if (rv != PP_OK) {
616 return ReportError("FileIO::SetLength", rv); 616 return ReportError("FileIO::SetLength", rv);
617 } 617 }
618 } 618 }
619 619
620 // Abort |Flush()|. 620 // Abort |Flush()|.
621 { 621 {
622 { 622 {
623 pp::FileIO_Dev file_io(instance_); 623 pp::FileIO file_io(instance_);
624 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback); 624 rv = file_io.Open(file_ref, PP_FILEOPENFLAG_READ, callback);
625 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 625 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
626 return ReportError("FileIO::Open force_async", rv); 626 return ReportError("FileIO::Open force_async", rv);
627 if (rv == PP_OK_COMPLETIONPENDING) 627 if (rv == PP_OK_COMPLETIONPENDING)
628 rv = callback.WaitForResult(); 628 rv = callback.WaitForResult();
629 if (rv != PP_OK) 629 if (rv != PP_OK)
630 return ReportError("FileIO::Open", rv); 630 return ReportError("FileIO::Open", rv);
631 631
632 callback.reset_run_count(); 632 callback.reset_run_count();
633 rv = file_io.Flush(callback); 633 rv = file_io.Flush(callback);
(...skipping 10 matching lines...) Expand all
644 } 644 }
645 645
646 // TODO(viettrungluu): Also test that Close() aborts callbacks. 646 // TODO(viettrungluu): Also test that Close() aborts callbacks.
647 // crbug.com/69457 647 // crbug.com/69457
648 648
649 PASS(); 649 PASS();
650 } 650 }
651 651
652 std::string TestFileIO::TestParallelReads() { 652 std::string TestFileIO::TestParallelReads() {
653 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 653 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
654 pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); 654 pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
655 pp::FileRef_Dev file_ref(file_system, "/file_parallel_reads"); 655 pp::FileRef file_ref(file_system, "/file_parallel_reads");
656 int32_t rv = file_system.Open(1024, callback); 656 int32_t rv = file_system.Open(1024, callback);
657 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 657 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
658 return ReportError("FileSystem::Open force_async", rv); 658 return ReportError("FileSystem::Open force_async", rv);
659 if (rv == PP_OK_COMPLETIONPENDING) 659 if (rv == PP_OK_COMPLETIONPENDING)
660 rv = callback.WaitForResult(); 660 rv = callback.WaitForResult();
661 if (rv != PP_OK) 661 if (rv != PP_OK)
662 return ReportError("FileSystem::Open", rv); 662 return ReportError("FileSystem::Open", rv);
663 663
664 pp::FileIO_Dev file_io(instance_); 664 pp::FileIO file_io(instance_);
665 rv = file_io.Open(file_ref, 665 rv = file_io.Open(file_ref,
666 PP_FILEOPENFLAG_CREATE | 666 PP_FILEOPENFLAG_CREATE |
667 PP_FILEOPENFLAG_TRUNCATE | 667 PP_FILEOPENFLAG_TRUNCATE |
668 PP_FILEOPENFLAG_READ | 668 PP_FILEOPENFLAG_READ |
669 PP_FILEOPENFLAG_WRITE, 669 PP_FILEOPENFLAG_WRITE,
670 callback); 670 callback);
671 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 671 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
672 return ReportError("FileIO::Open force_async", rv); 672 return ReportError("FileIO::Open force_async", rv);
673 if (rv == PP_OK_COMPLETIONPENDING) 673 if (rv == PP_OK_COMPLETIONPENDING)
674 rv = callback.WaitForResult(); 674 rv = callback.WaitForResult();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 sizeof(expected_result_2)) != 0) { 752 sizeof(expected_result_2)) != 0) {
753 return std::string( 753 return std::string(
754 "Parallel FileIO::Read operations have written into wrong buffers."); 754 "Parallel FileIO::Read operations have written into wrong buffers.");
755 } 755 }
756 756
757 PASS(); 757 PASS();
758 } 758 }
759 759
760 std::string TestFileIO::TestParallelWrites() { 760 std::string TestFileIO::TestParallelWrites() {
761 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 761 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
762 pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); 762 pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
763 pp::FileRef_Dev file_ref(file_system, "/file_parallel_writes"); 763 pp::FileRef file_ref(file_system, "/file_parallel_writes");
764 int32_t rv = file_system.Open(1024, callback); 764 int32_t rv = file_system.Open(1024, callback);
765 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 765 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
766 return ReportError("FileSystem::Open force_async", rv); 766 return ReportError("FileSystem::Open force_async", rv);
767 if (rv == PP_OK_COMPLETIONPENDING) 767 if (rv == PP_OK_COMPLETIONPENDING)
768 rv = callback.WaitForResult(); 768 rv = callback.WaitForResult();
769 if (rv != PP_OK) 769 if (rv != PP_OK)
770 return ReportError("FileSystem::Open", rv); 770 return ReportError("FileSystem::Open", rv);
771 771
772 pp::FileIO_Dev file_io(instance_); 772 pp::FileIO file_io(instance_);
773 rv = file_io.Open(file_ref, 773 rv = file_io.Open(file_ref,
774 PP_FILEOPENFLAG_CREATE | 774 PP_FILEOPENFLAG_CREATE |
775 PP_FILEOPENFLAG_TRUNCATE | 775 PP_FILEOPENFLAG_TRUNCATE |
776 PP_FILEOPENFLAG_READ | 776 PP_FILEOPENFLAG_READ |
777 PP_FILEOPENFLAG_WRITE, 777 PP_FILEOPENFLAG_WRITE,
778 callback); 778 callback);
779 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 779 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
780 return ReportError("FileIO::Open force_async", rv); 780 return ReportError("FileIO::Open force_async", rv);
781 if (rv == PP_OK_COMPLETIONPENDING) 781 if (rv == PP_OK_COMPLETIONPENDING)
782 rv = callback.WaitForResult(); 782 rv = callback.WaitForResult();
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 return ReportError("FileIO::Read", rv); 842 return ReportError("FileIO::Read", rv);
843 if (read_buffer != "abcdefghijkl") 843 if (read_buffer != "abcdefghijkl")
844 return ReportMismatch("FileIO::Read", read_buffer, "abcdefghijkl"); 844 return ReportMismatch("FileIO::Read", read_buffer, "abcdefghijkl");
845 845
846 PASS(); 846 PASS();
847 } 847 }
848 848
849 std::string TestFileIO::TestNotAllowMixedReadWrite() { 849 std::string TestFileIO::TestNotAllowMixedReadWrite() {
850 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 850 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
851 851
852 pp::FileSystem_Dev file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY); 852 pp::FileSystem file_system(instance_, PP_FILESYSTEMTYPE_LOCALTEMPORARY);
853 pp::FileRef_Dev file_ref(file_system, "/file_not_allow_mixed_read_write"); 853 pp::FileRef file_ref(file_system, "/file_not_allow_mixed_read_write");
854 int32_t rv = file_system.Open(1024, callback); 854 int32_t rv = file_system.Open(1024, callback);
855 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 855 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
856 return ReportError("FileSystem::Open force_async", rv); 856 return ReportError("FileSystem::Open force_async", rv);
857 if (rv == PP_OK_COMPLETIONPENDING) 857 if (rv == PP_OK_COMPLETIONPENDING)
858 rv = callback.WaitForResult(); 858 rv = callback.WaitForResult();
859 if (rv != PP_OK) 859 if (rv != PP_OK)
860 return ReportError("FileSystem::Open", rv); 860 return ReportError("FileSystem::Open", rv);
861 861
862 pp::FileIO_Dev file_io(instance_); 862 pp::FileIO file_io(instance_);
863 rv = file_io.Open(file_ref, 863 rv = file_io.Open(file_ref,
864 PP_FILEOPENFLAG_CREATE | 864 PP_FILEOPENFLAG_CREATE |
865 PP_FILEOPENFLAG_TRUNCATE | 865 PP_FILEOPENFLAG_TRUNCATE |
866 PP_FILEOPENFLAG_READ | 866 PP_FILEOPENFLAG_READ |
867 PP_FILEOPENFLAG_WRITE, 867 PP_FILEOPENFLAG_WRITE,
868 callback); 868 callback);
869 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 869 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
870 return ReportError("FileIO::Open force_async", rv); 870 return ReportError("FileIO::Open force_async", rv);
871 if (rv == PP_OK_COMPLETIONPENDING) 871 if (rv == PP_OK_COMPLETIONPENDING)
872 rv = callback.WaitForResult(); 872 rv = callback.WaitForResult();
(...skipping 19 matching lines...) Expand all
892 if (rv_2 == PP_OK_COMPLETIONPENDING) 892 if (rv_2 == PP_OK_COMPLETIONPENDING)
893 rv_2 = callback_2.WaitForResult(); 893 rv_2 = callback_2.WaitForResult();
894 if (rv_2 != PP_ERROR_INPROGRESS) 894 if (rv_2 != PP_ERROR_INPROGRESS)
895 return ReportError("FileIO::Read", rv_2); 895 return ReportError("FileIO::Read", rv_2);
896 896
897 callback_1.WaitForResult(); 897 callback_1.WaitForResult();
898 898
899 PASS(); 899 PASS();
900 } 900 }
901 901
902 std::string TestFileIO::MatchOpenExpectations(pp::FileSystem_Dev* file_system, 902 std::string TestFileIO::MatchOpenExpectations(pp::FileSystem* file_system,
903 size_t open_flags, 903 size_t open_flags,
904 size_t expectations) { 904 size_t expectations) {
905 std::string bad_argument = 905 std::string bad_argument =
906 "TestFileIO::MatchOpenExpectations has invalid input arguments."; 906 "TestFileIO::MatchOpenExpectations has invalid input arguments.";
907 bool invalid_combination = !!(expectations & INVALID_FLAG_COMBINATION); 907 bool invalid_combination = !!(expectations & INVALID_FLAG_COMBINATION);
908 if (invalid_combination) { 908 if (invalid_combination) {
909 if (expectations != INVALID_FLAG_COMBINATION) 909 if (expectations != INVALID_FLAG_COMBINATION)
910 return bad_argument; 910 return bad_argument;
911 } else { 911 } else {
912 // Validate that one and only one of <some_expectation> and 912 // Validate that one and only one of <some_expectation> and
913 // DONT_<some_expectation> is specified. 913 // DONT_<some_expectation> is specified.
914 for (size_t remains = expectations, end = END_OF_OPEN_EXPECATION_PAIRS; 914 for (size_t remains = expectations, end = END_OF_OPEN_EXPECATION_PAIRS;
915 end != 0; remains >>= 2, end >>= 2) { 915 end != 0; remains >>= 2, end >>= 2) {
916 if (!!(remains & 1) == !!(remains & 2)) 916 if (!!(remains & 1) == !!(remains & 2))
917 return bad_argument; 917 return bad_argument;
918 } 918 }
919 } 919 }
920 bool create_if_doesnt_exist = !!(expectations & CREATE_IF_DOESNT_EXIST); 920 bool create_if_doesnt_exist = !!(expectations & CREATE_IF_DOESNT_EXIST);
921 bool open_if_exists = !!(expectations & OPEN_IF_EXISTS); 921 bool open_if_exists = !!(expectations & OPEN_IF_EXISTS);
922 bool truncate_if_exists = !!(expectations & TRUNCATE_IF_EXISTS); 922 bool truncate_if_exists = !!(expectations & TRUNCATE_IF_EXISTS);
923 923
924 TestCompletionCallback callback(instance_->pp_instance(), force_async_); 924 TestCompletionCallback callback(instance_->pp_instance(), force_async_);
925 pp::FileRef_Dev existent_file_ref( 925 pp::FileRef existent_file_ref(
926 *file_system, "/match_open_expectation_existent_non_empty_file"); 926 *file_system, "/match_open_expectation_existent_non_empty_file");
927 pp::FileRef_Dev nonexistent_file_ref( 927 pp::FileRef nonexistent_file_ref(
928 *file_system, "/match_open_expectation_nonexistent_file"); 928 *file_system, "/match_open_expectation_nonexistent_file");
929 929
930 // Setup files for test. 930 // Setup files for test.
931 { 931 {
932 int32_t rv = existent_file_ref.Delete(callback); 932 int32_t rv = existent_file_ref.Delete(callback);
933 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 933 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
934 return ReportError("FileRef::Delete force_async", rv); 934 return ReportError("FileRef::Delete force_async", rv);
935 if (rv == PP_OK_COMPLETIONPENDING) 935 if (rv == PP_OK_COMPLETIONPENDING)
936 rv = callback.WaitForResult(); 936 rv = callback.WaitForResult();
937 if (rv != PP_OK && rv != PP_ERROR_FILENOTFOUND) 937 if (rv != PP_OK && rv != PP_ERROR_FILENOTFOUND)
938 return ReportError("FileRef::Delete", rv); 938 return ReportError("FileRef::Delete", rv);
939 939
940 rv = nonexistent_file_ref.Delete(callback); 940 rv = nonexistent_file_ref.Delete(callback);
941 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 941 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
942 return ReportError("FileRef::Delete force_async", rv); 942 return ReportError("FileRef::Delete force_async", rv);
943 if (rv == PP_OK_COMPLETIONPENDING) 943 if (rv == PP_OK_COMPLETIONPENDING)
944 rv = callback.WaitForResult(); 944 rv = callback.WaitForResult();
945 if (rv != PP_OK && rv != PP_ERROR_FILENOTFOUND) 945 if (rv != PP_OK && rv != PP_ERROR_FILENOTFOUND)
946 return ReportError("FileRef::Delete", rv); 946 return ReportError("FileRef::Delete", rv);
947 947
948 pp::FileIO_Dev existent_file_io(instance_); 948 pp::FileIO existent_file_io(instance_);
949 rv = existent_file_io.Open(existent_file_ref, 949 rv = existent_file_io.Open(existent_file_ref,
950 PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE, 950 PP_FILEOPENFLAG_CREATE | PP_FILEOPENFLAG_WRITE,
951 callback); 951 callback);
952 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 952 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
953 return ReportError("FileIO::Open force_async", rv); 953 return ReportError("FileIO::Open force_async", rv);
954 if (rv == PP_OK_COMPLETIONPENDING) 954 if (rv == PP_OK_COMPLETIONPENDING)
955 rv = callback.WaitForResult(); 955 rv = callback.WaitForResult();
956 if (rv != PP_OK) 956 if (rv != PP_OK)
957 return ReportError("FileIO::Open", rv); 957 return ReportError("FileIO::Open", rv);
958 958
959 rv = WriteEntireBuffer(instance_->pp_instance(), &existent_file_io, 0, 959 rv = WriteEntireBuffer(instance_->pp_instance(), &existent_file_io, 0,
960 "foobar"); 960 "foobar");
961 if (rv != PP_OK) 961 if (rv != PP_OK)
962 return ReportError("FileIO::Write", rv); 962 return ReportError("FileIO::Write", rv);
963 } 963 }
964 964
965 pp::FileIO_Dev existent_file_io(instance_); 965 pp::FileIO existent_file_io(instance_);
966 int32_t rv = existent_file_io.Open(existent_file_ref, open_flags, callback); 966 int32_t rv = existent_file_io.Open(existent_file_ref, open_flags, callback);
967 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 967 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
968 return ReportError("FileIO::Open force_async", rv); 968 return ReportError("FileIO::Open force_async", rv);
969 if (rv == PP_OK_COMPLETIONPENDING) 969 if (rv == PP_OK_COMPLETIONPENDING)
970 rv = callback.WaitForResult(); 970 rv = callback.WaitForResult();
971 if ((invalid_combination && rv == PP_OK) || 971 if ((invalid_combination && rv == PP_OK) ||
972 (!invalid_combination && ((rv == PP_OK) != open_if_exists))) { 972 (!invalid_combination && ((rv == PP_OK) != open_if_exists))) {
973 return ReportOpenError(open_flags); 973 return ReportOpenError(open_flags);
974 } 974 }
975 975
976 if (!invalid_combination && open_if_exists) { 976 if (!invalid_combination && open_if_exists) {
977 PP_FileInfo_Dev info; 977 PP_FileInfo info;
978 rv = existent_file_io.Query(&info, callback); 978 rv = existent_file_io.Query(&info, callback);
979 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 979 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
980 return ReportError("FileIO::Query force_async", rv); 980 return ReportError("FileIO::Query force_async", rv);
981 if (rv == PP_OK_COMPLETIONPENDING) 981 if (rv == PP_OK_COMPLETIONPENDING)
982 rv = callback.WaitForResult(); 982 rv = callback.WaitForResult();
983 if (rv != PP_OK) 983 if (rv != PP_OK)
984 return ReportError("FileIO::Query", rv); 984 return ReportError("FileIO::Query", rv);
985 985
986 if (truncate_if_exists != (info.size == 0)) 986 if (truncate_if_exists != (info.size == 0))
987 return ReportOpenError(open_flags); 987 return ReportOpenError(open_flags);
988 } 988 }
989 989
990 pp::FileIO_Dev nonexistent_file_io(instance_); 990 pp::FileIO nonexistent_file_io(instance_);
991 rv = nonexistent_file_io.Open(nonexistent_file_ref, open_flags, callback); 991 rv = nonexistent_file_io.Open(nonexistent_file_ref, open_flags, callback);
992 if (force_async_ && rv != PP_OK_COMPLETIONPENDING) 992 if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
993 return ReportError("FileIO::Open force_async", rv); 993 return ReportError("FileIO::Open force_async", rv);
994 if (rv == PP_OK_COMPLETIONPENDING) 994 if (rv == PP_OK_COMPLETIONPENDING)
995 rv = callback.WaitForResult(); 995 rv = callback.WaitForResult();
996 if ((invalid_combination && rv == PP_OK) || 996 if ((invalid_combination && rv == PP_OK) ||
997 (!invalid_combination && ((rv == PP_OK) != create_if_doesnt_exist))) { 997 (!invalid_combination && ((rv == PP_OK) != create_if_doesnt_exist))) {
998 return ReportOpenError(open_flags); 998 return ReportOpenError(open_flags);
999 } 999 }
1000 1000
1001 return std::string(); 1001 return std::string();
1002 } 1002 }
1003 1003
1004 // TODO(viettrungluu): Test Close(). crbug.com/69457 1004 // TODO(viettrungluu): Test Close(). crbug.com/69457
OLDNEW
« no previous file with comments | « ppapi/tests/test_file_io.h ('k') | ppapi/tests/test_file_system.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698