Skip to content

Commit

Permalink
Browsertests for file transfer block messages.
Browse files Browse the repository at this point in the history
Also fixes minor bug that prevented display of the file error if only
one file was blocked.

Bug: b:293124596
Change-Id: I7cf4949d1d947184d5527ea922a8b463cac4bff3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4802127
Commit-Queue: Steffen Seckler <sseckler@google.com>
Reviewed-by: Luciano Pacheco <lucmult@chromium.org>
Auto-Submit: Steffen Seckler <sseckler@google.com>
Reviewed-by: Aya Elsayed <ayaelattar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1187199}
  • Loading branch information
sseckler authored and Chromium LUCI CQ committed Aug 23, 2023
1 parent 0341e89 commit 93e93f3
Show file tree
Hide file tree
Showing 10 changed files with 316 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,12 @@ void CopyOrMoveIOTaskPolicyImpl::IsTransferAllowed(
features::kFileTransferEnterpriseConnectorUI)) {
blocked_files_++;
connectors_blocked_files_.push_back(source_url.path());
if (blocked_file_name_.empty()) {
blocked_file_name_ = util::GetDisplayablePath(profile_, source_url.path())
.value_or(base::FilePath())
.BaseName()
.value();
}
}

std::move(callback).Run(base::File::FILE_ERROR_SECURITY);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/rand_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/test/gmock_callback_support.h"
#include "base/test/mock_callback.h"
#include "chrome/browser/ash/file_manager/io_task.h"
Expand Down Expand Up @@ -523,7 +524,8 @@ class CopyOrMoveIOTaskWithScansTest
const std::vector<absl::optional<base::File::Error>>& expected_errors,
base::RepeatingClosure quit_closure,
absl::optional<size_t> maybe_total_num_files = absl::nullopt,
absl::optional<PolicyError> maybe_policy_error = absl::nullopt) {
std::vector<absl::optional<PolicyError>> maybe_policy_errors = {
absl::nullopt}) {
size_t total_num_files = maybe_total_num_files.value_or(file_infos.size());
ASSERT_EQ(expected_errors.size(), file_infos.size());
// We should get one complete callback when the copy/move finishes.
Expand All @@ -546,7 +548,8 @@ class CopyOrMoveIOTaskWithScansTest
GetExpectedOutputUrlsFromFileInfos(file_infos))),
Field(&ProgressStatus::outputs,
EntryStatusErrors(ElementsAreArray(expected_errors))),
Field(&ProgressStatus::policy_error, maybe_policy_error),
Field(&ProgressStatus::policy_error,
testing::AnyOfArray(maybe_policy_errors)),
GetBaseMatcher(file_infos, dest, total_num_files))))
.WillOnce(RunClosure(quit_closure));
}
Expand Down Expand Up @@ -734,11 +737,11 @@ TEST_P(CopyOrMoveIOTaskWithScansTest, BlockSingleFileUsingResultBlocked) {
ExpectCompletionCallbackCall(
complete_callback, {file}, dest, {base::File::FILE_ERROR_SECURITY},
run_loop.QuitClosure(), /*maybe_total_num_files=*/absl::nullopt,
/*maybe_policy_error=*/
UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(
PolicyError(PolicyErrorType::kEnterpriseConnectors, 1))
: absl::nullopt);
/*maybe_policy_errors=*/
{UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(PolicyError(
PolicyErrorType::kEnterpriseConnectors, 1, "file.txt"))
: absl::nullopt});

