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

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: Rebased. 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..7919b209628077cfda042bde3083475fb682a633 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,23 +13,28 @@
#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 Document = arc::FakeFileSystemInstance::Document;
using EntryList = storage::AsyncFileUtil::EntryList;
namespace arc {
namespace {
+// Simliar as FakeFileSystemInstance::Document, but all fields are primitives
+// so that values can be constexpr.
struct DocumentSpec {
const char* document_id;
+ const char* parent_document_id;
const char* display_name;
const char* mime_type;
int64_t size;
@@ -49,86 +54,42 @@ struct DocumentSpec {
// dup.mp4 video/mp4 dup3-id
// dup.mp4 video/mp4 dup4-id
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{"root-id", "", "", kAndroidDirectoryMimeType,
+ -1, 0};
+constexpr DocumentSpec kDirSpec{
+ "dir-id", kRootSpec.document_id, "dir", kAndroidDirectoryMimeType, -1, 22};
+constexpr DocumentSpec kPhotoSpec{
+ "photo-id", kDirSpec.document_id, "photo.jpg", "image/jpeg", 3, 33};
+constexpr DocumentSpec kMusicSpec{
+ "music-id", kDirSpec.document_id, "music.bin", "audio/mp3", 4, 44};
+constexpr DocumentSpec kDupsSpec{"dups-id", kRootSpec.document_id,
+ "dups", kAndroidDirectoryMimeType,
+ -1, 55};
+constexpr DocumentSpec kDup1Spec{
+ "dup1-id", kDupsSpec.document_id, "dup.mp4", "video/mp4", 6, 66};
+constexpr DocumentSpec kDup2Spec{
+ "dup2-id", kDupsSpec.document_id, "dup.mp4", "video/mp4", 7, 77};
+constexpr DocumentSpec kDup3Spec{
+ "dup3-id", kDupsSpec.document_id, "dup.mp4", "video/mp4", 8, 88};
+constexpr DocumentSpec kDup4Spec{
+ "dup4-id", kDupsSpec.document_id, "dup.mp4", "video/mp4", 9, 99};
+
+// The order is intentionally shuffled here so that
+// FileSystemInstance::GetChildDocuments() returns documents in shuffled order.
+// See ResolveToContentUrlDups test below.
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));
- }
+ kMusicSpec, kDupsSpec, kDup2Spec,
+ kDup1Spec, kDup4Spec, kDup3Spec};
- 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));
- }
-};
+Document ToDocument(const DocumentSpec& spec) {
+ return Document(kAuthority, spec.document_id, spec.parent_document_id,
+ spec.display_name, spec.mime_type, spec.size,
+ spec.last_modified);
+}
void ExpectMatchesSpec(const base::File::Info& info, const DocumentSpec& spec) {
EXPECT_EQ(spec.size, info.size);
- if (strcmp(spec.mime_type, kAndroidDirectoryMimeType) == 0) {
+ if (spec.mime_type == kAndroidDirectoryMimeType) {
EXPECT_TRUE(info.is_directory);
} else {
EXPECT_FALSE(info.is_directory);
@@ -144,20 +105,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(ToDocument(spec));
+ }
+
+ arc_service_manager_ = base::MakeUnique<ArcServiceManager>(nullptr);
arc_service_manager_->AddService(
- base::MakeUnique<ArcFileSystemOperationRunnerForTest>(
+ 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_;
@@ -302,7 +271,7 @@ TEST_F(ArcDocumentsProviderRootTest, ReadDirectoryDups) {
const EntryList& file_list, bool has_more) {
EXPECT_EQ(base::File::FILE_OK, error);
ASSERT_EQ(4u, file_list.size());
- // FiIles are sorted lexicographically.
+ // Files are sorted lexicographically.
EXPECT_EQ(FILE_PATH_LITERAL("dup (1).mp4"), file_list[0].name);
EXPECT_FALSE(file_list[0].is_directory);
EXPECT_EQ(FILE_PATH_LITERAL("dup (2).mp4"), file_list[1].name);

Powered by Google App Engine
This is Rietveld 408576698