Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3850)

Unified Diff: chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_unittest.cc

Issue 2651883003: Clean up ARC file system unit tests. (Closed)
Patch Set: Fake FileSystemInstance, not ArcFileSystemOperationRunner. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698