if (UseNewPolicyUI() && UseNewConnectorsUI()) {
ExpectFPNMBlockedFiles({file});
Expand Down Expand Up @@ -777,11 +780,11 @@ TEST_P(CopyOrMoveIOTaskWithScansTest, BlockSingleFileUsingResultUnknown) {
ExpectCompletionCallbackCall(
complete_callback, {file}, dest, {base::File::FILE_ERROR_SECURITY},
run_loop.QuitClosure(), /*maybe_total_num_files=*/absl::nullopt,
/*maybe_policy_error=*/
UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(
PolicyError(PolicyErrorType::kEnterpriseConnectors, 1))
: absl::nullopt);
/*maybe_policy_errors=*/
{UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(PolicyError(
PolicyErrorType::kEnterpriseConnectors, 1, "file.txt"))
: absl::nullopt});

if (UseNewPolicyUI() && UseNewConnectorsUI()) {
ExpectFPNMBlockedFiles({file});
Expand Down Expand Up @@ -968,11 +971,11 @@ TEST_P(CopyOrMoveIOTaskWithScansTest, FilesOnDisabledAndEnabledFileSystems) {
complete_callback, {enabled_file, disabled_file}, dest,
{base::File::FILE_ERROR_SECURITY, base::File::FILE_OK},
run_loop.QuitClosure(), /*maybe_total_num_files=*/absl::nullopt,
/*maybe_policy_error=*/
UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(
PolicyError(PolicyErrorType::kEnterpriseConnectors, 1))
: absl::nullopt);
/*maybe_policy_errors=*/
{UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(PolicyError(
PolicyErrorType::kEnterpriseConnectors, 1, "file1.txt"))
: absl::nullopt});

if (UseNewPolicyUI() && UseNewConnectorsUI()) {
ExpectFPNMBlockedFiles({enabled_file});
Expand Down Expand Up @@ -1031,15 +1034,22 @@ TEST_P(CopyOrMoveIOTaskWithScansTest, DirectoryTransferBlockAll) {
? base::File::FILE_ERROR_SECURITY
: base::File::FILE_ERROR_NOT_EMPTY;

ExpectCompletionCallbackCall(
complete_callback, {directory}, dest, {expected_error},
run_loop.QuitClosure(),
/*maybe_total_num_files=*/2,
/*maybe_policy_error=*/
UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(
PolicyError(PolicyErrorType::kEnterpriseConnectors, 2))
: absl::nullopt);
std::vector<absl::optional<PolicyError>> maybe_policy_errors;
if (UseNewPolicyUI() && UseNewConnectorsUI()) {
// Depending on the order of the execution, `file_name` can be different.
maybe_policy_errors.push_back(
PolicyError(PolicyErrorType::kEnterpriseConnectors, 2, "file0.txt"));
maybe_policy_errors.push_back(
PolicyError(PolicyErrorType::kEnterpriseConnectors, 2, "file1.txt"));
} else {
maybe_policy_errors.push_back(absl::nullopt);
}

ExpectCompletionCallbackCall(complete_callback, {directory}, dest,
{expected_error}, run_loop.QuitClosure(),
/*maybe_total_num_files=*/2,
/*maybe_policy_errors=*/
maybe_policy_errors);

if (UseNewPolicyUI() && UseNewConnectorsUI()) {
ExpectFPNMBlockedFiles({file1, file0});
Expand Down Expand Up @@ -1102,11 +1112,11 @@ TEST_P(CopyOrMoveIOTaskWithScansTest, DirectoryTransferBlockOne) {
complete_callback, {directory}, dest, {expected_error},
run_loop.QuitClosure(),
/*maybe_total_num_files=*/2,
/*maybe_policy_error=*/
UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(
PolicyError(PolicyErrorType::kEnterpriseConnectors, 1))
: absl::nullopt);
/*maybe_policy_errors=*/
{UseNewPolicyUI() && UseNewConnectorsUI()
? absl::make_optional(PolicyError(
PolicyErrorType::kEnterpriseConnectors, 1, "file0.txt"))
: absl::nullopt});

if (UseNewPolicyUI() && UseNewConnectorsUI()) {
ExpectFPNMBlockedFiles({file0});
Expand Down Expand Up @@ -1197,14 +1207,22 @@ TEST_P(CopyOrMoveIOTaskWithScansWarnTest,
? base::File::FILE_ERROR_SECURITY
: base::File::FILE_ERROR_NOT_EMPTY;

ExpectCompletionCallbackCall(
complete_callback, {directory}, dest, {expected_error},
run_loop.QuitClosure(),
/*maybe_total_num_files=*/6,
/*maybe_policy_error=*/
UseNewPolicyUI() ? absl::make_optional(PolicyError(
PolicyErrorType::kEnterpriseConnectors, 2))
: absl::nullopt);
std::vector<absl::optional<PolicyError>> maybe_policy_errors;
if (UseNewPolicyUI()) {
// Depending on the order of the execution, `file_name` can be different.
maybe_policy_errors.push_back(PolicyError(
PolicyErrorType::kEnterpriseConnectors, 2, "0_file_blocked.txt"));
maybe_policy_errors.push_back(PolicyError(
PolicyErrorType::kEnterpriseConnectors, 2, "1_file_blocked.txt"));
} else {
maybe_policy_errors.push_back(absl::nullopt);
}

ExpectCompletionCallbackCall(complete_callback, {directory}, dest,
{expected_error}, run_loop.QuitClosure(),
/*maybe_total_num_files=*/6,
/*maybe_policy_errors=*/
maybe_policy_errors);

// Start the copy/move.
CopyOrMoveIOTask task(GetOperationType(),
Expand Down

0 comments on commit 93e93f3

Please sign in to comment.