OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/drive/fake_drive_service.h" | 5 #include "chrome/browser/drive/fake_drive_service.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/json/json_string_value_serializer.h" | 10 #include "base/json/json_string_value_serializer.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/md5.h" | 12 #include "base/md5.h" |
13 #include "base/message_loop/message_loop.h" | |
14 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
15 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
16 #include "base/strings/string_tokenizer.h" | 15 #include "base/strings/string_tokenizer.h" |
17 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
18 #include "base/strings/stringprintf.h" | 17 #include "base/strings/stringprintf.h" |
19 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
| 19 #include "base/thread_task_runner_handle.h" |
20 #include "base/values.h" | 20 #include "base/values.h" |
21 #include "chrome/browser/drive/drive_api_util.h" | 21 #include "chrome/browser/drive/drive_api_util.h" |
22 #include "google_apis/drive/drive_api_parser.h" | 22 #include "google_apis/drive/drive_api_parser.h" |
23 #include "google_apis/drive/test_util.h" | 23 #include "google_apis/drive/test_util.h" |
24 #include "net/base/escape.h" | 24 #include "net/base/escape.h" |
25 #include "net/base/url_util.h" | 25 #include "net/base/url_util.h" |
26 | 26 |
27 using google_apis::AboutResource; | 27 using google_apis::AboutResource; |
28 using google_apis::AboutResourceCallback; | 28 using google_apis::AboutResourceCallback; |
29 using google_apis::AppList; | 29 using google_apis::AppList; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 return false; | 98 return false; |
99 } | 99 } |
100 return true; | 100 return true; |
101 } | 101 } |
102 | 102 |
103 void ScheduleUploadRangeCallback(const UploadRangeCallback& callback, | 103 void ScheduleUploadRangeCallback(const UploadRangeCallback& callback, |
104 int64 start_position, | 104 int64 start_position, |
105 int64 end_position, | 105 int64 end_position, |
106 DriveApiErrorCode error, | 106 DriveApiErrorCode error, |
107 scoped_ptr<FileResource> entry) { | 107 scoped_ptr<FileResource> entry) { |
108 base::MessageLoop::current()->PostTask( | 108 base::ThreadTaskRunnerHandle::Get()->PostTask( |
109 FROM_HERE, | 109 FROM_HERE, |
110 base::Bind(callback, | 110 base::Bind(callback, |
111 UploadRangeResponse(error, | 111 UploadRangeResponse(error, |
112 start_position, | 112 start_position, |
113 end_position), | 113 end_position), |
114 base::Passed(&entry))); | 114 base::Passed(&entry))); |
115 } | 115 } |
116 | 116 |
117 void FileListCallbackAdapter(const FileListCallback& callback, | 117 void FileListCallbackAdapter(const FileListCallback& callback, |
118 DriveApiErrorCode error, | 118 DriveApiErrorCode error, |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 next_link, base::Bind(&FileListCallbackAdapter, callback)); | 527 next_link, base::Bind(&FileListCallbackAdapter, callback)); |
528 } | 528 } |
529 | 529 |
530 CancelCallback FakeDriveService::GetFileResource( | 530 CancelCallback FakeDriveService::GetFileResource( |
531 const std::string& resource_id, | 531 const std::string& resource_id, |
532 const FileResourceCallback& callback) { | 532 const FileResourceCallback& callback) { |
533 DCHECK(thread_checker_.CalledOnValidThread()); | 533 DCHECK(thread_checker_.CalledOnValidThread()); |
534 DCHECK(!callback.is_null()); | 534 DCHECK(!callback.is_null()); |
535 | 535 |
536 if (offline_) { | 536 if (offline_) { |
537 base::MessageLoop::current()->PostTask( | 537 base::ThreadTaskRunnerHandle::Get()->PostTask( |
538 FROM_HERE, | 538 FROM_HERE, |
539 base::Bind(callback, | 539 base::Bind(callback, |
540 DRIVE_NO_CONNECTION, | 540 DRIVE_NO_CONNECTION, |
541 base::Passed(scoped_ptr<FileResource>()))); | 541 base::Passed(scoped_ptr<FileResource>()))); |
542 return CancelCallback(); | 542 return CancelCallback(); |
543 } | 543 } |
544 | 544 |
545 EntryInfo* entry = FindEntryByResourceId(resource_id); | 545 EntryInfo* entry = FindEntryByResourceId(resource_id); |
546 if (entry && entry->change_resource.file()) { | 546 if (entry && entry->change_resource.file()) { |
547 base::MessageLoop::current()->PostTask( | 547 base::ThreadTaskRunnerHandle::Get()->PostTask( |
548 FROM_HERE, | 548 FROM_HERE, |
549 base::Bind(callback, HTTP_SUCCESS, base::Passed(make_scoped_ptr( | 549 base::Bind(callback, HTTP_SUCCESS, base::Passed(make_scoped_ptr( |
550 new FileResource(*entry->change_resource.file()))))); | 550 new FileResource(*entry->change_resource.file()))))); |
551 return CancelCallback(); | 551 return CancelCallback(); |
552 } | 552 } |
553 | 553 |
554 base::MessageLoop::current()->PostTask( | 554 base::ThreadTaskRunnerHandle::Get()->PostTask( |
555 FROM_HERE, | 555 FROM_HERE, |
556 base::Bind(callback, HTTP_NOT_FOUND, | 556 base::Bind(callback, HTTP_NOT_FOUND, |
557 base::Passed(scoped_ptr<FileResource>()))); | 557 base::Passed(scoped_ptr<FileResource>()))); |
558 return CancelCallback(); | 558 return CancelCallback(); |
559 } | 559 } |
560 | 560 |
561 CancelCallback FakeDriveService::GetShareUrl( | 561 CancelCallback FakeDriveService::GetShareUrl( |
562 const std::string& resource_id, | 562 const std::string& resource_id, |
563 const GURL& /* embed_origin */, | 563 const GURL& /* embed_origin */, |
564 const GetShareUrlCallback& callback) { | 564 const GetShareUrlCallback& callback) { |
565 DCHECK(thread_checker_.CalledOnValidThread()); | 565 DCHECK(thread_checker_.CalledOnValidThread()); |
566 DCHECK(!callback.is_null()); | 566 DCHECK(!callback.is_null()); |
567 | 567 |
568 if (offline_) { | 568 if (offline_) { |
569 base::MessageLoop::current()->PostTask( | 569 base::ThreadTaskRunnerHandle::Get()->PostTask( |
570 FROM_HERE, | 570 FROM_HERE, |
571 base::Bind(callback, | 571 base::Bind(callback, |
572 DRIVE_NO_CONNECTION, | 572 DRIVE_NO_CONNECTION, |
573 GURL())); | 573 GURL())); |
574 return CancelCallback(); | 574 return CancelCallback(); |
575 } | 575 } |
576 | 576 |
577 EntryInfo* entry = FindEntryByResourceId(resource_id); | 577 EntryInfo* entry = FindEntryByResourceId(resource_id); |
578 if (entry) { | 578 if (entry) { |
579 base::MessageLoop::current()->PostTask( | 579 base::ThreadTaskRunnerHandle::Get()->PostTask( |
580 FROM_HERE, | 580 FROM_HERE, |
581 base::Bind(callback, HTTP_SUCCESS, entry->share_url)); | 581 base::Bind(callback, HTTP_SUCCESS, entry->share_url)); |
582 return CancelCallback(); | 582 return CancelCallback(); |
583 } | 583 } |
584 | 584 |
585 base::MessageLoop::current()->PostTask( | 585 base::ThreadTaskRunnerHandle::Get()->PostTask( |
586 FROM_HERE, | 586 FROM_HERE, |
587 base::Bind(callback, HTTP_NOT_FOUND, GURL())); | 587 base::Bind(callback, HTTP_NOT_FOUND, GURL())); |
588 return CancelCallback(); | 588 return CancelCallback(); |
589 } | 589 } |
590 | 590 |
591 CancelCallback FakeDriveService::GetAboutResource( | 591 CancelCallback FakeDriveService::GetAboutResource( |
592 const AboutResourceCallback& callback) { | 592 const AboutResourceCallback& callback) { |
593 DCHECK(thread_checker_.CalledOnValidThread()); | 593 DCHECK(thread_checker_.CalledOnValidThread()); |
594 DCHECK(!callback.is_null()); | 594 DCHECK(!callback.is_null()); |
595 | 595 |
596 if (offline_) { | 596 if (offline_) { |
597 scoped_ptr<AboutResource> null; | 597 scoped_ptr<AboutResource> null; |
598 base::MessageLoop::current()->PostTask( | 598 base::ThreadTaskRunnerHandle::Get()->PostTask( |
599 FROM_HERE, | 599 FROM_HERE, |
600 base::Bind(callback, | 600 base::Bind(callback, |
601 DRIVE_NO_CONNECTION, base::Passed(&null))); | 601 DRIVE_NO_CONNECTION, base::Passed(&null))); |
602 return CancelCallback(); | 602 return CancelCallback(); |
603 } | 603 } |
604 | 604 |
605 ++about_resource_load_count_; | 605 ++about_resource_load_count_; |
606 scoped_ptr<AboutResource> about_resource(new AboutResource(*about_resource_)); | 606 scoped_ptr<AboutResource> about_resource(new AboutResource(*about_resource_)); |
607 base::MessageLoop::current()->PostTask( | 607 base::ThreadTaskRunnerHandle::Get()->PostTask( |
608 FROM_HERE, | 608 FROM_HERE, |
609 base::Bind(callback, | 609 base::Bind(callback, |
610 HTTP_SUCCESS, base::Passed(&about_resource))); | 610 HTTP_SUCCESS, base::Passed(&about_resource))); |
611 return CancelCallback(); | 611 return CancelCallback(); |
612 } | 612 } |
613 | 613 |
614 CancelCallback FakeDriveService::GetAppList(const AppListCallback& callback) { | 614 CancelCallback FakeDriveService::GetAppList(const AppListCallback& callback) { |
615 DCHECK(thread_checker_.CalledOnValidThread()); | 615 DCHECK(thread_checker_.CalledOnValidThread()); |
616 DCHECK(!callback.is_null()); | 616 DCHECK(!callback.is_null()); |
617 DCHECK(app_info_value_); | 617 DCHECK(app_info_value_); |
618 | 618 |
619 if (offline_) { | 619 if (offline_) { |
620 scoped_ptr<AppList> null; | 620 scoped_ptr<AppList> null; |
621 base::MessageLoop::current()->PostTask( | 621 base::ThreadTaskRunnerHandle::Get()->PostTask( |
622 FROM_HERE, | 622 FROM_HERE, |
623 base::Bind(callback, | 623 base::Bind(callback, |
624 DRIVE_NO_CONNECTION, | 624 DRIVE_NO_CONNECTION, |
625 base::Passed(&null))); | 625 base::Passed(&null))); |
626 return CancelCallback(); | 626 return CancelCallback(); |
627 } | 627 } |
628 | 628 |
629 ++app_list_load_count_; | 629 ++app_list_load_count_; |
630 scoped_ptr<AppList> app_list(AppList::CreateFrom(*app_info_value_)); | 630 scoped_ptr<AppList> app_list(AppList::CreateFrom(*app_info_value_)); |
631 base::MessageLoop::current()->PostTask( | 631 base::ThreadTaskRunnerHandle::Get()->PostTask( |
632 FROM_HERE, | 632 FROM_HERE, |
633 base::Bind(callback, HTTP_SUCCESS, base::Passed(&app_list))); | 633 base::Bind(callback, HTTP_SUCCESS, base::Passed(&app_list))); |
634 return CancelCallback(); | 634 return CancelCallback(); |
635 } | 635 } |
636 | 636 |
637 CancelCallback FakeDriveService::DeleteResource( | 637 CancelCallback FakeDriveService::DeleteResource( |
638 const std::string& resource_id, | 638 const std::string& resource_id, |
639 const std::string& etag, | 639 const std::string& etag, |
640 const EntryActionCallback& callback) { | 640 const EntryActionCallback& callback) { |
641 DCHECK(thread_checker_.CalledOnValidThread()); | 641 DCHECK(thread_checker_.CalledOnValidThread()); |
642 DCHECK(!callback.is_null()); | 642 DCHECK(!callback.is_null()); |
643 | 643 |
644 if (offline_) { | 644 if (offline_) { |
645 base::MessageLoop::current()->PostTask( | 645 base::ThreadTaskRunnerHandle::Get()->PostTask( |
646 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); | 646 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); |
647 return CancelCallback(); | 647 return CancelCallback(); |
648 } | 648 } |
649 | 649 |
650 EntryInfo* entry = FindEntryByResourceId(resource_id); | 650 EntryInfo* entry = FindEntryByResourceId(resource_id); |
651 if (!entry) { | 651 if (!entry) { |
652 base::MessageLoop::current()->PostTask( | 652 base::ThreadTaskRunnerHandle::Get()->PostTask( |
653 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 653 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
654 return CancelCallback(); | 654 return CancelCallback(); |
655 } | 655 } |
656 | 656 |
657 ChangeResource* change = &entry->change_resource; | 657 ChangeResource* change = &entry->change_resource; |
658 const FileResource* file = change->file(); | 658 const FileResource* file = change->file(); |
659 if (change->is_deleted()) { | 659 if (change->is_deleted()) { |
660 base::MessageLoop::current()->PostTask( | 660 base::ThreadTaskRunnerHandle::Get()->PostTask( |
661 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 661 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
662 return CancelCallback(); | 662 return CancelCallback(); |
663 } | 663 } |
664 | 664 |
665 if (!etag.empty() && etag != file->etag()) { | 665 if (!etag.empty() && etag != file->etag()) { |
666 base::MessageLoop::current()->PostTask( | 666 base::ThreadTaskRunnerHandle::Get()->PostTask( |
667 FROM_HERE, base::Bind(callback, HTTP_PRECONDITION)); | 667 FROM_HERE, base::Bind(callback, HTTP_PRECONDITION)); |
668 return CancelCallback(); | 668 return CancelCallback(); |
669 } | 669 } |
670 | 670 |
671 if (entry->user_permission != google_apis::drive::PERMISSION_ROLE_OWNER) { | 671 if (entry->user_permission != google_apis::drive::PERMISSION_ROLE_OWNER) { |
672 base::MessageLoop::current()->PostTask( | 672 base::ThreadTaskRunnerHandle::Get()->PostTask( |
673 FROM_HERE, base::Bind(callback, HTTP_FORBIDDEN)); | 673 FROM_HERE, base::Bind(callback, HTTP_FORBIDDEN)); |
674 return CancelCallback(); | 674 return CancelCallback(); |
675 } | 675 } |
676 | 676 |
677 change->set_deleted(true); | 677 change->set_deleted(true); |
678 AddNewChangestamp(change); | 678 AddNewChangestamp(change); |
679 change->set_file(scoped_ptr<FileResource>()); | 679 change->set_file(scoped_ptr<FileResource>()); |
680 base::MessageLoop::current()->PostTask( | 680 base::ThreadTaskRunnerHandle::Get()->PostTask( |
681 FROM_HERE, base::Bind(callback, HTTP_NO_CONTENT)); | 681 FROM_HERE, base::Bind(callback, HTTP_NO_CONTENT)); |
682 base::MessageLoop::current()->PostTask( | 682 base::ThreadTaskRunnerHandle::Get()->PostTask( |
683 FROM_HERE, | 683 FROM_HERE, |
684 base::Bind(&FakeDriveService::NotifyObservers, | 684 base::Bind(&FakeDriveService::NotifyObservers, |
685 weak_ptr_factory_.GetWeakPtr())); | 685 weak_ptr_factory_.GetWeakPtr())); |
686 return CancelCallback(); | 686 return CancelCallback(); |
687 } | 687 } |
688 | 688 |
689 CancelCallback FakeDriveService::TrashResource( | 689 CancelCallback FakeDriveService::TrashResource( |
690 const std::string& resource_id, | 690 const std::string& resource_id, |
691 const EntryActionCallback& callback) { | 691 const EntryActionCallback& callback) { |
692 DCHECK(thread_checker_.CalledOnValidThread()); | 692 DCHECK(thread_checker_.CalledOnValidThread()); |
693 DCHECK(!callback.is_null()); | 693 DCHECK(!callback.is_null()); |
694 | 694 |
695 if (offline_) { | 695 if (offline_) { |
696 base::MessageLoop::current()->PostTask( | 696 base::ThreadTaskRunnerHandle::Get()->PostTask( |
697 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); | 697 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); |
698 return CancelCallback(); | 698 return CancelCallback(); |
699 } | 699 } |
700 | 700 |
701 EntryInfo* entry = FindEntryByResourceId(resource_id); | 701 EntryInfo* entry = FindEntryByResourceId(resource_id); |
702 if (!entry) { | 702 if (!entry) { |
703 base::MessageLoop::current()->PostTask( | 703 base::ThreadTaskRunnerHandle::Get()->PostTask( |
704 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 704 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
705 return CancelCallback(); | 705 return CancelCallback(); |
706 } | 706 } |
707 | 707 |
708 ChangeResource* change = &entry->change_resource; | 708 ChangeResource* change = &entry->change_resource; |
709 FileResource* file = change->mutable_file(); | 709 FileResource* file = change->mutable_file(); |
710 if (change->is_deleted() || file->labels().is_trashed()) { | 710 if (change->is_deleted() || file->labels().is_trashed()) { |
711 base::MessageLoop::current()->PostTask( | 711 base::ThreadTaskRunnerHandle::Get()->PostTask( |
712 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 712 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
713 return CancelCallback(); | 713 return CancelCallback(); |
714 } | 714 } |
715 | 715 |
716 if (entry->user_permission != google_apis::drive::PERMISSION_ROLE_OWNER) { | 716 if (entry->user_permission != google_apis::drive::PERMISSION_ROLE_OWNER) { |
717 base::MessageLoop::current()->PostTask( | 717 base::ThreadTaskRunnerHandle::Get()->PostTask( |
718 FROM_HERE, base::Bind(callback, HTTP_FORBIDDEN)); | 718 FROM_HERE, base::Bind(callback, HTTP_FORBIDDEN)); |
719 return CancelCallback(); | 719 return CancelCallback(); |
720 } | 720 } |
721 | 721 |
722 file->mutable_labels()->set_trashed(true); | 722 file->mutable_labels()->set_trashed(true); |
723 AddNewChangestamp(change); | 723 AddNewChangestamp(change); |
724 base::MessageLoop::current()->PostTask( | 724 base::ThreadTaskRunnerHandle::Get()->PostTask( |
725 FROM_HERE, base::Bind(callback, HTTP_SUCCESS)); | 725 FROM_HERE, base::Bind(callback, HTTP_SUCCESS)); |
726 base::MessageLoop::current()->PostTask( | 726 base::ThreadTaskRunnerHandle::Get()->PostTask( |
727 FROM_HERE, | 727 FROM_HERE, |
728 base::Bind(&FakeDriveService::NotifyObservers, | 728 base::Bind(&FakeDriveService::NotifyObservers, |
729 weak_ptr_factory_.GetWeakPtr())); | 729 weak_ptr_factory_.GetWeakPtr())); |
730 return CancelCallback(); | 730 return CancelCallback(); |
731 } | 731 } |
732 | 732 |
733 CancelCallback FakeDriveService::DownloadFile( | 733 CancelCallback FakeDriveService::DownloadFile( |
734 const base::FilePath& local_cache_path, | 734 const base::FilePath& local_cache_path, |
735 const std::string& resource_id, | 735 const std::string& resource_id, |
736 const DownloadActionCallback& download_action_callback, | 736 const DownloadActionCallback& download_action_callback, |
737 const GetContentCallback& get_content_callback, | 737 const GetContentCallback& get_content_callback, |
738 const ProgressCallback& progress_callback) { | 738 const ProgressCallback& progress_callback) { |
739 DCHECK(thread_checker_.CalledOnValidThread()); | 739 DCHECK(thread_checker_.CalledOnValidThread()); |
740 DCHECK(!download_action_callback.is_null()); | 740 DCHECK(!download_action_callback.is_null()); |
741 | 741 |
742 if (offline_) { | 742 if (offline_) { |
743 base::MessageLoop::current()->PostTask( | 743 base::ThreadTaskRunnerHandle::Get()->PostTask( |
744 FROM_HERE, | 744 FROM_HERE, |
745 base::Bind(download_action_callback, | 745 base::Bind(download_action_callback, |
746 DRIVE_NO_CONNECTION, | 746 DRIVE_NO_CONNECTION, |
747 base::FilePath())); | 747 base::FilePath())); |
748 return CancelCallback(); | 748 return CancelCallback(); |
749 } | 749 } |
750 | 750 |
751 EntryInfo* entry = FindEntryByResourceId(resource_id); | 751 EntryInfo* entry = FindEntryByResourceId(resource_id); |
752 if (!entry || entry->change_resource.file()->IsHostedDocument()) { | 752 if (!entry || entry->change_resource.file()->IsHostedDocument()) { |
753 base::MessageLoopProxy::current()->PostTask( | 753 base::ThreadTaskRunnerHandle::Get()->PostTask( |
754 FROM_HERE, | 754 FROM_HERE, |
755 base::Bind(download_action_callback, HTTP_NOT_FOUND, base::FilePath())); | 755 base::Bind(download_action_callback, HTTP_NOT_FOUND, base::FilePath())); |
756 return CancelCallback(); | 756 return CancelCallback(); |
757 } | 757 } |
758 | 758 |
759 const FileResource* file = entry->change_resource.file(); | 759 const FileResource* file = entry->change_resource.file(); |
760 const std::string& content_data = entry->content_data; | 760 const std::string& content_data = entry->content_data; |
761 int64 file_size = file->file_size(); | 761 int64 file_size = file->file_size(); |
762 DCHECK_EQ(static_cast<size_t>(file_size), content_data.size()); | 762 DCHECK_EQ(static_cast<size_t>(file_size), content_data.size()); |
763 | 763 |
764 if (!get_content_callback.is_null()) { | 764 if (!get_content_callback.is_null()) { |
765 const int64 kBlockSize = 5; | 765 const int64 kBlockSize = 5; |
766 for (int64 i = 0; i < file_size; i += kBlockSize) { | 766 for (int64 i = 0; i < file_size; i += kBlockSize) { |
767 const int64 size = std::min(kBlockSize, file_size - i); | 767 const int64 size = std::min(kBlockSize, file_size - i); |
768 scoped_ptr<std::string> content_for_callback( | 768 scoped_ptr<std::string> content_for_callback( |
769 new std::string(content_data.substr(i, size))); | 769 new std::string(content_data.substr(i, size))); |
770 base::MessageLoopProxy::current()->PostTask( | 770 base::ThreadTaskRunnerHandle::Get()->PostTask( |
771 FROM_HERE, | 771 FROM_HERE, |
772 base::Bind(get_content_callback, HTTP_SUCCESS, | 772 base::Bind(get_content_callback, HTTP_SUCCESS, |
773 base::Passed(&content_for_callback))); | 773 base::Passed(&content_for_callback))); |
774 } | 774 } |
775 } | 775 } |
776 | 776 |
777 if (!test_util::WriteStringToFile(local_cache_path, content_data)) { | 777 if (!test_util::WriteStringToFile(local_cache_path, content_data)) { |
778 // Failed to write the content. | 778 // Failed to write the content. |
779 base::MessageLoopProxy::current()->PostTask( | 779 base::ThreadTaskRunnerHandle::Get()->PostTask( |
780 FROM_HERE, | 780 FROM_HERE, |
781 base::Bind(download_action_callback, | 781 base::Bind(download_action_callback, |
782 DRIVE_FILE_ERROR, base::FilePath())); | 782 DRIVE_FILE_ERROR, base::FilePath())); |
783 return CancelCallback(); | 783 return CancelCallback(); |
784 } | 784 } |
785 | 785 |
786 if (!progress_callback.is_null()) { | 786 if (!progress_callback.is_null()) { |
787 // See also the comment in ResumeUpload(). For testing that clients | 787 // See also the comment in ResumeUpload(). For testing that clients |
788 // can handle the case progress_callback is called multiple times, | 788 // can handle the case progress_callback is called multiple times, |
789 // here we invoke the callback twice. | 789 // here we invoke the callback twice. |
790 base::MessageLoopProxy::current()->PostTask( | 790 base::ThreadTaskRunnerHandle::Get()->PostTask( |
791 FROM_HERE, | 791 FROM_HERE, |
792 base::Bind(progress_callback, file_size / 2, file_size)); | 792 base::Bind(progress_callback, file_size / 2, file_size)); |
793 base::MessageLoopProxy::current()->PostTask( | 793 base::ThreadTaskRunnerHandle::Get()->PostTask( |
794 FROM_HERE, | 794 FROM_HERE, |
795 base::Bind(progress_callback, file_size, file_size)); | 795 base::Bind(progress_callback, file_size, file_size)); |
796 } | 796 } |
797 base::MessageLoopProxy::current()->PostTask( | 797 base::ThreadTaskRunnerHandle::Get()->PostTask( |
798 FROM_HERE, | 798 FROM_HERE, |
799 base::Bind(download_action_callback, | 799 base::Bind(download_action_callback, |
800 HTTP_SUCCESS, | 800 HTTP_SUCCESS, |
801 local_cache_path)); | 801 local_cache_path)); |
802 return CancelCallback(); | 802 return CancelCallback(); |
803 } | 803 } |
804 | 804 |
805 CancelCallback FakeDriveService::CopyResource( | 805 CancelCallback FakeDriveService::CopyResource( |
806 const std::string& resource_id, | 806 const std::string& resource_id, |
807 const std::string& in_parent_resource_id, | 807 const std::string& in_parent_resource_id, |
808 const std::string& new_title, | 808 const std::string& new_title, |
809 const base::Time& last_modified, | 809 const base::Time& last_modified, |
810 const FileResourceCallback& callback) { | 810 const FileResourceCallback& callback) { |
811 DCHECK(thread_checker_.CalledOnValidThread()); | 811 DCHECK(thread_checker_.CalledOnValidThread()); |
812 DCHECK(!callback.is_null()); | 812 DCHECK(!callback.is_null()); |
813 | 813 |
814 if (offline_) { | 814 if (offline_) { |
815 base::MessageLoop::current()->PostTask( | 815 base::ThreadTaskRunnerHandle::Get()->PostTask( |
816 FROM_HERE, | 816 FROM_HERE, |
817 base::Bind(callback, | 817 base::Bind(callback, |
818 DRIVE_NO_CONNECTION, | 818 DRIVE_NO_CONNECTION, |
819 base::Passed(scoped_ptr<FileResource>()))); | 819 base::Passed(scoped_ptr<FileResource>()))); |
820 return CancelCallback(); | 820 return CancelCallback(); |
821 } | 821 } |
822 | 822 |
823 const std::string& parent_resource_id = in_parent_resource_id.empty() ? | 823 const std::string& parent_resource_id = in_parent_resource_id.empty() ? |
824 GetRootResourceId() : in_parent_resource_id; | 824 GetRootResourceId() : in_parent_resource_id; |
825 | 825 |
826 EntryInfo* entry = FindEntryByResourceId(resource_id); | 826 EntryInfo* entry = FindEntryByResourceId(resource_id); |
827 if (!entry) { | 827 if (!entry) { |
828 base::MessageLoop::current()->PostTask( | 828 base::ThreadTaskRunnerHandle::Get()->PostTask( |
829 FROM_HERE, | 829 FROM_HERE, |
830 base::Bind(callback, HTTP_NOT_FOUND, | 830 base::Bind(callback, HTTP_NOT_FOUND, |
831 base::Passed(scoped_ptr<FileResource>()))); | 831 base::Passed(scoped_ptr<FileResource>()))); |
832 return CancelCallback(); | 832 return CancelCallback(); |
833 } | 833 } |
834 | 834 |
835 // Make a copy and set the new resource ID and the new title. | 835 // Make a copy and set the new resource ID and the new title. |
836 scoped_ptr<EntryInfo> copied_entry(new EntryInfo); | 836 scoped_ptr<EntryInfo> copied_entry(new EntryInfo); |
837 copied_entry->content_data = entry->content_data; | 837 copied_entry->content_data = entry->content_data; |
838 copied_entry->share_url = entry->share_url; | 838 copied_entry->share_url = entry->share_url; |
(...skipping 16 matching lines...) Expand all Loading... |
855 | 855 |
856 if (!last_modified.is_null()) | 856 if (!last_modified.is_null()) |
857 new_file->set_modified_date(last_modified); | 857 new_file->set_modified_date(last_modified); |
858 | 858 |
859 AddNewChangestamp(new_change); | 859 AddNewChangestamp(new_change); |
860 UpdateETag(new_file); | 860 UpdateETag(new_file); |
861 | 861 |
862 // Add the new entry to the map. | 862 // Add the new entry to the map. |
863 entries_[new_resource_id] = copied_entry.release(); | 863 entries_[new_resource_id] = copied_entry.release(); |
864 | 864 |
865 base::MessageLoop::current()->PostTask( | 865 base::ThreadTaskRunnerHandle::Get()->PostTask( |
866 FROM_HERE, | 866 FROM_HERE, |
867 base::Bind(callback, | 867 base::Bind(callback, |
868 HTTP_SUCCESS, | 868 HTTP_SUCCESS, |
869 base::Passed(make_scoped_ptr(new FileResource(*new_file))))); | 869 base::Passed(make_scoped_ptr(new FileResource(*new_file))))); |
870 base::MessageLoop::current()->PostTask( | 870 base::ThreadTaskRunnerHandle::Get()->PostTask( |
871 FROM_HERE, | 871 FROM_HERE, |
872 base::Bind(&FakeDriveService::NotifyObservers, | 872 base::Bind(&FakeDriveService::NotifyObservers, |
873 weak_ptr_factory_.GetWeakPtr())); | 873 weak_ptr_factory_.GetWeakPtr())); |
874 return CancelCallback(); | 874 return CancelCallback(); |
875 } | 875 } |
876 | 876 |
877 CancelCallback FakeDriveService::UpdateResource( | 877 CancelCallback FakeDriveService::UpdateResource( |
878 const std::string& resource_id, | 878 const std::string& resource_id, |
879 const std::string& parent_resource_id, | 879 const std::string& parent_resource_id, |
880 const std::string& new_title, | 880 const std::string& new_title, |
881 const base::Time& last_modified, | 881 const base::Time& last_modified, |
882 const base::Time& last_viewed_by_me, | 882 const base::Time& last_viewed_by_me, |
883 const google_apis::drive::Properties& properties, | 883 const google_apis::drive::Properties& properties, |
884 const google_apis::FileResourceCallback& callback) { | 884 const google_apis::FileResourceCallback& callback) { |
885 DCHECK(thread_checker_.CalledOnValidThread()); | 885 DCHECK(thread_checker_.CalledOnValidThread()); |
886 DCHECK(!callback.is_null()); | 886 DCHECK(!callback.is_null()); |
887 | 887 |
888 if (offline_) { | 888 if (offline_) { |
889 base::MessageLoop::current()->PostTask( | 889 base::ThreadTaskRunnerHandle::Get()->PostTask( |
890 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION, | 890 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION, |
891 base::Passed(scoped_ptr<FileResource>()))); | 891 base::Passed(scoped_ptr<FileResource>()))); |
892 return CancelCallback(); | 892 return CancelCallback(); |
893 } | 893 } |
894 | 894 |
895 EntryInfo* entry = FindEntryByResourceId(resource_id); | 895 EntryInfo* entry = FindEntryByResourceId(resource_id); |
896 if (!entry) { | 896 if (!entry) { |
897 base::MessageLoop::current()->PostTask( | 897 base::ThreadTaskRunnerHandle::Get()->PostTask( |
898 FROM_HERE, | 898 FROM_HERE, |
899 base::Bind(callback, HTTP_NOT_FOUND, | 899 base::Bind(callback, HTTP_NOT_FOUND, |
900 base::Passed(scoped_ptr<FileResource>()))); | 900 base::Passed(scoped_ptr<FileResource>()))); |
901 return CancelCallback(); | 901 return CancelCallback(); |
902 } | 902 } |
903 | 903 |
904 if (!UserHasWriteAccess(entry->user_permission)) { | 904 if (!UserHasWriteAccess(entry->user_permission)) { |
905 base::MessageLoop::current()->PostTask( | 905 base::ThreadTaskRunnerHandle::Get()->PostTask( |
906 FROM_HERE, | 906 FROM_HERE, |
907 base::Bind(callback, HTTP_FORBIDDEN, | 907 base::Bind(callback, HTTP_FORBIDDEN, |
908 base::Passed(scoped_ptr<FileResource>()))); | 908 base::Passed(scoped_ptr<FileResource>()))); |
909 return CancelCallback(); | 909 return CancelCallback(); |
910 } | 910 } |
911 | 911 |
912 ChangeResource* change = &entry->change_resource; | 912 ChangeResource* change = &entry->change_resource; |
913 FileResource* file = change->mutable_file(); | 913 FileResource* file = change->mutable_file(); |
914 | 914 |
915 if (!new_title.empty()) | 915 if (!new_title.empty()) |
(...skipping 12 matching lines...) Expand all Loading... |
928 | 928 |
929 if (!last_modified.is_null()) | 929 if (!last_modified.is_null()) |
930 file->set_modified_date(last_modified); | 930 file->set_modified_date(last_modified); |
931 | 931 |
932 if (!last_viewed_by_me.is_null()) | 932 if (!last_viewed_by_me.is_null()) |
933 file->set_last_viewed_by_me_date(last_viewed_by_me); | 933 file->set_last_viewed_by_me_date(last_viewed_by_me); |
934 | 934 |
935 AddNewChangestamp(change); | 935 AddNewChangestamp(change); |
936 UpdateETag(file); | 936 UpdateETag(file); |
937 | 937 |
938 base::MessageLoop::current()->PostTask( | 938 base::ThreadTaskRunnerHandle::Get()->PostTask( |
939 FROM_HERE, | 939 FROM_HERE, |
940 base::Bind(callback, HTTP_SUCCESS, | 940 base::Bind(callback, HTTP_SUCCESS, |
941 base::Passed(make_scoped_ptr(new FileResource(*file))))); | 941 base::Passed(make_scoped_ptr(new FileResource(*file))))); |
942 base::MessageLoop::current()->PostTask( | 942 base::ThreadTaskRunnerHandle::Get()->PostTask( |
943 FROM_HERE, | 943 FROM_HERE, |
944 base::Bind(&FakeDriveService::NotifyObservers, | 944 base::Bind(&FakeDriveService::NotifyObservers, |
945 weak_ptr_factory_.GetWeakPtr())); | 945 weak_ptr_factory_.GetWeakPtr())); |
946 return CancelCallback(); | 946 return CancelCallback(); |
947 } | 947 } |
948 | 948 |
949 CancelCallback FakeDriveService::AddResourceToDirectory( | 949 CancelCallback FakeDriveService::AddResourceToDirectory( |
950 const std::string& parent_resource_id, | 950 const std::string& parent_resource_id, |
951 const std::string& resource_id, | 951 const std::string& resource_id, |
952 const EntryActionCallback& callback) { | 952 const EntryActionCallback& callback) { |
953 DCHECK(thread_checker_.CalledOnValidThread()); | 953 DCHECK(thread_checker_.CalledOnValidThread()); |
954 DCHECK(!callback.is_null()); | 954 DCHECK(!callback.is_null()); |
955 | 955 |
956 if (offline_) { | 956 if (offline_) { |
957 base::MessageLoop::current()->PostTask( | 957 base::ThreadTaskRunnerHandle::Get()->PostTask( |
958 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); | 958 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); |
959 return CancelCallback(); | 959 return CancelCallback(); |
960 } | 960 } |
961 | 961 |
962 EntryInfo* entry = FindEntryByResourceId(resource_id); | 962 EntryInfo* entry = FindEntryByResourceId(resource_id); |
963 if (!entry) { | 963 if (!entry) { |
964 base::MessageLoop::current()->PostTask( | 964 base::ThreadTaskRunnerHandle::Get()->PostTask( |
965 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 965 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
966 return CancelCallback(); | 966 return CancelCallback(); |
967 } | 967 } |
968 | 968 |
969 ChangeResource* change = &entry->change_resource; | 969 ChangeResource* change = &entry->change_resource; |
970 // On the real Drive server, resources do not necessary shape a tree | 970 // On the real Drive server, resources do not necessary shape a tree |
971 // structure. That is, each resource can have multiple parent. | 971 // structure. That is, each resource can have multiple parent. |
972 // We mimic the behavior here; AddResourceToDirectoy just adds | 972 // We mimic the behavior here; AddResourceToDirectoy just adds |
973 // one more parent, not overwriting old ones. | 973 // one more parent, not overwriting old ones. |
974 ParentReference parent; | 974 ParentReference parent; |
975 parent.set_file_id(parent_resource_id); | 975 parent.set_file_id(parent_resource_id); |
976 parent.set_parent_link(GetFakeLinkUrl(parent_resource_id)); | 976 parent.set_parent_link(GetFakeLinkUrl(parent_resource_id)); |
977 change->mutable_file()->mutable_parents()->push_back(parent); | 977 change->mutable_file()->mutable_parents()->push_back(parent); |
978 | 978 |
979 AddNewChangestamp(change); | 979 AddNewChangestamp(change); |
980 base::MessageLoop::current()->PostTask( | 980 base::ThreadTaskRunnerHandle::Get()->PostTask( |
981 FROM_HERE, base::Bind(callback, HTTP_SUCCESS)); | 981 FROM_HERE, base::Bind(callback, HTTP_SUCCESS)); |
982 base::MessageLoop::current()->PostTask( | 982 base::ThreadTaskRunnerHandle::Get()->PostTask( |
983 FROM_HERE, | 983 FROM_HERE, |
984 base::Bind(&FakeDriveService::NotifyObservers, | 984 base::Bind(&FakeDriveService::NotifyObservers, |
985 weak_ptr_factory_.GetWeakPtr())); | 985 weak_ptr_factory_.GetWeakPtr())); |
986 return CancelCallback(); | 986 return CancelCallback(); |
987 } | 987 } |
988 | 988 |
989 CancelCallback FakeDriveService::RemoveResourceFromDirectory( | 989 CancelCallback FakeDriveService::RemoveResourceFromDirectory( |
990 const std::string& parent_resource_id, | 990 const std::string& parent_resource_id, |
991 const std::string& resource_id, | 991 const std::string& resource_id, |
992 const EntryActionCallback& callback) { | 992 const EntryActionCallback& callback) { |
993 DCHECK(thread_checker_.CalledOnValidThread()); | 993 DCHECK(thread_checker_.CalledOnValidThread()); |
994 DCHECK(!callback.is_null()); | 994 DCHECK(!callback.is_null()); |
995 | 995 |
996 if (offline_) { | 996 if (offline_) { |
997 base::MessageLoop::current()->PostTask( | 997 base::ThreadTaskRunnerHandle::Get()->PostTask( |
998 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); | 998 FROM_HERE, base::Bind(callback, DRIVE_NO_CONNECTION)); |
999 return CancelCallback(); | 999 return CancelCallback(); |
1000 } | 1000 } |
1001 | 1001 |
1002 EntryInfo* entry = FindEntryByResourceId(resource_id); | 1002 EntryInfo* entry = FindEntryByResourceId(resource_id); |
1003 if (!entry) { | 1003 if (!entry) { |
1004 base::MessageLoop::current()->PostTask( | 1004 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1005 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 1005 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
1006 return CancelCallback(); | 1006 return CancelCallback(); |
1007 } | 1007 } |
1008 | 1008 |
1009 ChangeResource* change = &entry->change_resource; | 1009 ChangeResource* change = &entry->change_resource; |
1010 FileResource* file = change->mutable_file(); | 1010 FileResource* file = change->mutable_file(); |
1011 std::vector<ParentReference>* parents = file->mutable_parents(); | 1011 std::vector<ParentReference>* parents = file->mutable_parents(); |
1012 for (size_t i = 0; i < parents->size(); ++i) { | 1012 for (size_t i = 0; i < parents->size(); ++i) { |
1013 if ((*parents)[i].file_id() == parent_resource_id) { | 1013 if ((*parents)[i].file_id() == parent_resource_id) { |
1014 parents->erase(parents->begin() + i); | 1014 parents->erase(parents->begin() + i); |
1015 AddNewChangestamp(change); | 1015 AddNewChangestamp(change); |
1016 base::MessageLoop::current()->PostTask( | 1016 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1017 FROM_HERE, base::Bind(callback, HTTP_NO_CONTENT)); | 1017 FROM_HERE, base::Bind(callback, HTTP_NO_CONTENT)); |
1018 base::MessageLoop::current()->PostTask( | 1018 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1019 FROM_HERE, | 1019 FROM_HERE, |
1020 base::Bind(&FakeDriveService::NotifyObservers, | 1020 base::Bind(&FakeDriveService::NotifyObservers, |
1021 weak_ptr_factory_.GetWeakPtr())); | 1021 weak_ptr_factory_.GetWeakPtr())); |
1022 return CancelCallback(); | 1022 return CancelCallback(); |
1023 } | 1023 } |
1024 } | 1024 } |
1025 | 1025 |
1026 base::MessageLoop::current()->PostTask( | 1026 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1027 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 1027 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
1028 return CancelCallback(); | 1028 return CancelCallback(); |
1029 } | 1029 } |
1030 | 1030 |
1031 CancelCallback FakeDriveService::AddNewDirectory( | 1031 CancelCallback FakeDriveService::AddNewDirectory( |
1032 const std::string& parent_resource_id, | 1032 const std::string& parent_resource_id, |
1033 const std::string& directory_title, | 1033 const std::string& directory_title, |
1034 const AddNewDirectoryOptions& options, | 1034 const AddNewDirectoryOptions& options, |
1035 const FileResourceCallback& callback) { | 1035 const FileResourceCallback& callback) { |
1036 return AddNewDirectoryWithResourceId( | 1036 return AddNewDirectoryWithResourceId( |
1037 "", | 1037 "", |
1038 parent_resource_id.empty() ? GetRootResourceId() : parent_resource_id, | 1038 parent_resource_id.empty() ? GetRootResourceId() : parent_resource_id, |
1039 directory_title, | 1039 directory_title, |
1040 options, | 1040 options, |
1041 callback); | 1041 callback); |
1042 } | 1042 } |
1043 | 1043 |
1044 CancelCallback FakeDriveService::InitiateUploadNewFile( | 1044 CancelCallback FakeDriveService::InitiateUploadNewFile( |
1045 const std::string& content_type, | 1045 const std::string& content_type, |
1046 int64 content_length, | 1046 int64 content_length, |
1047 const std::string& parent_resource_id, | 1047 const std::string& parent_resource_id, |
1048 const std::string& title, | 1048 const std::string& title, |
1049 const UploadNewFileOptions& options, | 1049 const UploadNewFileOptions& options, |
1050 const InitiateUploadCallback& callback) { | 1050 const InitiateUploadCallback& callback) { |
1051 DCHECK(thread_checker_.CalledOnValidThread()); | 1051 DCHECK(thread_checker_.CalledOnValidThread()); |
1052 DCHECK(!callback.is_null()); | 1052 DCHECK(!callback.is_null()); |
1053 | 1053 |
1054 if (offline_) { | 1054 if (offline_) { |
1055 base::MessageLoop::current()->PostTask( | 1055 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1056 FROM_HERE, | 1056 FROM_HERE, |
1057 base::Bind(callback, DRIVE_NO_CONNECTION, GURL())); | 1057 base::Bind(callback, DRIVE_NO_CONNECTION, GURL())); |
1058 return CancelCallback(); | 1058 return CancelCallback(); |
1059 } | 1059 } |
1060 | 1060 |
1061 if (parent_resource_id != GetRootResourceId() && | 1061 if (parent_resource_id != GetRootResourceId() && |
1062 !entries_.count(parent_resource_id)) { | 1062 !entries_.count(parent_resource_id)) { |
1063 base::MessageLoop::current()->PostTask( | 1063 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1064 FROM_HERE, | 1064 FROM_HERE, |
1065 base::Bind(callback, HTTP_NOT_FOUND, GURL())); | 1065 base::Bind(callback, HTTP_NOT_FOUND, GURL())); |
1066 return CancelCallback(); | 1066 return CancelCallback(); |
1067 } | 1067 } |
1068 | 1068 |
1069 GURL session_url = GetNewUploadSessionUrl(); | 1069 GURL session_url = GetNewUploadSessionUrl(); |
1070 upload_sessions_[session_url] = | 1070 upload_sessions_[session_url] = |
1071 UploadSession(content_type, content_length, | 1071 UploadSession(content_type, content_length, |
1072 parent_resource_id, | 1072 parent_resource_id, |
1073 "", // resource_id | 1073 "", // resource_id |
1074 "", // etag | 1074 "", // etag |
1075 title); | 1075 title); |
1076 | 1076 |
1077 base::MessageLoop::current()->PostTask( | 1077 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1078 FROM_HERE, | 1078 FROM_HERE, |
1079 base::Bind(callback, HTTP_SUCCESS, session_url)); | 1079 base::Bind(callback, HTTP_SUCCESS, session_url)); |
1080 return CancelCallback(); | 1080 return CancelCallback(); |
1081 } | 1081 } |
1082 | 1082 |
1083 CancelCallback FakeDriveService::InitiateUploadExistingFile( | 1083 CancelCallback FakeDriveService::InitiateUploadExistingFile( |
1084 const std::string& content_type, | 1084 const std::string& content_type, |
1085 int64 content_length, | 1085 int64 content_length, |
1086 const std::string& resource_id, | 1086 const std::string& resource_id, |
1087 const UploadExistingFileOptions& options, | 1087 const UploadExistingFileOptions& options, |
1088 const InitiateUploadCallback& callback) { | 1088 const InitiateUploadCallback& callback) { |
1089 DCHECK(thread_checker_.CalledOnValidThread()); | 1089 DCHECK(thread_checker_.CalledOnValidThread()); |
1090 DCHECK(!callback.is_null()); | 1090 DCHECK(!callback.is_null()); |
1091 | 1091 |
1092 if (offline_) { | 1092 if (offline_) { |
1093 base::MessageLoop::current()->PostTask( | 1093 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1094 FROM_HERE, | 1094 FROM_HERE, |
1095 base::Bind(callback, DRIVE_NO_CONNECTION, GURL())); | 1095 base::Bind(callback, DRIVE_NO_CONNECTION, GURL())); |
1096 return CancelCallback(); | 1096 return CancelCallback(); |
1097 } | 1097 } |
1098 | 1098 |
1099 EntryInfo* entry = FindEntryByResourceId(resource_id); | 1099 EntryInfo* entry = FindEntryByResourceId(resource_id); |
1100 if (!entry) { | 1100 if (!entry) { |
1101 base::MessageLoop::current()->PostTask( | 1101 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1102 FROM_HERE, | 1102 FROM_HERE, |
1103 base::Bind(callback, HTTP_NOT_FOUND, GURL())); | 1103 base::Bind(callback, HTTP_NOT_FOUND, GURL())); |
1104 return CancelCallback(); | 1104 return CancelCallback(); |
1105 } | 1105 } |
1106 | 1106 |
1107 if (!UserHasWriteAccess(entry->user_permission)) { | 1107 if (!UserHasWriteAccess(entry->user_permission)) { |
1108 base::MessageLoop::current()->PostTask( | 1108 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1109 FROM_HERE, | 1109 FROM_HERE, |
1110 base::Bind(callback, HTTP_FORBIDDEN, GURL())); | 1110 base::Bind(callback, HTTP_FORBIDDEN, GURL())); |
1111 return CancelCallback(); | 1111 return CancelCallback(); |
1112 } | 1112 } |
1113 | 1113 |
1114 FileResource* file = entry->change_resource.mutable_file(); | 1114 FileResource* file = entry->change_resource.mutable_file(); |
1115 if (!options.etag.empty() && options.etag != file->etag()) { | 1115 if (!options.etag.empty() && options.etag != file->etag()) { |
1116 base::MessageLoop::current()->PostTask( | 1116 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1117 FROM_HERE, | 1117 FROM_HERE, |
1118 base::Bind(callback, HTTP_PRECONDITION, GURL())); | 1118 base::Bind(callback, HTTP_PRECONDITION, GURL())); |
1119 return CancelCallback(); | 1119 return CancelCallback(); |
1120 } | 1120 } |
1121 // TODO(hashimoto): Update |file|'s metadata with |options|. | 1121 // TODO(hashimoto): Update |file|'s metadata with |options|. |
1122 | 1122 |
1123 GURL session_url = GetNewUploadSessionUrl(); | 1123 GURL session_url = GetNewUploadSessionUrl(); |
1124 upload_sessions_[session_url] = | 1124 upload_sessions_[session_url] = |
1125 UploadSession(content_type, content_length, | 1125 UploadSession(content_type, content_length, |
1126 "", // parent_resource_id | 1126 "", // parent_resource_id |
1127 resource_id, | 1127 resource_id, |
1128 file->etag(), | 1128 file->etag(), |
1129 "" /* title */); | 1129 "" /* title */); |
1130 | 1130 |
1131 base::MessageLoop::current()->PostTask( | 1131 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1132 FROM_HERE, | 1132 FROM_HERE, |
1133 base::Bind(callback, HTTP_SUCCESS, session_url)); | 1133 base::Bind(callback, HTTP_SUCCESS, session_url)); |
1134 return CancelCallback(); | 1134 return CancelCallback(); |
1135 } | 1135 } |
1136 | 1136 |
1137 CancelCallback FakeDriveService::GetUploadStatus( | 1137 CancelCallback FakeDriveService::GetUploadStatus( |
1138 const GURL& upload_url, | 1138 const GURL& upload_url, |
1139 int64 content_length, | 1139 int64 content_length, |
1140 const UploadRangeCallback& callback) { | 1140 const UploadRangeCallback& callback) { |
1141 DCHECK(thread_checker_.CalledOnValidThread()); | 1141 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1179 } | 1179 } |
1180 | 1180 |
1181 if (!progress_callback.is_null()) { | 1181 if (!progress_callback.is_null()) { |
1182 // In the real GDataWapi/Drive DriveService, progress is reported in | 1182 // In the real GDataWapi/Drive DriveService, progress is reported in |
1183 // nondeterministic timing. In this fake implementation, we choose to call | 1183 // nondeterministic timing. In this fake implementation, we choose to call |
1184 // it twice per one ResumeUpload. This is for making sure that client code | 1184 // it twice per one ResumeUpload. This is for making sure that client code |
1185 // works fine even if the callback is invoked more than once; it is the | 1185 // works fine even if the callback is invoked more than once; it is the |
1186 // crucial difference of the progress callback from others. | 1186 // crucial difference of the progress callback from others. |
1187 // Note that progress is notified in the relative offset in each chunk. | 1187 // Note that progress is notified in the relative offset in each chunk. |
1188 const int64 chunk_size = end_position - start_position; | 1188 const int64 chunk_size = end_position - start_position; |
1189 base::MessageLoop::current()->PostTask( | 1189 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1190 FROM_HERE, base::Bind(progress_callback, chunk_size / 2, chunk_size)); | 1190 FROM_HERE, base::Bind(progress_callback, chunk_size / 2, chunk_size)); |
1191 base::MessageLoop::current()->PostTask( | 1191 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1192 FROM_HERE, base::Bind(progress_callback, chunk_size, chunk_size)); | 1192 FROM_HERE, base::Bind(progress_callback, chunk_size, chunk_size)); |
1193 } | 1193 } |
1194 | 1194 |
1195 if (content_length != end_position) { | 1195 if (content_length != end_position) { |
1196 session->uploaded_size = end_position; | 1196 session->uploaded_size = end_position; |
1197 completion_callback.Run(HTTP_RESUME_INCOMPLETE, scoped_ptr<FileResource>()); | 1197 completion_callback.Run(HTTP_RESUME_INCOMPLETE, scoped_ptr<FileResource>()); |
1198 return CancelCallback(); | 1198 return CancelCallback(); |
1199 } | 1199 } |
1200 | 1200 |
1201 std::string content_data; | 1201 std::string content_data; |
(...skipping 15 matching lines...) Expand all Loading... |
1217 session->parent_resource_id, | 1217 session->parent_resource_id, |
1218 session->title, | 1218 session->title, |
1219 false); // shared_with_me | 1219 false); // shared_with_me |
1220 if (!new_entry) { | 1220 if (!new_entry) { |
1221 completion_callback.Run(HTTP_NOT_FOUND, scoped_ptr<FileResource>()); | 1221 completion_callback.Run(HTTP_NOT_FOUND, scoped_ptr<FileResource>()); |
1222 return CancelCallback(); | 1222 return CancelCallback(); |
1223 } | 1223 } |
1224 | 1224 |
1225 completion_callback.Run(HTTP_CREATED, make_scoped_ptr( | 1225 completion_callback.Run(HTTP_CREATED, make_scoped_ptr( |
1226 new FileResource(*new_entry->change_resource.file()))); | 1226 new FileResource(*new_entry->change_resource.file()))); |
1227 base::MessageLoop::current()->PostTask( | 1227 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1228 FROM_HERE, | 1228 FROM_HERE, |
1229 base::Bind(&FakeDriveService::NotifyObservers, | 1229 base::Bind(&FakeDriveService::NotifyObservers, |
1230 weak_ptr_factory_.GetWeakPtr())); | 1230 weak_ptr_factory_.GetWeakPtr())); |
1231 return CancelCallback(); | 1231 return CancelCallback(); |
1232 } | 1232 } |
1233 | 1233 |
1234 EntryInfo* entry = FindEntryByResourceId(session->resource_id); | 1234 EntryInfo* entry = FindEntryByResourceId(session->resource_id); |
1235 if (!entry) { | 1235 if (!entry) { |
1236 completion_callback.Run(HTTP_NOT_FOUND, scoped_ptr<FileResource>()); | 1236 completion_callback.Run(HTTP_NOT_FOUND, scoped_ptr<FileResource>()); |
1237 return CancelCallback(); | 1237 return CancelCallback(); |
1238 } | 1238 } |
1239 | 1239 |
1240 ChangeResource* change = &entry->change_resource; | 1240 ChangeResource* change = &entry->change_resource; |
1241 FileResource* file = change->mutable_file(); | 1241 FileResource* file = change->mutable_file(); |
1242 if (file->etag().empty() || session->etag != file->etag()) { | 1242 if (file->etag().empty() || session->etag != file->etag()) { |
1243 completion_callback.Run(HTTP_PRECONDITION, scoped_ptr<FileResource>()); | 1243 completion_callback.Run(HTTP_PRECONDITION, scoped_ptr<FileResource>()); |
1244 return CancelCallback(); | 1244 return CancelCallback(); |
1245 } | 1245 } |
1246 | 1246 |
1247 file->set_md5_checksum(base::MD5String(content_data)); | 1247 file->set_md5_checksum(base::MD5String(content_data)); |
1248 entry->content_data = content_data; | 1248 entry->content_data = content_data; |
1249 file->set_file_size(end_position); | 1249 file->set_file_size(end_position); |
1250 AddNewChangestamp(change); | 1250 AddNewChangestamp(change); |
1251 UpdateETag(file); | 1251 UpdateETag(file); |
1252 | 1252 |
1253 completion_callback.Run(HTTP_SUCCESS, make_scoped_ptr( | 1253 completion_callback.Run(HTTP_SUCCESS, make_scoped_ptr( |
1254 new FileResource(*file))); | 1254 new FileResource(*file))); |
1255 base::MessageLoop::current()->PostTask( | 1255 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1256 FROM_HERE, | 1256 FROM_HERE, |
1257 base::Bind(&FakeDriveService::NotifyObservers, | 1257 base::Bind(&FakeDriveService::NotifyObservers, |
1258 weak_ptr_factory_.GetWeakPtr())); | 1258 weak_ptr_factory_.GetWeakPtr())); |
1259 return CancelCallback(); | 1259 return CancelCallback(); |
1260 } | 1260 } |
1261 | 1261 |
1262 CancelCallback FakeDriveService::MultipartUploadNewFile( | 1262 CancelCallback FakeDriveService::MultipartUploadNewFile( |
1263 const std::string& content_type, | 1263 const std::string& content_type, |
1264 int64 content_length, | 1264 int64 content_length, |
1265 const std::string& parent_resource_id, | 1265 const std::string& parent_resource_id, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 return CancelCallback(); | 1328 return CancelCallback(); |
1329 } | 1329 } |
1330 | 1330 |
1331 CancelCallback FakeDriveService::UninstallApp( | 1331 CancelCallback FakeDriveService::UninstallApp( |
1332 const std::string& app_id, | 1332 const std::string& app_id, |
1333 const google_apis::EntryActionCallback& callback) { | 1333 const google_apis::EntryActionCallback& callback) { |
1334 DCHECK(thread_checker_.CalledOnValidThread()); | 1334 DCHECK(thread_checker_.CalledOnValidThread()); |
1335 DCHECK(!callback.is_null()); | 1335 DCHECK(!callback.is_null()); |
1336 | 1336 |
1337 if (offline_) { | 1337 if (offline_) { |
1338 base::MessageLoop::current()->PostTask( | 1338 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1339 FROM_HERE, | 1339 FROM_HERE, |
1340 base::Bind(callback, google_apis::DRIVE_NO_CONNECTION)); | 1340 base::Bind(callback, google_apis::DRIVE_NO_CONNECTION)); |
1341 return CancelCallback(); | 1341 return CancelCallback(); |
1342 } | 1342 } |
1343 | 1343 |
1344 // Find app_id from app_info_value_ and delete. | 1344 // Find app_id from app_info_value_ and delete. |
1345 base::ListValue* items = NULL; | 1345 base::ListValue* items = NULL; |
1346 if (!app_info_value_->GetList("items", &items)) { | 1346 if (!app_info_value_->GetList("items", &items)) { |
1347 base::MessageLoop::current()->PostTask( | 1347 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1348 FROM_HERE, | 1348 FROM_HERE, |
1349 base::Bind(callback, google_apis::HTTP_NOT_FOUND)); | 1349 base::Bind(callback, google_apis::HTTP_NOT_FOUND)); |
1350 return CancelCallback(); | 1350 return CancelCallback(); |
1351 } | 1351 } |
1352 | 1352 |
1353 for (size_t i = 0; i < items->GetSize(); ++i) { | 1353 for (size_t i = 0; i < items->GetSize(); ++i) { |
1354 base::DictionaryValue* item = NULL; | 1354 base::DictionaryValue* item = NULL; |
1355 std::string id; | 1355 std::string id; |
1356 if (items->GetDictionary(i, &item) && item->GetString("id", &id) && | 1356 if (items->GetDictionary(i, &item) && item->GetString("id", &id) && |
1357 id == app_id) { | 1357 id == app_id) { |
1358 base::MessageLoop::current()->PostTask( | 1358 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1359 FROM_HERE, | 1359 FROM_HERE, |
1360 base::Bind(callback, | 1360 base::Bind(callback, |
1361 items->Remove(i, NULL) ? google_apis::HTTP_NO_CONTENT | 1361 items->Remove(i, NULL) ? google_apis::HTTP_NO_CONTENT |
1362 : google_apis::HTTP_NOT_FOUND)); | 1362 : google_apis::HTTP_NOT_FOUND)); |
1363 return CancelCallback(); | 1363 return CancelCallback(); |
1364 } | 1364 } |
1365 } | 1365 } |
1366 | 1366 |
1367 base::MessageLoop::current()->PostTask( | 1367 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1368 FROM_HERE, | 1368 FROM_HERE, |
1369 base::Bind(callback, google_apis::HTTP_NOT_FOUND)); | 1369 base::Bind(callback, google_apis::HTTP_NOT_FOUND)); |
1370 return CancelCallback(); | 1370 return CancelCallback(); |
1371 } | 1371 } |
1372 | 1372 |
1373 void FakeDriveService::AddNewFile(const std::string& content_type, | 1373 void FakeDriveService::AddNewFile(const std::string& content_type, |
1374 const std::string& content_data, | 1374 const std::string& content_data, |
1375 const std::string& parent_resource_id, | 1375 const std::string& parent_resource_id, |
1376 const std::string& title, | 1376 const std::string& title, |
1377 bool shared_with_me, | 1377 bool shared_with_me, |
1378 const FileResourceCallback& callback) { | 1378 const FileResourceCallback& callback) { |
1379 AddNewFileWithResourceId("", content_type, content_data, parent_resource_id, | 1379 AddNewFileWithResourceId("", content_type, content_data, parent_resource_id, |
1380 title, shared_with_me, callback); | 1380 title, shared_with_me, callback); |
1381 } | 1381 } |
1382 | 1382 |
1383 void FakeDriveService::AddNewFileWithResourceId( | 1383 void FakeDriveService::AddNewFileWithResourceId( |
1384 const std::string& resource_id, | 1384 const std::string& resource_id, |
1385 const std::string& content_type, | 1385 const std::string& content_type, |
1386 const std::string& content_data, | 1386 const std::string& content_data, |
1387 const std::string& parent_resource_id, | 1387 const std::string& parent_resource_id, |
1388 const std::string& title, | 1388 const std::string& title, |
1389 bool shared_with_me, | 1389 bool shared_with_me, |
1390 const FileResourceCallback& callback) { | 1390 const FileResourceCallback& callback) { |
1391 DCHECK(thread_checker_.CalledOnValidThread()); | 1391 DCHECK(thread_checker_.CalledOnValidThread()); |
1392 DCHECK(!callback.is_null()); | 1392 DCHECK(!callback.is_null()); |
1393 | 1393 |
1394 if (offline_) { | 1394 if (offline_) { |
1395 base::MessageLoop::current()->PostTask( | 1395 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1396 FROM_HERE, | 1396 FROM_HERE, |
1397 base::Bind(callback, | 1397 base::Bind(callback, |
1398 DRIVE_NO_CONNECTION, | 1398 DRIVE_NO_CONNECTION, |
1399 base::Passed(scoped_ptr<FileResource>()))); | 1399 base::Passed(scoped_ptr<FileResource>()))); |
1400 return; | 1400 return; |
1401 } | 1401 } |
1402 | 1402 |
1403 const EntryInfo* new_entry = AddNewEntry(resource_id, | 1403 const EntryInfo* new_entry = AddNewEntry(resource_id, |
1404 content_type, | 1404 content_type, |
1405 content_data, | 1405 content_data, |
1406 parent_resource_id, | 1406 parent_resource_id, |
1407 title, | 1407 title, |
1408 shared_with_me); | 1408 shared_with_me); |
1409 if (!new_entry) { | 1409 if (!new_entry) { |
1410 base::MessageLoop::current()->PostTask( | 1410 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1411 FROM_HERE, | 1411 FROM_HERE, |
1412 base::Bind(callback, HTTP_NOT_FOUND, | 1412 base::Bind(callback, HTTP_NOT_FOUND, |
1413 base::Passed(scoped_ptr<FileResource>()))); | 1413 base::Passed(scoped_ptr<FileResource>()))); |
1414 return; | 1414 return; |
1415 } | 1415 } |
1416 | 1416 |
1417 base::MessageLoop::current()->PostTask( | 1417 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1418 FROM_HERE, | 1418 FROM_HERE, |
1419 base::Bind(callback, HTTP_CREATED, | 1419 base::Bind(callback, HTTP_CREATED, |
1420 base::Passed(make_scoped_ptr( | 1420 base::Passed(make_scoped_ptr( |
1421 new FileResource(*new_entry->change_resource.file()))))); | 1421 new FileResource(*new_entry->change_resource.file()))))); |
1422 base::MessageLoop::current()->PostTask( | 1422 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1423 FROM_HERE, | 1423 FROM_HERE, |
1424 base::Bind(&FakeDriveService::NotifyObservers, | 1424 base::Bind(&FakeDriveService::NotifyObservers, |
1425 weak_ptr_factory_.GetWeakPtr())); | 1425 weak_ptr_factory_.GetWeakPtr())); |
1426 } | 1426 } |
1427 | 1427 |
1428 CancelCallback FakeDriveService::AddNewDirectoryWithResourceId( | 1428 CancelCallback FakeDriveService::AddNewDirectoryWithResourceId( |
1429 const std::string& resource_id, | 1429 const std::string& resource_id, |
1430 const std::string& parent_resource_id, | 1430 const std::string& parent_resource_id, |
1431 const std::string& directory_title, | 1431 const std::string& directory_title, |
1432 const AddNewDirectoryOptions& options, | 1432 const AddNewDirectoryOptions& options, |
1433 const FileResourceCallback& callback) { | 1433 const FileResourceCallback& callback) { |
1434 DCHECK(thread_checker_.CalledOnValidThread()); | 1434 DCHECK(thread_checker_.CalledOnValidThread()); |
1435 DCHECK(!callback.is_null()); | 1435 DCHECK(!callback.is_null()); |
1436 | 1436 |
1437 if (offline_) { | 1437 if (offline_) { |
1438 base::MessageLoop::current()->PostTask( | 1438 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1439 FROM_HERE, | 1439 FROM_HERE, |
1440 base::Bind(callback, | 1440 base::Bind(callback, |
1441 DRIVE_NO_CONNECTION, | 1441 DRIVE_NO_CONNECTION, |
1442 base::Passed(scoped_ptr<FileResource>()))); | 1442 base::Passed(scoped_ptr<FileResource>()))); |
1443 return CancelCallback(); | 1443 return CancelCallback(); |
1444 } | 1444 } |
1445 | 1445 |
1446 const EntryInfo* new_entry = AddNewEntry(resource_id, | 1446 const EntryInfo* new_entry = AddNewEntry(resource_id, |
1447 util::kDriveFolderMimeType, | 1447 util::kDriveFolderMimeType, |
1448 "", // content_data | 1448 "", // content_data |
1449 parent_resource_id, | 1449 parent_resource_id, |
1450 directory_title, | 1450 directory_title, |
1451 false); // shared_with_me | 1451 false); // shared_with_me |
1452 if (!new_entry) { | 1452 if (!new_entry) { |
1453 base::MessageLoop::current()->PostTask( | 1453 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1454 FROM_HERE, | 1454 FROM_HERE, |
1455 base::Bind(callback, HTTP_NOT_FOUND, | 1455 base::Bind(callback, HTTP_NOT_FOUND, |
1456 base::Passed(scoped_ptr<FileResource>()))); | 1456 base::Passed(scoped_ptr<FileResource>()))); |
1457 return CancelCallback(); | 1457 return CancelCallback(); |
1458 } | 1458 } |
1459 | 1459 |
1460 base::MessageLoop::current()->PostTask( | 1460 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1461 FROM_HERE, | 1461 FROM_HERE, |
1462 base::Bind(callback, HTTP_CREATED, | 1462 base::Bind(callback, HTTP_CREATED, |
1463 base::Passed(make_scoped_ptr( | 1463 base::Passed(make_scoped_ptr( |
1464 new FileResource(*new_entry->change_resource.file()))))); | 1464 new FileResource(*new_entry->change_resource.file()))))); |
1465 base::MessageLoop::current()->PostTask( | 1465 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1466 FROM_HERE, | 1466 FROM_HERE, |
1467 base::Bind(&FakeDriveService::NotifyObservers, | 1467 base::Bind(&FakeDriveService::NotifyObservers, |
1468 weak_ptr_factory_.GetWeakPtr())); | 1468 weak_ptr_factory_.GetWeakPtr())); |
1469 return CancelCallback(); | 1469 return CancelCallback(); |
1470 } | 1470 } |
1471 | 1471 |
1472 void FakeDriveService::SetLastModifiedTime( | 1472 void FakeDriveService::SetLastModifiedTime( |
1473 const std::string& resource_id, | 1473 const std::string& resource_id, |
1474 const base::Time& last_modified_time, | 1474 const base::Time& last_modified_time, |
1475 const FileResourceCallback& callback) { | 1475 const FileResourceCallback& callback) { |
1476 DCHECK(thread_checker_.CalledOnValidThread()); | 1476 DCHECK(thread_checker_.CalledOnValidThread()); |
1477 DCHECK(!callback.is_null()); | 1477 DCHECK(!callback.is_null()); |
1478 | 1478 |
1479 if (offline_) { | 1479 if (offline_) { |
1480 base::MessageLoop::current()->PostTask( | 1480 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1481 FROM_HERE, | 1481 FROM_HERE, |
1482 base::Bind(callback, | 1482 base::Bind(callback, |
1483 DRIVE_NO_CONNECTION, | 1483 DRIVE_NO_CONNECTION, |
1484 base::Passed(scoped_ptr<FileResource>()))); | 1484 base::Passed(scoped_ptr<FileResource>()))); |
1485 return; | 1485 return; |
1486 } | 1486 } |
1487 | 1487 |
1488 EntryInfo* entry = FindEntryByResourceId(resource_id); | 1488 EntryInfo* entry = FindEntryByResourceId(resource_id); |
1489 if (!entry) { | 1489 if (!entry) { |
1490 base::MessageLoop::current()->PostTask( | 1490 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1491 FROM_HERE, | 1491 FROM_HERE, |
1492 base::Bind(callback, HTTP_NOT_FOUND, | 1492 base::Bind(callback, HTTP_NOT_FOUND, |
1493 base::Passed(scoped_ptr<FileResource>()))); | 1493 base::Passed(scoped_ptr<FileResource>()))); |
1494 return; | 1494 return; |
1495 } | 1495 } |
1496 | 1496 |
1497 ChangeResource* change = &entry->change_resource; | 1497 ChangeResource* change = &entry->change_resource; |
1498 FileResource* file = change->mutable_file(); | 1498 FileResource* file = change->mutable_file(); |
1499 file->set_modified_date(last_modified_time); | 1499 file->set_modified_date(last_modified_time); |
1500 | 1500 |
1501 base::MessageLoop::current()->PostTask( | 1501 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1502 FROM_HERE, | 1502 FROM_HERE, |
1503 base::Bind(callback, HTTP_SUCCESS, | 1503 base::Bind(callback, HTTP_SUCCESS, |
1504 base::Passed(make_scoped_ptr(new FileResource(*file))))); | 1504 base::Passed(make_scoped_ptr(new FileResource(*file))))); |
1505 } | 1505 } |
1506 | 1506 |
1507 google_apis::DriveApiErrorCode FakeDriveService::SetUserPermission( | 1507 google_apis::DriveApiErrorCode FakeDriveService::SetUserPermission( |
1508 const std::string& resource_id, | 1508 const std::string& resource_id, |
1509 google_apis::drive::PermissionRole user_permission) { | 1509 google_apis::drive::PermissionRole user_permission) { |
1510 DCHECK(thread_checker_.CalledOnValidThread()); | 1510 DCHECK(thread_checker_.CalledOnValidThread()); |
1511 | 1511 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1632 | 1632 |
1633 void FakeDriveService::GetChangeListInternal( | 1633 void FakeDriveService::GetChangeListInternal( |
1634 int64 start_changestamp, | 1634 int64 start_changestamp, |
1635 const std::string& search_query, | 1635 const std::string& search_query, |
1636 const std::string& directory_resource_id, | 1636 const std::string& directory_resource_id, |
1637 int start_offset, | 1637 int start_offset, |
1638 int max_results, | 1638 int max_results, |
1639 int* load_counter, | 1639 int* load_counter, |
1640 const ChangeListCallback& callback) { | 1640 const ChangeListCallback& callback) { |
1641 if (offline_) { | 1641 if (offline_) { |
1642 base::MessageLoop::current()->PostTask( | 1642 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1643 FROM_HERE, | 1643 FROM_HERE, |
1644 base::Bind(callback, | 1644 base::Bind(callback, |
1645 DRIVE_NO_CONNECTION, | 1645 DRIVE_NO_CONNECTION, |
1646 base::Passed(scoped_ptr<ChangeList>()))); | 1646 base::Passed(scoped_ptr<ChangeList>()))); |
1647 return; | 1647 return; |
1648 } | 1648 } |
1649 | 1649 |
1650 // Filter out entries per parameters like |directory_resource_id| and | 1650 // Filter out entries per parameters like |directory_resource_id| and |
1651 // |search_query|. | 1651 // |search_query|. |
1652 ScopedVector<ChangeResource> entries; | 1652 ScopedVector<ChangeResource> entries; |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1743 next_url = net::AppendOrReplaceQueryParameter( | 1743 next_url = net::AppendOrReplaceQueryParameter( |
1744 next_url, "parent", directory_resource_id); | 1744 next_url, "parent", directory_resource_id); |
1745 } | 1745 } |
1746 | 1746 |
1747 change_list->set_next_link(next_url); | 1747 change_list->set_next_link(next_url); |
1748 } | 1748 } |
1749 *change_list->mutable_items() = entries.Pass(); | 1749 *change_list->mutable_items() = entries.Pass(); |
1750 | 1750 |
1751 if (load_counter) | 1751 if (load_counter) |
1752 *load_counter += 1; | 1752 *load_counter += 1; |
1753 base::MessageLoop::current()->PostTask( | 1753 base::ThreadTaskRunnerHandle::Get()->PostTask( |
1754 FROM_HERE, | 1754 FROM_HERE, |
1755 base::Bind(callback, HTTP_SUCCESS, base::Passed(&change_list))); | 1755 base::Bind(callback, HTTP_SUCCESS, base::Passed(&change_list))); |
1756 } | 1756 } |
1757 | 1757 |
1758 GURL FakeDriveService::GetNewUploadSessionUrl() { | 1758 GURL FakeDriveService::GetNewUploadSessionUrl() { |
1759 return GURL("https://upload_session_url/" + | 1759 return GURL("https://upload_session_url/" + |
1760 base::Int64ToString(next_upload_sequence_number_++)); | 1760 base::Int64ToString(next_upload_sequence_number_++)); |
1761 } | 1761 } |
1762 | 1762 |
1763 google_apis::CancelCallback FakeDriveService::AddPermission( | 1763 google_apis::CancelCallback FakeDriveService::AddPermission( |
(...skipping 14 matching lines...) Expand all Loading... |
1778 | 1778 |
1779 NOTREACHED(); | 1779 NOTREACHED(); |
1780 return scoped_ptr<BatchRequestConfiguratorInterface>(); | 1780 return scoped_ptr<BatchRequestConfiguratorInterface>(); |
1781 } | 1781 } |
1782 | 1782 |
1783 void FakeDriveService::NotifyObservers() { | 1783 void FakeDriveService::NotifyObservers() { |
1784 FOR_EACH_OBSERVER(ChangeObserver, change_observers_, OnNewChangeAvailable()); | 1784 FOR_EACH_OBSERVER(ChangeObserver, change_observers_, OnNewChangeAvailable()); |
1785 } | 1785 } |
1786 | 1786 |
1787 } // namespace drive | 1787 } // namespace drive |
OLD | NEW |