| 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/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 717 | 717 |
| 718 const std::string& parent_resource_id = in_parent_resource_id.empty() ? | 718 const std::string& parent_resource_id = in_parent_resource_id.empty() ? |
| 719 GetRootResourceId() : in_parent_resource_id; | 719 GetRootResourceId() : in_parent_resource_id; |
| 720 | 720 |
| 721 EntryInfo* entry = FindEntryByResourceId(resource_id); | 721 EntryInfo* entry = FindEntryByResourceId(resource_id); |
| 722 if (entry) { | 722 if (entry) { |
| 723 // Make a copy and set the new resource ID and the new title. | 723 // Make a copy and set the new resource ID and the new title. |
| 724 scoped_ptr<EntryInfo> copied_entry(new EntryInfo); | 724 scoped_ptr<EntryInfo> copied_entry(new EntryInfo); |
| 725 copied_entry->content_data = entry->content_data; | 725 copied_entry->content_data = entry->content_data; |
| 726 copied_entry->share_url = entry->share_url; | 726 copied_entry->share_url = entry->share_url; |
| 727 | |
| 728 // TODO(hashimoto): Implement a proper way to copy FileResource. | |
| 729 scoped_ptr<ResourceEntry> copied_resource_entry = | |
| 730 util::ConvertChangeResourceToResourceEntry(entry->change_resource); | |
| 731 copied_entry->change_resource.set_file( | 727 copied_entry->change_resource.set_file( |
| 732 util::ConvertResourceEntryToFileResource(*copied_resource_entry)); | 728 make_scoped_ptr(new FileResource(*entry->change_resource.file()))); |
| 733 | 729 |
| 734 ChangeResource* new_change = &copied_entry->change_resource; | 730 ChangeResource* new_change = &copied_entry->change_resource; |
| 735 FileResource* new_file = new_change->mutable_file(); | 731 FileResource* new_file = new_change->mutable_file(); |
| 736 const std::string new_resource_id = GetNewResourceId(); | 732 const std::string new_resource_id = GetNewResourceId(); |
| 737 new_change->set_file_id(new_resource_id); | 733 new_change->set_file_id(new_resource_id); |
| 738 new_file->set_file_id(new_resource_id); | 734 new_file->set_file_id(new_resource_id); |
| 739 new_file->set_title(new_title); | 735 new_file->set_title(new_title); |
| 740 | 736 |
| 741 scoped_ptr<ParentReference> parent(new ParentReference); | 737 ParentReference parent; |
| 742 parent->set_file_id(parent_resource_id); | 738 parent.set_file_id(parent_resource_id); |
| 743 parent->set_parent_link(GetFakeLinkUrl(parent_resource_id)); | 739 parent.set_parent_link(GetFakeLinkUrl(parent_resource_id)); |
| 744 parent->set_is_root(parent_resource_id == GetRootResourceId()); | 740 parent.set_is_root(parent_resource_id == GetRootResourceId()); |
| 745 ScopedVector<ParentReference> parents; | 741 std::vector<ParentReference> parents; |
| 746 parents.push_back(parent.release()); | 742 parents.push_back(parent); |
| 747 new_file->set_parents(parents.Pass()); | 743 *new_file->mutable_parents() = parents; |
| 748 | 744 |
| 749 if (!last_modified.is_null()) | 745 if (!last_modified.is_null()) |
| 750 new_file->set_modified_date(last_modified); | 746 new_file->set_modified_date(last_modified); |
| 751 | 747 |
| 752 AddNewChangestamp(new_change); | 748 AddNewChangestamp(new_change); |
| 753 UpdateETag(new_file); | 749 UpdateETag(new_file); |
| 754 | 750 |
| 755 scoped_ptr<ResourceEntry> resource_entry = | 751 scoped_ptr<ResourceEntry> resource_entry = |
| 756 util::ConvertChangeResourceToResourceEntry(*new_change); | 752 util::ConvertChangeResourceToResourceEntry(*new_change); |
| 757 // Add the new entry to the map. | 753 // Add the new entry to the map. |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 } | 786 } |
| 791 | 787 |
| 792 EntryInfo* entry = FindEntryByResourceId(resource_id); | 788 EntryInfo* entry = FindEntryByResourceId(resource_id); |
| 793 if (entry) { | 789 if (entry) { |
| 794 ChangeResource* change = &entry->change_resource; | 790 ChangeResource* change = &entry->change_resource; |
| 795 FileResource* file = change->mutable_file(); | 791 FileResource* file = change->mutable_file(); |
| 796 file->set_title(new_title); | 792 file->set_title(new_title); |
| 797 | 793 |
| 798 // Set parent if necessary. | 794 // Set parent if necessary. |
| 799 if (!parent_resource_id.empty()) { | 795 if (!parent_resource_id.empty()) { |
| 800 scoped_ptr<ParentReference> parent(new ParentReference); | 796 ParentReference parent; |
| 801 parent->set_file_id(parent_resource_id); | 797 parent.set_file_id(parent_resource_id); |
| 802 parent->set_parent_link(GetFakeLinkUrl(parent_resource_id)); | 798 parent.set_parent_link(GetFakeLinkUrl(parent_resource_id)); |
| 803 parent->set_is_root(parent_resource_id == GetRootResourceId()); | 799 parent.set_is_root(parent_resource_id == GetRootResourceId()); |
| 804 | 800 |
| 805 ScopedVector<ParentReference> parents; | 801 std::vector<ParentReference> parents; |
| 806 parents.push_back(parent.release()); | 802 parents.push_back(parent); |
| 807 file->set_parents(parents.Pass()); | 803 *file->mutable_parents() = parents; |
| 808 } | 804 } |
| 809 | 805 |
| 810 if (!last_modified.is_null()) | 806 if (!last_modified.is_null()) |
| 811 file->set_modified_date(last_modified); | 807 file->set_modified_date(last_modified); |
| 812 | 808 |
| 813 if (!last_viewed_by_me.is_null()) | 809 if (!last_viewed_by_me.is_null()) |
| 814 file->set_last_viewed_by_me_date(last_viewed_by_me); | 810 file->set_last_viewed_by_me_date(last_viewed_by_me); |
| 815 | 811 |
| 816 AddNewChangestamp(change); | 812 AddNewChangestamp(change); |
| 817 UpdateETag(file); | 813 UpdateETag(file); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 856 return CancelCallback(); | 852 return CancelCallback(); |
| 857 } | 853 } |
| 858 | 854 |
| 859 EntryInfo* entry = FindEntryByResourceId(resource_id); | 855 EntryInfo* entry = FindEntryByResourceId(resource_id); |
| 860 if (entry) { | 856 if (entry) { |
| 861 ChangeResource* change = &entry->change_resource; | 857 ChangeResource* change = &entry->change_resource; |
| 862 // On the real Drive server, resources do not necessary shape a tree | 858 // On the real Drive server, resources do not necessary shape a tree |
| 863 // structure. That is, each resource can have multiple parent. | 859 // structure. That is, each resource can have multiple parent. |
| 864 // We mimic the behavior here; AddResourceToDirectoy just adds | 860 // We mimic the behavior here; AddResourceToDirectoy just adds |
| 865 // one more parent, not overwriting old ones. | 861 // one more parent, not overwriting old ones. |
| 866 scoped_ptr<ParentReference> parent(new ParentReference); | 862 ParentReference parent; |
| 867 parent->set_file_id(parent_resource_id); | 863 parent.set_file_id(parent_resource_id); |
| 868 parent->set_parent_link(GetFakeLinkUrl(parent_resource_id)); | 864 parent.set_parent_link(GetFakeLinkUrl(parent_resource_id)); |
| 869 parent->set_is_root(parent_resource_id == GetRootResourceId()); | 865 parent.set_is_root(parent_resource_id == GetRootResourceId()); |
| 870 change->mutable_file()->mutable_parents()->push_back(parent.release()); | 866 change->mutable_file()->mutable_parents()->push_back(parent); |
| 871 | 867 |
| 872 AddNewChangestamp(change); | 868 AddNewChangestamp(change); |
| 873 base::MessageLoop::current()->PostTask( | 869 base::MessageLoop::current()->PostTask( |
| 874 FROM_HERE, base::Bind(callback, HTTP_SUCCESS)); | 870 FROM_HERE, base::Bind(callback, HTTP_SUCCESS)); |
| 875 return CancelCallback(); | 871 return CancelCallback(); |
| 876 } | 872 } |
| 877 | 873 |
| 878 base::MessageLoop::current()->PostTask( | 874 base::MessageLoop::current()->PostTask( |
| 879 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); | 875 FROM_HERE, base::Bind(callback, HTTP_NOT_FOUND)); |
| 880 return CancelCallback(); | 876 return CancelCallback(); |
| 881 } | 877 } |
| 882 | 878 |
| 883 CancelCallback FakeDriveService::RemoveResourceFromDirectory( | 879 CancelCallback FakeDriveService::RemoveResourceFromDirectory( |
| 884 const std::string& parent_resource_id, | 880 const std::string& parent_resource_id, |
| 885 const std::string& resource_id, | 881 const std::string& resource_id, |
| 886 const EntryActionCallback& callback) { | 882 const EntryActionCallback& callback) { |
| 887 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 883 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 888 DCHECK(!callback.is_null()); | 884 DCHECK(!callback.is_null()); |
| 889 | 885 |
| 890 if (offline_) { | 886 if (offline_) { |
| 891 base::MessageLoop::current()->PostTask( | 887 base::MessageLoop::current()->PostTask( |
| 892 FROM_HERE, base::Bind(callback, GDATA_NO_CONNECTION)); | 888 FROM_HERE, base::Bind(callback, GDATA_NO_CONNECTION)); |
| 893 return CancelCallback(); | 889 return CancelCallback(); |
| 894 } | 890 } |
| 895 | 891 |
| 896 EntryInfo* entry = FindEntryByResourceId(resource_id); | 892 EntryInfo* entry = FindEntryByResourceId(resource_id); |
| 897 if (entry) { | 893 if (entry) { |
| 898 ChangeResource* change = &entry->change_resource; | 894 ChangeResource* change = &entry->change_resource; |
| 899 FileResource* file = change->mutable_file(); | 895 FileResource* file = change->mutable_file(); |
| 900 ScopedVector<ParentReference>* parents = file->mutable_parents(); | 896 std::vector<ParentReference>* parents = file->mutable_parents(); |
| 901 for (size_t i = 0; i < parents->size(); ++i) { | 897 for (size_t i = 0; i < parents->size(); ++i) { |
| 902 if ((*parents)[i]->file_id() == parent_resource_id) { | 898 if ((*parents)[i].file_id() == parent_resource_id) { |
| 903 parents->erase(parents->begin() + i); | 899 parents->erase(parents->begin() + i); |
| 904 AddNewChangestamp(change); | 900 AddNewChangestamp(change); |
| 905 base::MessageLoop::current()->PostTask( | 901 base::MessageLoop::current()->PostTask( |
| 906 FROM_HERE, base::Bind(callback, HTTP_NO_CONTENT)); | 902 FROM_HERE, base::Bind(callback, HTTP_NO_CONTENT)); |
| 907 return CancelCallback(); | 903 return CancelCallback(); |
| 908 } | 904 } |
| 909 } | 905 } |
| 910 } | 906 } |
| 911 | 907 |
| 912 base::MessageLoop::current()->PostTask( | 908 base::MessageLoop::current()->PostTask( |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1415 // Set current time to mark the file as shared_with_me. | 1411 // Set current time to mark the file as shared_with_me. |
| 1416 new_file->set_shared_with_me_date(base::Time::Now()); | 1412 new_file->set_shared_with_me_date(base::Time::Now()); |
| 1417 } | 1413 } |
| 1418 | 1414 |
| 1419 std::string escaped_resource_id = net::EscapePath(resource_id); | 1415 std::string escaped_resource_id = net::EscapePath(resource_id); |
| 1420 | 1416 |
| 1421 // Set mime type. | 1417 // Set mime type. |
| 1422 new_file->set_mime_type(content_type); | 1418 new_file->set_mime_type(content_type); |
| 1423 | 1419 |
| 1424 // Set parents. | 1420 // Set parents. |
| 1425 scoped_ptr<ParentReference> parent(new ParentReference); | 1421 ParentReference parent; |
| 1426 if (parent_resource_id.empty()) | 1422 if (parent_resource_id.empty()) |
| 1427 parent->set_file_id(GetRootResourceId()); | 1423 parent.set_file_id(GetRootResourceId()); |
| 1428 else | 1424 else |
| 1429 parent->set_file_id(parent_resource_id); | 1425 parent.set_file_id(parent_resource_id); |
| 1430 parent->set_parent_link(GetFakeLinkUrl(parent->file_id())); | 1426 parent.set_parent_link(GetFakeLinkUrl(parent.file_id())); |
| 1431 parent->set_is_root(parent->file_id() == GetRootResourceId()); | 1427 parent.set_is_root(parent.file_id() == GetRootResourceId()); |
| 1432 ScopedVector<ParentReference> parents; | 1428 std::vector<ParentReference> parents; |
| 1433 parents.push_back(parent.release()); | 1429 parents.push_back(parent); |
| 1434 new_file->set_parents(parents.Pass()); | 1430 *new_file->mutable_parents() = parents; |
| 1435 | 1431 |
| 1436 new_entry->share_url = net::AppendOrReplaceQueryParameter( | 1432 new_entry->share_url = net::AppendOrReplaceQueryParameter( |
| 1437 share_url_base_, "name", title); | 1433 share_url_base_, "name", title); |
| 1438 | 1434 |
| 1439 AddNewChangestamp(new_change); | 1435 AddNewChangestamp(new_change); |
| 1440 UpdateETag(new_file); | 1436 UpdateETag(new_file); |
| 1441 | 1437 |
| 1442 base::Time published_date = | 1438 base::Time published_date = |
| 1443 base::Time() + base::TimeDelta::FromMilliseconds(++published_date_seq_); | 1439 base::Time() + base::TimeDelta::FromMilliseconds(++published_date_seq_); |
| 1444 new_file->set_created_date(published_date); | 1440 new_file->set_created_date(published_date); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1581 google_apis::drive::PermissionRole role, | 1577 google_apis::drive::PermissionRole role, |
| 1582 const google_apis::EntryActionCallback& callback) { | 1578 const google_apis::EntryActionCallback& callback) { |
| 1583 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1579 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1584 DCHECK(!callback.is_null()); | 1580 DCHECK(!callback.is_null()); |
| 1585 | 1581 |
| 1586 NOTREACHED(); | 1582 NOTREACHED(); |
| 1587 return CancelCallback(); | 1583 return CancelCallback(); |
| 1588 } | 1584 } |
| 1589 | 1585 |
| 1590 } // namespace drive | 1586 } // namespace drive |
| OLD | NEW |