OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/child/fileapi/webfilesystem_impl.h" | 5 #include "content/child/fileapi/webfilesystem_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
97 template <typename Method, typename Params> | 97 template <typename Method, typename Params> |
98 void CallDispatcherOnMainThread( | 98 void CallDispatcherOnMainThread( |
99 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread_task_runner, | 99 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread_task_runner, |
100 Method method, const Params& params, | 100 Method method, const Params& params, |
101 WaitableCallbackResults* waitable_results) { | 101 WaitableCallbackResults* waitable_results) { |
102 if (!main_thread_task_runner->RunsTasksOnCurrentThread()) { | 102 if (!main_thread_task_runner->RunsTasksOnCurrentThread()) { |
103 main_thread_task_runner->PostTask( | 103 main_thread_task_runner->PostTask( |
104 FROM_HERE, | 104 FROM_HERE, |
105 base::Bind(&CallDispatcherOnMainThread<Method, Params>, | 105 base::Bind(&CallDispatcherOnMainThread<Method, Params>, |
106 main_thread_task_runner, method, params, | 106 main_thread_task_runner, method, params, |
107 scoped_refptr<WaitableCallbackResults>())); | 107 base::RetainedRef<WaitableCallbackResults>(nullptr))); |
Nico
2016/03/18 21:01:01
ditto
| |
108 if (!waitable_results) | 108 if (!waitable_results) |
109 return; | 109 return; |
110 waitable_results->WaitAndRun(); | 110 waitable_results->WaitAndRun(); |
111 } | 111 } |
112 if (!ChildThreadImpl::current() || | 112 if (!ChildThreadImpl::current() || |
113 !ChildThreadImpl::current()->file_system_dispatcher()) | 113 !ChildThreadImpl::current()->file_system_dispatcher()) |
114 return; | 114 return; |
115 | 115 |
116 DCHECK(!waitable_results); | 116 DCHECK(!waitable_results); |
117 DispatchToMethod(ChildThreadImpl::current()->file_system_dispatcher(), | 117 DispatchToMethod(ChildThreadImpl::current()->file_system_dispatcher(), |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
417 WebFileSystemCallbacks callbacks) { | 417 WebFileSystemCallbacks callbacks) { |
418 int callbacks_id = RegisterCallbacks(callbacks); | 418 int callbacks_id = RegisterCallbacks(callbacks); |
419 scoped_refptr<WaitableCallbackResults> waitable_results = | 419 scoped_refptr<WaitableCallbackResults> waitable_results = |
420 MaybeCreateWaitableResults(callbacks, callbacks_id); | 420 MaybeCreateWaitableResults(callbacks, callbacks_id); |
421 CallDispatcherOnMainThread( | 421 CallDispatcherOnMainThread( |
422 main_thread_task_runner_, &FileSystemDispatcher::OpenFileSystem, | 422 main_thread_task_runner_, &FileSystemDispatcher::OpenFileSystem, |
423 MakeTuple(GURL(storage_partition), | 423 MakeTuple(GURL(storage_partition), |
424 static_cast<storage::FileSystemType>(type), | 424 static_cast<storage::FileSystemType>(type), |
425 base::Bind(&OpenFileSystemCallbackAdapter, | 425 base::Bind(&OpenFileSystemCallbackAdapter, |
426 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 426 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
427 waitable_results), | 427 base::RetainedRef(waitable_results)), |
428 base::Bind(&StatusCallbackAdapter, | 428 base::Bind(&StatusCallbackAdapter, |
429 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 429 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
430 waitable_results)), | 430 base::RetainedRef(waitable_results))), |
431 waitable_results.get()); | 431 waitable_results.get()); |
432 } | 432 } |
433 | 433 |
434 void WebFileSystemImpl::resolveURL( | 434 void WebFileSystemImpl::resolveURL( |
435 const blink::WebURL& filesystem_url, | 435 const blink::WebURL& filesystem_url, |
436 WebFileSystemCallbacks callbacks) { | 436 WebFileSystemCallbacks callbacks) { |
437 int callbacks_id = RegisterCallbacks(callbacks); | 437 int callbacks_id = RegisterCallbacks(callbacks); |
438 scoped_refptr<WaitableCallbackResults> waitable_results = | 438 scoped_refptr<WaitableCallbackResults> waitable_results = |
439 MaybeCreateWaitableResults(callbacks, callbacks_id); | 439 MaybeCreateWaitableResults(callbacks, callbacks_id); |
440 CallDispatcherOnMainThread( | 440 CallDispatcherOnMainThread( |
441 main_thread_task_runner_, &FileSystemDispatcher::ResolveURL, | 441 main_thread_task_runner_, &FileSystemDispatcher::ResolveURL, |
442 MakeTuple(GURL(filesystem_url), | 442 MakeTuple(GURL(filesystem_url), |
443 base::Bind(&ResolveURLCallbackAdapter, | 443 base::Bind(&ResolveURLCallbackAdapter, |
444 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 444 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
445 waitable_results), | 445 base::RetainedRef(waitable_results)), |
446 base::Bind(&StatusCallbackAdapter, | 446 base::Bind(&StatusCallbackAdapter, |
447 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 447 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
448 waitable_results)), | 448 base::RetainedRef(waitable_results))), |
449 waitable_results.get()); | 449 waitable_results.get()); |
450 } | 450 } |
451 | 451 |
452 void WebFileSystemImpl::deleteFileSystem( | 452 void WebFileSystemImpl::deleteFileSystem( |
453 const blink::WebURL& storage_partition, | 453 const blink::WebURL& storage_partition, |
454 blink::WebFileSystemType type, | 454 blink::WebFileSystemType type, |
455 WebFileSystemCallbacks callbacks) { | 455 WebFileSystemCallbacks callbacks) { |
456 int callbacks_id = RegisterCallbacks(callbacks); | 456 int callbacks_id = RegisterCallbacks(callbacks); |
457 scoped_refptr<WaitableCallbackResults> waitable_results = | 457 scoped_refptr<WaitableCallbackResults> waitable_results = |
458 MaybeCreateWaitableResults(callbacks, callbacks_id); | 458 MaybeCreateWaitableResults(callbacks, callbacks_id); |
459 CallDispatcherOnMainThread( | 459 CallDispatcherOnMainThread( |
460 main_thread_task_runner_, &FileSystemDispatcher::DeleteFileSystem, | 460 main_thread_task_runner_, &FileSystemDispatcher::DeleteFileSystem, |
461 MakeTuple(GURL(storage_partition), | 461 MakeTuple(GURL(storage_partition), |
462 static_cast<storage::FileSystemType>(type), | 462 static_cast<storage::FileSystemType>(type), |
463 base::Bind(&StatusCallbackAdapter, | 463 base::Bind(&StatusCallbackAdapter, |
464 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 464 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
465 waitable_results)), | 465 base::RetainedRef(waitable_results))), |
466 waitable_results.get()); | 466 waitable_results.get()); |
467 } | 467 } |
468 | 468 |
469 void WebFileSystemImpl::move( | 469 void WebFileSystemImpl::move( |
470 const blink::WebURL& src_path, | 470 const blink::WebURL& src_path, |
471 const blink::WebURL& dest_path, | 471 const blink::WebURL& dest_path, |
472 WebFileSystemCallbacks callbacks) { | 472 WebFileSystemCallbacks callbacks) { |
473 int callbacks_id = RegisterCallbacks(callbacks); | 473 int callbacks_id = RegisterCallbacks(callbacks); |
474 scoped_refptr<WaitableCallbackResults> waitable_results = | 474 scoped_refptr<WaitableCallbackResults> waitable_results = |
475 MaybeCreateWaitableResults(callbacks, callbacks_id); | 475 MaybeCreateWaitableResults(callbacks, callbacks_id); |
476 CallDispatcherOnMainThread( | 476 CallDispatcherOnMainThread( |
477 main_thread_task_runner_, &FileSystemDispatcher::Move, | 477 main_thread_task_runner_, &FileSystemDispatcher::Move, |
478 MakeTuple(GURL(src_path), GURL(dest_path), | 478 MakeTuple(GURL(src_path), GURL(dest_path), |
479 base::Bind(&StatusCallbackAdapter, | 479 base::Bind(&StatusCallbackAdapter, |
480 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 480 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
481 waitable_results)), | 481 base::RetainedRef(waitable_results))), |
482 waitable_results.get()); | 482 waitable_results.get()); |
483 } | 483 } |
484 | 484 |
485 void WebFileSystemImpl::copy( | 485 void WebFileSystemImpl::copy( |
486 const blink::WebURL& src_path, | 486 const blink::WebURL& src_path, |
487 const blink::WebURL& dest_path, | 487 const blink::WebURL& dest_path, |
488 WebFileSystemCallbacks callbacks) { | 488 WebFileSystemCallbacks callbacks) { |
489 int callbacks_id = RegisterCallbacks(callbacks); | 489 int callbacks_id = RegisterCallbacks(callbacks); |
490 scoped_refptr<WaitableCallbackResults> waitable_results = | 490 scoped_refptr<WaitableCallbackResults> waitable_results = |
491 MaybeCreateWaitableResults(callbacks, callbacks_id); | 491 MaybeCreateWaitableResults(callbacks, callbacks_id); |
492 CallDispatcherOnMainThread( | 492 CallDispatcherOnMainThread( |
493 main_thread_task_runner_, &FileSystemDispatcher::Copy, | 493 main_thread_task_runner_, &FileSystemDispatcher::Copy, |
494 MakeTuple(GURL(src_path), GURL(dest_path), | 494 MakeTuple(GURL(src_path), GURL(dest_path), |
495 base::Bind(&StatusCallbackAdapter, | 495 base::Bind(&StatusCallbackAdapter, |
496 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 496 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
497 waitable_results)), | 497 base::RetainedRef(waitable_results))), |
498 waitable_results.get()); | 498 waitable_results.get()); |
499 } | 499 } |
500 | 500 |
501 void WebFileSystemImpl::remove( | 501 void WebFileSystemImpl::remove( |
502 const blink::WebURL& path, | 502 const blink::WebURL& path, |
503 WebFileSystemCallbacks callbacks) { | 503 WebFileSystemCallbacks callbacks) { |
504 int callbacks_id = RegisterCallbacks(callbacks); | 504 int callbacks_id = RegisterCallbacks(callbacks); |
505 scoped_refptr<WaitableCallbackResults> waitable_results = | 505 scoped_refptr<WaitableCallbackResults> waitable_results = |
506 MaybeCreateWaitableResults(callbacks, callbacks_id); | 506 MaybeCreateWaitableResults(callbacks, callbacks_id); |
507 CallDispatcherOnMainThread( | 507 CallDispatcherOnMainThread( |
508 main_thread_task_runner_, &FileSystemDispatcher::Remove, | 508 main_thread_task_runner_, &FileSystemDispatcher::Remove, |
509 MakeTuple(GURL(path), false /* recursive */, | 509 MakeTuple(GURL(path), false /* recursive */, |
510 base::Bind(&StatusCallbackAdapter, | 510 base::Bind(&StatusCallbackAdapter, |
511 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 511 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
512 waitable_results)), | 512 base::RetainedRef(waitable_results))), |
513 waitable_results.get()); | 513 waitable_results.get()); |
514 } | 514 } |
515 | 515 |
516 void WebFileSystemImpl::removeRecursively( | 516 void WebFileSystemImpl::removeRecursively( |
517 const blink::WebURL& path, | 517 const blink::WebURL& path, |
518 WebFileSystemCallbacks callbacks) { | 518 WebFileSystemCallbacks callbacks) { |
519 int callbacks_id = RegisterCallbacks(callbacks); | 519 int callbacks_id = RegisterCallbacks(callbacks); |
520 scoped_refptr<WaitableCallbackResults> waitable_results = | 520 scoped_refptr<WaitableCallbackResults> waitable_results = |
521 MaybeCreateWaitableResults(callbacks, callbacks_id); | 521 MaybeCreateWaitableResults(callbacks, callbacks_id); |
522 CallDispatcherOnMainThread( | 522 CallDispatcherOnMainThread( |
523 main_thread_task_runner_, &FileSystemDispatcher::Remove, | 523 main_thread_task_runner_, &FileSystemDispatcher::Remove, |
524 MakeTuple(GURL(path), true /* recursive */, | 524 MakeTuple(GURL(path), true /* recursive */, |
525 base::Bind(&StatusCallbackAdapter, | 525 base::Bind(&StatusCallbackAdapter, |
526 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 526 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
527 waitable_results)), | 527 base::RetainedRef(waitable_results))), |
528 waitable_results.get()); | 528 waitable_results.get()); |
529 } | 529 } |
530 | 530 |
531 void WebFileSystemImpl::readMetadata( | 531 void WebFileSystemImpl::readMetadata( |
532 const blink::WebURL& path, | 532 const blink::WebURL& path, |
533 WebFileSystemCallbacks callbacks) { | 533 WebFileSystemCallbacks callbacks) { |
534 int callbacks_id = RegisterCallbacks(callbacks); | 534 int callbacks_id = RegisterCallbacks(callbacks); |
535 scoped_refptr<WaitableCallbackResults> waitable_results = | 535 scoped_refptr<WaitableCallbackResults> waitable_results = |
536 MaybeCreateWaitableResults(callbacks, callbacks_id); | 536 MaybeCreateWaitableResults(callbacks, callbacks_id); |
537 CallDispatcherOnMainThread( | 537 CallDispatcherOnMainThread( |
538 main_thread_task_runner_, &FileSystemDispatcher::ReadMetadata, | 538 main_thread_task_runner_, &FileSystemDispatcher::ReadMetadata, |
539 MakeTuple(GURL(path), base::Bind(&ReadMetadataCallbackAdapter, | 539 MakeTuple(GURL(path), |
540 base::ThreadTaskRunnerHandle::Get(), | 540 base::Bind(&ReadMetadataCallbackAdapter, |
541 callbacks_id, waitable_results), | 541 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
542 base::RetainedRef(waitable_results)), | |
542 base::Bind(&StatusCallbackAdapter, | 543 base::Bind(&StatusCallbackAdapter, |
543 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 544 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
544 waitable_results)), | 545 base::RetainedRef(waitable_results))), |
545 waitable_results.get()); | 546 waitable_results.get()); |
546 } | 547 } |
547 | 548 |
548 void WebFileSystemImpl::createFile( | 549 void WebFileSystemImpl::createFile( |
549 const blink::WebURL& path, | 550 const blink::WebURL& path, |
550 bool exclusive, | 551 bool exclusive, |
551 WebFileSystemCallbacks callbacks) { | 552 WebFileSystemCallbacks callbacks) { |
552 int callbacks_id = RegisterCallbacks(callbacks); | 553 int callbacks_id = RegisterCallbacks(callbacks); |
553 scoped_refptr<WaitableCallbackResults> waitable_results = | 554 scoped_refptr<WaitableCallbackResults> waitable_results = |
554 MaybeCreateWaitableResults(callbacks, callbacks_id); | 555 MaybeCreateWaitableResults(callbacks, callbacks_id); |
555 CallDispatcherOnMainThread( | 556 CallDispatcherOnMainThread( |
556 main_thread_task_runner_, &FileSystemDispatcher::CreateFile, | 557 main_thread_task_runner_, &FileSystemDispatcher::CreateFile, |
557 MakeTuple(GURL(path), exclusive, | 558 MakeTuple(GURL(path), exclusive, |
558 base::Bind(&StatusCallbackAdapter, | 559 base::Bind(&StatusCallbackAdapter, |
559 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 560 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
560 waitable_results)), | 561 base::RetainedRef(waitable_results))), |
561 waitable_results.get()); | 562 waitable_results.get()); |
562 } | 563 } |
563 | 564 |
564 void WebFileSystemImpl::createDirectory( | 565 void WebFileSystemImpl::createDirectory( |
565 const blink::WebURL& path, | 566 const blink::WebURL& path, |
566 bool exclusive, | 567 bool exclusive, |
567 WebFileSystemCallbacks callbacks) { | 568 WebFileSystemCallbacks callbacks) { |
568 int callbacks_id = RegisterCallbacks(callbacks); | 569 int callbacks_id = RegisterCallbacks(callbacks); |
569 scoped_refptr<WaitableCallbackResults> waitable_results = | 570 scoped_refptr<WaitableCallbackResults> waitable_results = |
570 MaybeCreateWaitableResults(callbacks, callbacks_id); | 571 MaybeCreateWaitableResults(callbacks, callbacks_id); |
571 CallDispatcherOnMainThread( | 572 CallDispatcherOnMainThread( |
572 main_thread_task_runner_, &FileSystemDispatcher::CreateDirectory, | 573 main_thread_task_runner_, &FileSystemDispatcher::CreateDirectory, |
573 MakeTuple(GURL(path), exclusive, false /* recursive */, | 574 MakeTuple(GURL(path), exclusive, false /* recursive */, |
574 base::Bind(&StatusCallbackAdapter, | 575 base::Bind(&StatusCallbackAdapter, |
575 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 576 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
576 waitable_results)), | 577 base::RetainedRef(waitable_results))), |
577 waitable_results.get()); | 578 waitable_results.get()); |
578 } | 579 } |
579 | 580 |
580 void WebFileSystemImpl::fileExists( | 581 void WebFileSystemImpl::fileExists( |
581 const blink::WebURL& path, | 582 const blink::WebURL& path, |
582 WebFileSystemCallbacks callbacks) { | 583 WebFileSystemCallbacks callbacks) { |
583 int callbacks_id = RegisterCallbacks(callbacks); | 584 int callbacks_id = RegisterCallbacks(callbacks); |
584 scoped_refptr<WaitableCallbackResults> waitable_results = | 585 scoped_refptr<WaitableCallbackResults> waitable_results = |
585 MaybeCreateWaitableResults(callbacks, callbacks_id); | 586 MaybeCreateWaitableResults(callbacks, callbacks_id); |
586 CallDispatcherOnMainThread( | 587 CallDispatcherOnMainThread( |
587 main_thread_task_runner_, &FileSystemDispatcher::Exists, | 588 main_thread_task_runner_, &FileSystemDispatcher::Exists, |
588 MakeTuple(GURL(path), false /* directory */, | 589 MakeTuple(GURL(path), false /* directory */, |
589 base::Bind(&StatusCallbackAdapter, | 590 base::Bind(&StatusCallbackAdapter, |
590 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 591 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
591 waitable_results)), | 592 base::RetainedRef(waitable_results))), |
592 waitable_results.get()); | 593 waitable_results.get()); |
593 } | 594 } |
594 | 595 |
595 void WebFileSystemImpl::directoryExists( | 596 void WebFileSystemImpl::directoryExists( |
596 const blink::WebURL& path, | 597 const blink::WebURL& path, |
597 WebFileSystemCallbacks callbacks) { | 598 WebFileSystemCallbacks callbacks) { |
598 int callbacks_id = RegisterCallbacks(callbacks); | 599 int callbacks_id = RegisterCallbacks(callbacks); |
599 scoped_refptr<WaitableCallbackResults> waitable_results = | 600 scoped_refptr<WaitableCallbackResults> waitable_results = |
600 MaybeCreateWaitableResults(callbacks, callbacks_id); | 601 MaybeCreateWaitableResults(callbacks, callbacks_id); |
601 CallDispatcherOnMainThread( | 602 CallDispatcherOnMainThread( |
602 main_thread_task_runner_, &FileSystemDispatcher::Exists, | 603 main_thread_task_runner_, &FileSystemDispatcher::Exists, |
603 MakeTuple(GURL(path), true /* directory */, | 604 MakeTuple(GURL(path), true /* directory */, |
604 base::Bind(&StatusCallbackAdapter, | 605 base::Bind(&StatusCallbackAdapter, |
605 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 606 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
606 waitable_results)), | 607 base::RetainedRef(waitable_results))), |
607 waitable_results.get()); | 608 waitable_results.get()); |
608 } | 609 } |
609 | 610 |
610 int WebFileSystemImpl::readDirectory( | 611 int WebFileSystemImpl::readDirectory( |
611 const blink::WebURL& path, | 612 const blink::WebURL& path, |
612 WebFileSystemCallbacks callbacks) { | 613 WebFileSystemCallbacks callbacks) { |
613 int callbacks_id = RegisterCallbacks(callbacks); | 614 int callbacks_id = RegisterCallbacks(callbacks); |
614 scoped_refptr<WaitableCallbackResults> waitable_results = | 615 scoped_refptr<WaitableCallbackResults> waitable_results = |
615 MaybeCreateWaitableResults(callbacks, callbacks_id); | 616 MaybeCreateWaitableResults(callbacks, callbacks_id); |
616 CallDispatcherOnMainThread( | 617 CallDispatcherOnMainThread( |
617 main_thread_task_runner_, &FileSystemDispatcher::ReadDirectory, | 618 main_thread_task_runner_, &FileSystemDispatcher::ReadDirectory, |
618 MakeTuple(GURL(path), base::Bind(&ReadDirectoryCallbackAdapter, | 619 MakeTuple(GURL(path), |
619 base::ThreadTaskRunnerHandle::Get(), | 620 base::Bind(&ReadDirectoryCallbackAdapter, |
620 callbacks_id, waitable_results), | 621 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
622 base::RetainedRef(waitable_results)), | |
621 base::Bind(&StatusCallbackAdapter, | 623 base::Bind(&StatusCallbackAdapter, |
622 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 624 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
623 waitable_results)), | 625 base::RetainedRef(waitable_results))), |
624 waitable_results.get()); | 626 waitable_results.get()); |
625 return callbacks_id; | 627 return callbacks_id; |
626 } | 628 } |
627 | 629 |
628 void WebFileSystemImpl::createFileWriter( | 630 void WebFileSystemImpl::createFileWriter( |
629 const WebURL& path, | 631 const WebURL& path, |
630 blink::WebFileWriterClient* client, | 632 blink::WebFileWriterClient* client, |
631 WebFileSystemCallbacks callbacks) { | 633 WebFileSystemCallbacks callbacks) { |
632 int callbacks_id = RegisterCallbacks(callbacks); | 634 int callbacks_id = RegisterCallbacks(callbacks); |
633 scoped_refptr<WaitableCallbackResults> waitable_results = | 635 scoped_refptr<WaitableCallbackResults> waitable_results = |
634 MaybeCreateWaitableResults(callbacks, callbacks_id); | 636 MaybeCreateWaitableResults(callbacks, callbacks_id); |
635 CallDispatcherOnMainThread( | 637 CallDispatcherOnMainThread( |
636 main_thread_task_runner_, &FileSystemDispatcher::ReadMetadata, | 638 main_thread_task_runner_, &FileSystemDispatcher::ReadMetadata, |
637 MakeTuple(GURL(path), | 639 MakeTuple(GURL(path), |
638 base::Bind(&CreateFileWriterCallbackAdapter, | 640 base::Bind(&CreateFileWriterCallbackAdapter, |
639 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 641 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
640 waitable_results, main_thread_task_runner_, | 642 base::RetainedRef(waitable_results), |
641 GURL(path), client), | 643 main_thread_task_runner_, GURL(path), client), |
642 base::Bind(&StatusCallbackAdapter, | 644 base::Bind(&StatusCallbackAdapter, |
643 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 645 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
644 waitable_results)), | 646 base::RetainedRef(waitable_results))), |
645 waitable_results.get()); | 647 waitable_results.get()); |
646 } | 648 } |
647 | 649 |
648 void WebFileSystemImpl::createSnapshotFileAndReadMetadata( | 650 void WebFileSystemImpl::createSnapshotFileAndReadMetadata( |
649 const blink::WebURL& path, | 651 const blink::WebURL& path, |
650 WebFileSystemCallbacks callbacks) { | 652 WebFileSystemCallbacks callbacks) { |
651 int callbacks_id = RegisterCallbacks(callbacks); | 653 int callbacks_id = RegisterCallbacks(callbacks); |
652 scoped_refptr<WaitableCallbackResults> waitable_results = | 654 scoped_refptr<WaitableCallbackResults> waitable_results = |
653 MaybeCreateWaitableResults(callbacks, callbacks_id); | 655 MaybeCreateWaitableResults(callbacks, callbacks_id); |
654 CallDispatcherOnMainThread( | 656 CallDispatcherOnMainThread( |
655 main_thread_task_runner_, &FileSystemDispatcher::CreateSnapshotFile, | 657 main_thread_task_runner_, &FileSystemDispatcher::CreateSnapshotFile, |
656 MakeTuple(GURL(path), | 658 MakeTuple(GURL(path), |
657 base::Bind(&CreateSnapshotFileCallbackAdapter, | 659 base::Bind(&CreateSnapshotFileCallbackAdapter, |
658 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 660 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
659 waitable_results, main_thread_task_runner_), | 661 base::RetainedRef(waitable_results), |
662 main_thread_task_runner_), | |
660 base::Bind(&StatusCallbackAdapter, | 663 base::Bind(&StatusCallbackAdapter, |
661 base::ThreadTaskRunnerHandle::Get(), callbacks_id, | 664 base::ThreadTaskRunnerHandle::Get(), callbacks_id, |
662 waitable_results)), | 665 base::RetainedRef(waitable_results))), |
663 waitable_results.get()); | 666 waitable_results.get()); |
664 } | 667 } |
665 | 668 |
666 bool WebFileSystemImpl::waitForAdditionalResult(int callbacksId) { | 669 bool WebFileSystemImpl::waitForAdditionalResult(int callbacksId) { |
667 WaitableCallbackResultsMap::iterator found = | 670 WaitableCallbackResultsMap::iterator found = |
668 waitable_results_.find(callbacksId); | 671 waitable_results_.find(callbacksId); |
669 if (found == waitable_results_.end()) | 672 if (found == waitable_results_.end()) |
670 return false; | 673 return false; |
671 | 674 |
672 found->second->WaitAndRun(); | 675 found->second->WaitAndRun(); |
(...skipping 27 matching lines...) Expand all Loading... | |
700 WaitableCallbackResults* WebFileSystemImpl::MaybeCreateWaitableResults( | 703 WaitableCallbackResults* WebFileSystemImpl::MaybeCreateWaitableResults( |
701 const WebFileSystemCallbacks& callbacks, int callbacks_id) { | 704 const WebFileSystemCallbacks& callbacks, int callbacks_id) { |
702 if (!callbacks.shouldBlockUntilCompletion()) | 705 if (!callbacks.shouldBlockUntilCompletion()) |
703 return NULL; | 706 return NULL; |
704 WaitableCallbackResults* results = new WaitableCallbackResults(); | 707 WaitableCallbackResults* results = new WaitableCallbackResults(); |
705 waitable_results_[callbacks_id] = results; | 708 waitable_results_[callbacks_id] = results; |
706 return results; | 709 return results; |
707 } | 710 } |
708 | 711 |
709 } // namespace content | 712 } // namespace content |
OLD | NEW |