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