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 {
if (metadata->type != drivefs::mojom::FileMetadata::Type::kDirectory) {
properties_->thumbnail_url = std::make_unique<std::string>(
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);
......
......@@ -180,6 +180,7 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
TestCase("fileDisplayDrive"),
TestCase("fileDisplayDrive").TabletMode(),
TestCase("fileDisplayDrive").EnableDriveFs(),
TestCase("fileDisplayDrive").TabletMode().EnableDriveFs(),
TestCase("fileDisplayDriveOffline").Offline().EnableDriveFs(),
TestCase("fileDisplayDriveOnline").EnableDriveFs(),
TestCase("fileDisplayDriveOnline"),
......@@ -322,6 +323,48 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
TestCase("checkPasteDisabledForReadOnlyFolderInTree"),
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(
Delete, /* delete.js */
FilesAppBrowserTest,
......@@ -481,7 +524,9 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
FolderShortcuts, /* folder_shortcuts.js */
FilesAppBrowserTest,
::testing::Values(TestCase("traverseFolderShortcuts"),
TestCase("addRemoveFolderShortcuts")));
TestCase("traverseFolderShortcuts").EnableDriveFs(),
TestCase("addRemoveFolderShortcuts"),
TestCase("addRemoveFolderShortcuts").EnableDriveFs()));
WRAPPED_INSTANTIATE_TEST_CASE_P(
SortColumns, /* sort_columns.js */
......@@ -627,8 +672,11 @@ WRAPPED_INSTANTIATE_TEST_CASE_P(
FilesAppBrowserTest,
::testing::Values(TestCase("metadataDownloads"),
TestCase("metadataDrive"),
TestCase("metadataDrive").EnableDriveFs(),
TestCase("metadataTeamDrives"),
TestCase("metadataLargeDrive")));
TestCase("metadataTeamDrives").EnableDriveFs(),
TestCase("metadataLargeDrive"),
TestCase("metadataLargeDrive").EnableDriveFs()));
// Structure to describe an account info.
struct TestAccountInfo {
......
......@@ -856,7 +856,10 @@ class DriveFsTestVolume : public DriveTestVolume {
base::FilePath(entry.target_path).BaseName().value(), entry.pinned,
entry.shared_option == AddEntriesMessage::SharedOption::SHARED ||
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) {
case AddEntriesMessage::FILE: {
......@@ -1401,7 +1404,8 @@ FileManagerBrowserTestBase::CreateDriveIntegrationService(Profile* profile) {
kPredefinedProfileSalt);
drive_volumes_[profile->GetOriginalProfile()] =
std::make_unique<DriveFsTestVolume>(profile->GetOriginalProfile());
if (!IsIncognitoModeTest()) {
if (!IsIncognitoModeTest() &&
profile->GetPath().BaseName().value() == "user") {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(base::IgnoreResult(&LocalTestVolume::Mount),
......
......@@ -89,6 +89,7 @@ struct FakeDriveFs::FileMetadata {
bool hosted = false;
bool shared = false;
std::string original_name;
mojom::Capabilities capabilities;
};
class FakeDriveFs::SearchQuery : public mojom::SearchQuery {
......@@ -235,11 +236,13 @@ void FakeDriveFs::SetMetadata(const base::FilePath& path,
const std::string& mime_type,
const std::string& original_name,
bool pinned,
bool shared) {
bool shared,
const mojom::Capabilities& capabilities) {
auto& stored_metadata = metadata_[path];
stored_metadata.mime_type = mime_type;
stored_metadata.original_name = original_name;
stored_metadata.hosted = (original_name != path.BaseName().value());
stored_metadata.capabilities = capabilities;
if (pinned) {
stored_metadata.pinned = true;
}
......@@ -294,7 +297,7 @@ void FakeDriveFs::GetMetadata(const base::FilePath& path,
? path.BaseName().value()
: stored_metadata.original_name;
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));
}
......
......@@ -34,7 +34,8 @@ class FakeDriveFs : public drivefs::mojom::DriveFs,
const std::string& mime_type,
const std::string& original_name,
bool pinned,
bool shared);
bool shared,
const mojom::Capabilities& capabilities);
const base::FilePath& mount_path() { return mount_path_; }
......
......@@ -275,22 +275,6 @@ testcase.checkPasteIntoFolderDisabledForReadOnlyFolder = function() {
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.
*/
......
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