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_; |