Commit a412fb19 authored by Stuart Langley's avatar Stuart Langley Committed by Commit Bot

Normalize team drive names when saving them.

Team drives can have no ascii and path like characters in the name. Normalize
the names to remove these.

This will lead to a delta between what you see in the web app and what you see
in the file manager for team drives with these names.

Bug: 873920
Change-Id: I24fd8664cc64a62b9a1d5e72d0138c0792c449d9
Reviewed-on: https://chromium-review.googlesource.com/1174134Reviewed-by: default avatarLuciano Pacheco <lucmult@chromium.org>
Commit-Queue: Stuart Langley <slangley@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583185}
parent c7bdcdc1
......@@ -257,20 +257,18 @@ void TeamDriveListLoader::OnReadDirectoryByPath(
std::transform(remote_resources.begin(), remote_resources.end(),
std::back_inserter(team_drive_updates.all_team_drives),
[](const ResourceEntry& entry) -> TeamDrive {
return {
entry.resource_id(), entry.base_name(),
drive::util::GetDriveTeamDrivesRootPath().AppendASCII(
entry.base_name())};
return {entry.resource_id(), entry.base_name(),
drive::util::GetDriveTeamDrivesRootPath().Append(
util::NormalizeFileName(entry.base_name()))};
});
// Create a copy of the added team drives list to notify observers.
std::transform(added_team_drives.begin(), added_team_drives.end(),
std::back_inserter(team_drive_updates.added_team_drives),
[](const ResourceEntry& entry) -> TeamDrive {
return {
entry.resource_id(), entry.base_name(),
drive::util::GetDriveTeamDrivesRootPath().AppendASCII(
entry.base_name())};
return {entry.resource_id(), entry.base_name(),
drive::util::GetDriveTeamDrivesRootPath().Append(
util::NormalizeFileName(entry.base_name()))};
});
// Create a copy of the removed team drives list to notify observers.
......
......@@ -186,6 +186,51 @@ TEST_F(TeamDriveListLoaderTest, OneTeamDrive) {
util::GetDriveTeamDrivesRootPath().AppendASCII(kTeamDriveName1));
}
TEST_F(TeamDriveListLoaderTest, NotmalizedTeamDriveName) {
constexpr char kTeamDriveId1[] = "the1stTeamDriveId";
constexpr char kTeamDriveName1[] = "A / Strange / Team / Drive / Name";
constexpr char kTeamDriveNormalized1[] = "A _ Strange _ Team _ Drive _ Name";
drive_service_->AddTeamDrive(kTeamDriveId1, kTeamDriveName1);
FileError error = FILE_ERROR_FAILED;
team_drive_list_loader_->CheckForUpdates(
google_apis::test_util::CreateCopyResultCallback(&error));
base::RunLoop().RunUntilIdle();
EXPECT_EQ(FILE_ERROR_OK, error);
EXPECT_EQ(1, drive_service_->team_drive_list_load_count());
EXPECT_EQ(1UL, team_drive_list_observer_->team_drives_list().size());
EXPECT_EQ(1UL, team_drive_list_observer_->added_team_drives().size());
EXPECT_TRUE(team_drive_list_observer_->removed_team_drives().empty());
ResourceEntryVector entries;
EXPECT_EQ(FILE_ERROR_OK, metadata_->ReadDirectoryByPath(
util::GetDriveTeamDrivesRootPath(), &entries));
EXPECT_EQ(1UL, entries.size());
ResourceEntry entry;
EXPECT_EQ(
FILE_ERROR_OK,
metadata_->GetResourceEntryByPath(
util::GetDriveTeamDrivesRootPath().Append(kTeamDriveNormalized1),
&entry));
{
const base::FilePath& team_drive_path =
team_drive_list_observer_->team_drives_list().front().team_drive_path();
EXPECT_EQ(team_drive_path,
util::GetDriveTeamDrivesRootPath().Append(kTeamDriveNormalized1));
}
{
const base::FilePath& team_drive_path =
team_drive_list_observer_->added_team_drives()
.front()
.team_drive_path();
EXPECT_EQ(team_drive_path,
util::GetDriveTeamDrivesRootPath().Append(kTeamDriveNormalized1));
}
}
// Tests if there are multiple team drives on the server, we will add them all
// to local metadata.
TEST_F(TeamDriveListLoaderTest, MultipleTeamDrive) {
......
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