Chromium Code Reviews| Index: chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_unittest.cc |
| diff --git a/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_unittest.cc b/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_unittest.cc |
| index e5a677d47cebfbb129a6ff6a2b9848bacb2d4ae3..d6210219b3c6605c8dee549c165721af1a2e7e21 100644 |
| --- a/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_unittest.cc |
| +++ b/chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_unittest.cc |
| @@ -13,29 +13,23 @@ |
| #include "base/run_loop.h" |
| #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.h" |
| #include "chrome/browser/chromeos/arc/fileapi/arc_documents_provider_util.h" |
| +#include "chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner.h" |
| #include "components/arc/arc_bridge_service.h" |
| #include "components/arc/arc_service_manager.h" |
| -#include "components/arc/file_system/test/fake_arc_file_system_operation_runner.h" |
| +#include "components/arc/test/fake_file_system_instance.h" |
| #include "content/public/test/test_browser_thread_bundle.h" |
| #include "storage/common/fileapi/directory_entry.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "url/gurl.h" |
| using storage::DirectoryEntry; |
| +using DocumentSpec = arc::FakeFileSystemInstance::DocumentSpec; |
| using EntryList = storage::AsyncFileUtil::EntryList; |
| namespace arc { |
| namespace { |
| -struct DocumentSpec { |
| - const char* document_id; |
| - const char* display_name; |
| - const char* mime_type; |
| - int64_t size; |
| - uint64_t last_modified; |
| -}; |
| - |
| // Fake file system hierarchy: |
| // |
| // <path> <type> <ID> |
| @@ -51,80 +45,74 @@ struct DocumentSpec { |
| constexpr char kAuthority[] = "org.chromium.test"; |
| // NOTE: ArcDocumentsProviderRoot::GetFileInfo() returns hard-coded info |
| // for root documents. |
| -constexpr DocumentSpec kRootSpec = {"root-id", nullptr /* not used */, |
| - kAndroidDirectoryMimeType, -1, 0}; |
| -constexpr DocumentSpec kDirSpec = {"dir-id", "dir", kAndroidDirectoryMimeType, |
| - -1, 22}; |
| -constexpr DocumentSpec kPhotoSpec = {"photo-id", "photo.jpg", "image/jpeg", 3, |
| - 33}; |
| -constexpr DocumentSpec kMusicSpec = {"music-id", "music.bin", "audio/mp3", 4, |
| - 44}; |
| -constexpr DocumentSpec kDupsSpec = {"dups-id", "dups", |
| - kAndroidDirectoryMimeType, -1, 55}; |
| -constexpr DocumentSpec kDup1Spec = {"dup1-id", "dup.mp4", "video/mp4", 6, 66}; |
| -constexpr DocumentSpec kDup2Spec = {"dup2-id", "dup.mp4", "video/mp4", 7, 77}; |
| -constexpr DocumentSpec kDup3Spec = {"dup3-id", "dup.mp4", "video/mp4", 8, 88}; |
| -constexpr DocumentSpec kDup4Spec = {"dup4-id", "dup.mp4", "video/mp4", 9, 99}; |
| +constexpr DocumentSpec kRootSpec(kAuthority, |
| + "root-id", |
| + nullptr, |
| + "", |
| + kAndroidDirectoryMimeType, |
| + -1, |
| + 0); |
| +constexpr DocumentSpec kDirSpec(kAuthority, |
| + "dir-id", |
| + kRootSpec.document_id, |
| + "dir", |
| + kAndroidDirectoryMimeType, |
| + -1, |
| + 22); |
| +constexpr DocumentSpec kPhotoSpec(kAuthority, |
| + "photo-id", |
| + kDirSpec.document_id, |
| + "photo.jpg", |
| + "image/jpeg", |
| + 3, |
| + 33); |
| +constexpr DocumentSpec kMusicSpec(kAuthority, |
| + "music-id", |
| + kDirSpec.document_id, |
| + "music.bin", |
| + "audio/mp3", |
| + 4, |
| + 44); |
| +constexpr DocumentSpec kDupsSpec(kAuthority, |
| + "dups-id", |
| + kRootSpec.document_id, |
| + "dups", |
| + kAndroidDirectoryMimeType, |
| + -1, |
| + 55); |
| +constexpr DocumentSpec kDup1Spec(kAuthority, |
| + "dup1-id", |
| + kDupsSpec.document_id, |
| + "dup.mp4", |
| + "video/mp4", |
| + 6, |
| + 66); |
| +constexpr DocumentSpec kDup2Spec(kAuthority, |
| + "dup2-id", |
| + kDupsSpec.document_id, |
| + "dup.mp4", |
| + "video/mp4", |
| + 7, |
| + 77); |
| +constexpr DocumentSpec kDup3Spec(kAuthority, |
| + "dup3-id", |
| + kDupsSpec.document_id, |
| + "dup.mp4", |
| + "video/mp4", |
| + 8, |
| + 88); |
| +constexpr DocumentSpec kDup4Spec(kAuthority, |
| + "dup4-id", |
| + kDupsSpec.document_id, |
| + "dup.mp4", |
| + "video/mp4", |
| + 9, |
| + 99); |
| + |
| +// The order is intentionally shuffled. |
| constexpr DocumentSpec kAllSpecs[] = {kRootSpec, kDirSpec, kPhotoSpec, |
| - kMusicSpec, kDupsSpec, kDup1Spec, |
| - kDup2Spec, kDup3Spec, kDup4Spec}; |
| - |
| -mojom::DocumentPtr MakeDocument(const DocumentSpec& spec) { |
| - mojom::DocumentPtr document = mojom::Document::New(); |
| - document->document_id = spec.document_id; |
| - document->display_name = spec.display_name; |
| - document->mime_type = spec.mime_type; |
| - document->size = spec.size; |
| - document->last_modified = spec.last_modified; |
| - return document; |
| -} |
| - |
| -// TODO(crbug.com/683049): Use a generic FakeArcFileSystemOperationRunner. |
| -class ArcFileSystemOperationRunnerForTest |
| - : public FakeArcFileSystemOperationRunner { |
| - public: |
| - explicit ArcFileSystemOperationRunnerForTest(ArcBridgeService* bridge_service) |
| - : FakeArcFileSystemOperationRunner(bridge_service) {} |
| - ~ArcFileSystemOperationRunnerForTest() override = default; |
| - |
| - void GetChildDocuments(const std::string& authority, |
| - const std::string& document_id, |
| - const GetChildDocumentsCallback& callback) override { |
| - EXPECT_EQ(kAuthority, authority); |
| - base::Optional<std::vector<mojom::DocumentPtr>> result; |
| - if (document_id == kRootSpec.document_id) { |
| - result.emplace(); |
| - result.value().emplace_back(MakeDocument(kDirSpec)); |
| - result.value().emplace_back(MakeDocument(kDupsSpec)); |
| - } else if (document_id == kDirSpec.document_id) { |
| - result.emplace(); |
| - result.value().emplace_back(MakeDocument(kPhotoSpec)); |
| - result.value().emplace_back(MakeDocument(kMusicSpec)); |
| - } else if (document_id == kDupsSpec.document_id) { |
| - result.emplace(); |
| - // The order is intentionally shuffled. |
| - result.value().emplace_back(MakeDocument(kDup2Spec)); |
| - result.value().emplace_back(MakeDocument(kDup1Spec)); |
| - result.value().emplace_back(MakeDocument(kDup4Spec)); |
| - result.value().emplace_back(MakeDocument(kDup3Spec)); |
| - } |
| - callback.Run(std::move(result)); |
| - } |
| - |
| - void GetDocument(const std::string& authority, |
| - const std::string& document_id, |
| - const GetDocumentCallback& callback) override { |
| - EXPECT_EQ(kAuthority, authority); |
| - mojom::DocumentPtr result; |
| - for (const auto& spec : kAllSpecs) { |
| - if (document_id == spec.document_id) { |
| - result = MakeDocument(spec); |
| - break; |
| - } |
| - } |
| - callback.Run(std::move(result)); |
| - } |
| -}; |
| + kMusicSpec, kDupsSpec, kDup2Spec, |
|
hidehiko
2017/01/26 07:24:20
Could you sort, at least kDupNSpec where N is numb
Shuhei Takahashi
2017/01/27 09:55:10
It's intentional as commented. I'll further add co
hidehiko
2017/01/27 15:50:00
Oh, got it. Thank you for explanation and adding t
|
| + kDup1Spec, kDup4Spec, kDup3Spec}; |
| void ExpectMatchesSpec(const base::File::Info& info, const DocumentSpec& spec) { |
| EXPECT_EQ(spec.size, info.size); |
| @@ -144,20 +132,28 @@ void ExpectMatchesSpec(const base::File::Info& info, const DocumentSpec& spec) { |
| class ArcDocumentsProviderRootTest : public testing::Test { |
| public: |
| - ArcDocumentsProviderRootTest() |
| - : arc_service_manager_(base::MakeUnique<ArcServiceManager>(nullptr)), |
| - root_( |
| - base::MakeUnique<ArcDocumentsProviderRoot>(kAuthority, |
| - kRootSpec.document_id)) { |
| + ArcDocumentsProviderRootTest() = default; |
| + ~ArcDocumentsProviderRootTest() override = default; |
| + |
| + void SetUp() override { |
| + for (auto spec : kAllSpecs) { |
| + fake_file_system_.AddDocument(spec); |
| + } |
| + |
| + arc_service_manager_ = base::MakeUnique<ArcServiceManager>(nullptr); |
| arc_service_manager_->AddService( |
| - base::MakeUnique<ArcFileSystemOperationRunnerForTest>( |
| - arc_service_manager_->arc_bridge_service())); |
| - } |
| + base::WrapUnique(ArcFileSystemOperationRunner::CreateForTesting( |
| + arc_service_manager_->arc_bridge_service()))); |
| + arc_service_manager_->arc_bridge_service()->file_system()->SetInstance( |
| + &fake_file_system_); |
| - ~ArcDocumentsProviderRootTest() override = default; |
| + root_ = base::MakeUnique<ArcDocumentsProviderRoot>(kAuthority, |
| + kRootSpec.document_id); |
| + } |
| protected: |
| content::TestBrowserThreadBundle thread_bundle_; |
| + FakeFileSystemInstance fake_file_system_; |
| std::unique_ptr<ArcServiceManager> arc_service_manager_; |
| std::unique_ptr<ArcDocumentsProviderRoot> root_; |