Chromium Code Reviews| 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 |