Commit 0780e76b authored by Sam McNally's avatar Sam McNally Committed by Commit Bot

Run more FilesApp tests with DriveFS enabled.

Run with DriveFS enabled:
- Drive-related context_menu.js tests.
- Drive-related metadata.js tests.
- folder_shortcuts.js tests.
- fileDisplayDrive in tablet mode with DriveFS enabled.

In order to make those tests pass:
- Pass capabilities metadata to FakeDriveFs in SetMetadata() and return
  it in GetMetadata().
- Populate croppedThumbnailUrl so metadata cache doesn't retry fetching
  metadata, trying to get a value for it.
- Remove two unused and incomplete tests in context_menu.js.
- Only perform early-init for the downloads volume for the "user"
  profile.

Bug: 891197
Change-Id: I8ddcbd75b74258b6988ad5c70c4e70c707d18f70
Reviewed-on: https://chromium-review.googlesource.com/c/1255086Reviewed-by: default avatarNoel Gordon <noel@chromium.org>
Commit-Queue: Sam McNally <sammc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596048}
parent 601c715f
...@@ -707,6 +707,8 @@ class SingleEntryPropertiesGetterForDriveFs { ...@@ -707,6 +707,8 @@ class SingleEntryPropertiesGetterForDriveFs {
if (metadata->type != drivefs::mojom::FileMetadata::Type::kDirectory) { if (metadata->type != drivefs::mojom::FileMetadata::Type::kDirectory) {
properties_->thumbnail_url = std::make_unique<std::string>( properties_->thumbnail_url = std::make_unique<std::string>(
base::StrCat({"drivefs:", file_system_url_.ToGURL().spec()})); base::StrCat({"drivefs:", file_system_url_.ToGURL().spec()}));
properties_->cropped_thumbnail_url =
std::make_unique<std::string>(*properties_->thumbnail_url);
} }
CompleteGetEntryProperties(drive::FILE_ERROR_OK); CompleteGetEntryProperties(drive::FILE_ERROR_OK);
......
...@@ -180,6 +180,7 @@ WRAPPED_INSTANTIATE_TEST_CASE_P( ...@@ -180,6 +180,7 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
TestCase("fileDisplayDrive"), TestCase("fileDisplayDrive"),
TestCase("fileDisplayDrive").TabletMode(), TestCase("fileDisplayDrive").TabletMode(),
TestCase("fileDisplayDrive").EnableDriveFs(), TestCase("fileDisplayDrive").EnableDriveFs(),
TestCase("fileDisplayDrive").TabletMode().EnableDriveFs(),
TestCase("fileDisplayDriveOffline").Offline().EnableDriveFs(), TestCase("fileDisplayDriveOffline").Offline().EnableDriveFs(),
TestCase("fileDisplayDriveOnline").EnableDriveFs(), TestCase("fileDisplayDriveOnline").EnableDriveFs(),
TestCase("fileDisplayDriveOnline"), TestCase("fileDisplayDriveOnline"),
...@@ -322,6 +323,48 @@ WRAPPED_INSTANTIATE_TEST_CASE_P( ...@@ -322,6 +323,48 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
TestCase("checkPasteDisabledForReadOnlyFolderInTree"), TestCase("checkPasteDisabledForReadOnlyFolderInTree"),
TestCase("checkContextMenuForTeamDriveRoot"))); TestCase("checkContextMenuForTeamDriveRoot")));
WRAPPED_INSTANTIATE_TEST_CASE_P(
ContextMenu2, /* context_menu.js */
FilesAppBrowserTest,
::testing::Values(
TestCase("checkDeleteEnabledForReadWriteFile").EnableDriveFs(),
TestCase("checkDeleteDisabledForReadOnlyDocument").EnableDriveFs(),
TestCase("checkDeleteDisabledForReadOnlyFile").EnableDriveFs(),
TestCase("checkDeleteDisabledForReadOnlyFolder").EnableDriveFs(),
TestCase("checkRenameEnabledForReadWriteFile").EnableDriveFs(),
TestCase("checkRenameDisabledForReadOnlyDocument").EnableDriveFs(),
TestCase("checkRenameDisabledForReadOnlyFile").EnableDriveFs(),
TestCase("checkRenameDisabledForReadOnlyFolder").EnableDriveFs(),
TestCase("checkShareEnabledForReadWriteFile").EnableDriveFs(),
TestCase("checkShareEnabledForReadOnlyDocument").EnableDriveFs(),
TestCase("checkShareDisabledForStrictReadOnlyDocument").EnableDriveFs(),
TestCase("checkShareEnabledForReadOnlyFile").EnableDriveFs(),
TestCase("checkShareEnabledForReadOnlyFolder").EnableDriveFs(),
TestCase("checkCopyEnabledForReadWriteFile").EnableDriveFs(),
TestCase("checkCopyEnabledForReadOnlyDocument").EnableDriveFs(),
TestCase("checkCopyDisabledForStrictReadOnlyDocument").EnableDriveFs(),
TestCase("checkCopyEnabledForReadOnlyFile").EnableDriveFs(),
TestCase("checkCopyEnabledForReadOnlyFolder").EnableDriveFs(),
TestCase("checkCutEnabledForReadWriteFile").EnableDriveFs(),
TestCase("checkCutDisabledForReadOnlyDocument").EnableDriveFs(),
TestCase("checkCutDisabledForReadOnlyFile").EnableDriveFs(),
TestCase("checkCutDisabledForReadOnlyFolder").EnableDriveFs(),
TestCase("checkPasteIntoFolderEnabledForReadWriteFolder")
.EnableDriveFs(),
TestCase("checkPasteIntoFolderDisabledForReadOnlyFolder")
.EnableDriveFs(),
TestCase("checkNewFolderEnabledInsideReadWriteFolder").EnableDriveFs(),
TestCase("checkNewFolderDisabledInsideReadOnlyFolder").EnableDriveFs(),
TestCase("checkPasteEnabledInsideReadWriteFolder").EnableDriveFs(),
TestCase("checkPasteDisabledInsideReadOnlyFolder").EnableDriveFs(),
TestCase("checkCopyEnabledForReadWriteFolderInTree").EnableDriveFs(),
TestCase("checkCopyEnabledForReadOnlyFolderInTree").EnableDriveFs(),
TestCase("checkCutEnabledForReadWriteFolderInTree").EnableDriveFs(),
TestCase("checkCutDisabledForReadOnlyFolderInTree").EnableDriveFs(),
TestCase("checkPasteEnabledForReadWriteFolderInTree").EnableDriveFs(),
TestCase("checkPasteDisabledForReadOnlyFolderInTree").EnableDriveFs(),
TestCase("checkContextMenuForTeamDriveRoot").EnableDriveFs()));
WRAPPED_INSTANTIATE_TEST_CASE_P( WRAPPED_INSTANTIATE_TEST_CASE_P(
Delete, /* delete.js */ Delete, /* delete.js */
FilesAppBrowserTest, FilesAppBrowserTest,
...@@ -481,7 +524,9 @@ WRAPPED_INSTANTIATE_TEST_CASE_P( ...@@ -481,7 +524,9 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
FolderShortcuts, /* folder_shortcuts.js */ FolderShortcuts, /* folder_shortcuts.js */
FilesAppBrowserTest, FilesAppBrowserTest,
::testing::Values(TestCase("traverseFolderShortcuts"), ::testing::Values(TestCase("traverseFolderShortcuts"),
TestCase("addRemoveFolderShortcuts"))); TestCase("traverseFolderShortcuts").EnableDriveFs(),
TestCase("addRemoveFolderShortcuts"),
TestCase("addRemoveFolderShortcuts").EnableDriveFs()));
WRAPPED_INSTANTIATE_TEST_CASE_P( WRAPPED_INSTANTIATE_TEST_CASE_P(
SortColumns, /* sort_columns.js */ SortColumns, /* sort_columns.js */
...@@ -627,8 +672,11 @@ WRAPPED_INSTANTIATE_TEST_CASE_P( ...@@ -627,8 +672,11 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
FilesAppBrowserTest, FilesAppBrowserTest,
::testing::Values(TestCase("metadataDownloads"), ::testing::Values(TestCase("metadataDownloads"),
TestCase("metadataDrive"), TestCase("metadataDrive"),
TestCase("metadataDrive").EnableDriveFs(),
TestCase("metadataTeamDrives"), TestCase("metadataTeamDrives"),
TestCase("metadataLargeDrive"))); TestCase("metadataTeamDrives").EnableDriveFs(),
TestCase("metadataLargeDrive"),
TestCase("metadataLargeDrive").EnableDriveFs()));
// Structure to describe an account info. // Structure to describe an account info.
struct TestAccountInfo { struct TestAccountInfo {
......
...@@ -856,7 +856,10 @@ class DriveFsTestVolume : public DriveTestVolume { ...@@ -856,7 +856,10 @@ class DriveFsTestVolume : public DriveTestVolume {
base::FilePath(entry.target_path).BaseName().value(), entry.pinned, base::FilePath(entry.target_path).BaseName().value(), entry.pinned,
entry.shared_option == AddEntriesMessage::SharedOption::SHARED || entry.shared_option == AddEntriesMessage::SharedOption::SHARED ||
entry.shared_option == entry.shared_option ==
AddEntriesMessage::SharedOption::SHARED_WITH_ME); AddEntriesMessage::SharedOption::SHARED_WITH_ME,
{entry.capabilities.can_share, entry.capabilities.can_copy,
entry.capabilities.can_delete, entry.capabilities.can_rename,
entry.capabilities.can_add_children});
switch (entry.type) { switch (entry.type) {
case AddEntriesMessage::FILE: { case AddEntriesMessage::FILE: {
...@@ -1401,7 +1404,8 @@ FileManagerBrowserTestBase::CreateDriveIntegrationService(Profile* profile) { ...@@ -1401,7 +1404,8 @@ FileManagerBrowserTestBase::CreateDriveIntegrationService(Profile* profile) {
kPredefinedProfileSalt); kPredefinedProfileSalt);
drive_volumes_[profile->GetOriginalProfile()] = drive_volumes_[profile->GetOriginalProfile()] =
std::make_unique<DriveFsTestVolume>(profile->GetOriginalProfile()); std::make_unique<DriveFsTestVolume>(profile->GetOriginalProfile());
if (!IsIncognitoModeTest()) { if (!IsIncognitoModeTest() &&
profile->GetPath().BaseName().value() == "user") {
base::ThreadTaskRunnerHandle::Get()->PostTask( base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, FROM_HERE,
base::BindOnce(base::IgnoreResult(&LocalTestVolume::Mount), base::BindOnce(base::IgnoreResult(&LocalTestVolume::Mount),
......
...@@ -89,6 +89,7 @@ struct FakeDriveFs::FileMetadata { ...@@ -89,6 +89,7 @@ struct FakeDriveFs::FileMetadata {
bool hosted = false; bool hosted = false;
bool shared = false; bool shared = false;
std::string original_name; std::string original_name;
mojom::Capabilities capabilities;
}; };
class FakeDriveFs::SearchQuery : public mojom::SearchQuery { class FakeDriveFs::SearchQuery : public mojom::SearchQuery {
...@@ -235,11 +236,13 @@ void FakeDriveFs::SetMetadata(const base::FilePath& path, ...@@ -235,11 +236,13 @@ void FakeDriveFs::SetMetadata(const base::FilePath& path,
const std::string& mime_type, const std::string& mime_type,
const std::string& original_name, const std::string& original_name,
bool pinned, bool pinned,
bool shared) { bool shared,
const mojom::Capabilities& capabilities) {
auto& stored_metadata = metadata_[path]; auto& stored_metadata = metadata_[path];
stored_metadata.mime_type = mime_type; stored_metadata.mime_type = mime_type;
stored_metadata.original_name = original_name; stored_metadata.original_name = original_name;
stored_metadata.hosted = (original_name != path.BaseName().value()); stored_metadata.hosted = (original_name != path.BaseName().value());
stored_metadata.capabilities = capabilities;
if (pinned) { if (pinned) {
stored_metadata.pinned = true; stored_metadata.pinned = true;
} }
...@@ -294,7 +297,7 @@ void FakeDriveFs::GetMetadata(const base::FilePath& path, ...@@ -294,7 +297,7 @@ void FakeDriveFs::GetMetadata(const base::FilePath& path,
? path.BaseName().value() ? path.BaseName().value()
: stored_metadata.original_name; : stored_metadata.original_name;
metadata->alternate_url = GURL(base::StrCat({prefix, suffix})).spec(); metadata->alternate_url = GURL(base::StrCat({prefix, suffix})).spec();
metadata->capabilities = mojom::Capabilities::New(); metadata->capabilities = stored_metadata.capabilities.Clone();
std::move(callback).Run(drive::FILE_ERROR_OK, std::move(metadata)); std::move(callback).Run(drive::FILE_ERROR_OK, std::move(metadata));
} }
......
...@@ -34,7 +34,8 @@ class FakeDriveFs : public drivefs::mojom::DriveFs, ...@@ -34,7 +34,8 @@ class FakeDriveFs : public drivefs::mojom::DriveFs,
const std::string& mime_type, const std::string& mime_type,
const std::string& original_name, const std::string& original_name,
bool pinned, bool pinned,
bool shared); bool shared,
const mojom::Capabilities& capabilities);
const base::FilePath& mount_path() { return mount_path_; } const base::FilePath& mount_path() { return mount_path_; }
......
...@@ -275,22 +275,6 @@ testcase.checkPasteIntoFolderDisabledForReadOnlyFolder = function() { ...@@ -275,22 +275,6 @@ testcase.checkPasteIntoFolderDisabledForReadOnlyFolder = function() {
checkContextMenu('paste-into-folder', 'Read-Only Folder', false); checkContextMenu('paste-into-folder', 'Read-Only Folder', false);
}; };
/**
* Tests that the New Folder menu item is enabled if a read-write folder is
* selected.
*/
testcase.checkNewFolderEnabledForReadWriteFolder = function() {
checkContextMenu('new-folder', 'photos', true);
};
/**
* Tests that the New Folder menu item is disabled if a read-only folder is
* selected.
*/
testcase.checkNewFolderDisabledForReadOnlyFolder = function() {
checkContextMenu('new-folder', 'Read-Only Folder', false);
};
/** /**
* Tests that text selection context menus are disabled in tablet mode. * Tests that text selection context menus are disabled in tablet mode.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment