| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ash/policy/dlp/files_policy_string_util.h" |
| |
| #include <string> |
| |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_util.h" |
| #include "chrome/browser/chromeos/policy/dlp/dlp_files_utils.h" |
| #include "chrome/grit/generated_resources.h" |
| #include "components/strings/grit/components_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| namespace policy::files_string_util { |
| |
| std::u16string GetBlockTitle(dlp::FileAction action, size_t file_count) { |
| int message_id; |
| std::u16string message; |
| switch (action) { |
| case dlp::FileAction::kDownload: |
| message_id = IDS_POLICY_DLP_FILES_DOWNLOAD_BLOCKED_TITLE; |
| break; |
| case dlp::FileAction::kUpload: |
| message_id = IDS_POLICY_DLP_FILES_UPLOAD_BLOCKED_TITLE; |
| break; |
| case dlp::FileAction::kCopy: |
| message_id = IDS_POLICY_DLP_FILES_COPY_BLOCKED_TITLE; |
| break; |
| case dlp::FileAction::kMove: |
| message_id = IDS_POLICY_DLP_FILES_MOVE_BLOCKED_TITLE; |
| break; |
| case dlp::FileAction::kOpen: |
| case dlp::FileAction::kShare: |
| message_id = IDS_POLICY_DLP_FILES_OPEN_BLOCKED_TITLE; |
| break; |
| case dlp::FileAction::kUnknown: |
| // kUnknown is used for internal checks - treat as kTransfer. |
| case dlp::FileAction::kTransfer: |
| message_id = IDS_POLICY_DLP_FILES_TRANSFER_BLOCKED_TITLE; |
| break; |
| } |
| message = l10n_util::GetPluralStringFUTF16(message_id, file_count); |
| return file_count == 1 ? message |
| : base::ReplaceStringPlaceholders( |
| message, base::NumberToString16(file_count), |
| /*offset=*/nullptr); |
| } |
| |
| std::u16string GetWarnTitle(dlp::FileAction action) { |
| switch (action) { |
| case dlp::FileAction::kDownload: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_DOWNLOAD_REVIEW_TITLE); |
| case dlp::FileAction::kUpload: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_UPLOAD_REVIEW_TITLE); |
| case dlp::FileAction::kCopy: |
| return l10n_util::GetStringUTF16(IDS_POLICY_DLP_FILES_COPY_REVIEW_TITLE); |
| case dlp::FileAction::kMove: |
| return l10n_util::GetStringUTF16(IDS_POLICY_DLP_FILES_MOVE_REVIEW_TITLE); |
| case dlp::FileAction::kOpen: |
| case dlp::FileAction::kShare: |
| return l10n_util::GetStringUTF16(IDS_POLICY_DLP_FILES_OPEN_REVIEW_TITLE); |
| case dlp::FileAction::kUnknown: |
| // kUnknown is used for internal checks - treat as kTransfer. |
| case dlp::FileAction::kTransfer: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_TRANSFER_REVIEW_TITLE); |
| } |
| } |
| |
| std::u16string GetContinueAnywayButton(dlp::FileAction action) { |
| switch (action) { |
| case dlp::FileAction::kDownload: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_DOWNLOAD_WARN_CONTINUE_BUTTON); |
| case dlp::FileAction::kUpload: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_UPLOAD_WARN_CONTINUE_BUTTON); |
| case dlp::FileAction::kCopy: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_COPY_WARN_CONTINUE_BUTTON); |
| case dlp::FileAction::kMove: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_MOVE_WARN_CONTINUE_BUTTON); |
| case dlp::FileAction::kOpen: |
| case dlp::FileAction::kShare: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_OPEN_WARN_CONTINUE_BUTTON); |
| case dlp::FileAction::kUnknown: |
| // kUnknown is used for internal checks - treat as kTransfer. |
| case dlp::FileAction::kTransfer: |
| return l10n_util::GetStringUTF16( |
| IDS_POLICY_DLP_FILES_TRANSFER_WARN_CONTINUE_BUTTON); |
| } |
| } |
| |
| std::u16string GetBlockReasonMessage(FilesPolicyDialog::BlockReason reason, |
| size_t file_count) { |
| int message_id; |
| switch (reason) { |
| case FilesPolicyDialog::BlockReason::kDlp: |
| message_id = file_count == 1 |
| ? IDS_POLICY_DLP_FILES_POLICY_BLOCK_SINGLE_FILE_MESSAGE |
| : IDS_POLICY_DLP_FILES_POLICY_BLOCK_MESSAGE; |
| break; |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsScanFailed: |
| return l10n_util::GetPluralStringFUTF16( |
| IDS_DEEP_SCANNING_DIALOG_UPLOAD_FAIL_CLOSED_MESSAGE, file_count); |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsEncryptedFile: |
| return l10n_util::GetPluralStringFUTF16( |
| IDS_DEEP_SCANNING_DIALOG_ENCRYPTED_FILE_FAILURE_MESSAGE, file_count); |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsLargeFile: |
| return l10n_util::GetPluralStringFUTF16( |
| IDS_DEEP_SCANNING_DIALOG_LARGE_FILE_FAILURE_MESSAGE, file_count); |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsUnknownScanResult: |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsSensitiveData: |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsMalware: |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectors: |
| // There is not a specific default message for unknown scan result, |
| // sensitive data and malware. We are thus using a generic "blocked |
| // because of content" message. |
| message_id = file_count == 1 |
| ? IDS_POLICY_DLP_FILES_CONTENT_BLOCK_SINGLE_FILE_MESSAGE |
| : IDS_POLICY_DLP_FILES_CONTENT_BLOCK_MESSAGE; |
| break; |
| } |
| |
| if (file_count == 1) { |
| return l10n_util::GetStringUTF16(message_id); |
| } |
| |
| return base::ReplaceStringPlaceholders( |
| l10n_util::GetPluralStringFUTF16(message_id, file_count), |
| base::NumberToString16(file_count), |
| /*offset=*/nullptr); |
| } |
| |
| std::u16string GetBlockReasonMessage(FilesPolicyDialog::BlockReason reason, |
| const std::u16string& first_file) { |
| int message_id; |
| switch (reason) { |
| case FilesPolicyDialog::BlockReason::kDlp: |
| message_id = IDS_POLICY_DLP_FILES_POLICY_BLOCK_MESSAGE; |
| break; |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsScanFailed: |
| return l10n_util::GetPluralStringFUTF16( |
| IDS_DEEP_SCANNING_DIALOG_UPLOAD_FAIL_CLOSED_MESSAGE, /*number=*/1); |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsEncryptedFile: |
| return l10n_util::GetPluralStringFUTF16( |
| IDS_DEEP_SCANNING_DIALOG_ENCRYPTED_FILE_FAILURE_MESSAGE, |
| /*number=*/1); |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsLargeFile: |
| return l10n_util::GetPluralStringFUTF16( |
| IDS_DEEP_SCANNING_DIALOG_LARGE_FILE_FAILURE_MESSAGE, /*number=*/1); |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsUnknownScanResult: |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsSensitiveData: |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectorsMalware: |
| case FilesPolicyDialog::BlockReason::kEnterpriseConnectors: |
| // There is not a specific default message for unknown scan result, |
| // sensitive data and malware. We are thus using a generic "blocked |
| // because of content" message. |
| message_id = IDS_POLICY_DLP_FILES_CONTENT_BLOCK_MESSAGE; |
| break; |
| } |
| return base::ReplaceStringPlaceholders( |
| l10n_util::GetPluralStringFUTF16(message_id, /*number=*/1), first_file, |
| /*offset=*/nullptr); |
| } |
| |
| } // namespace policy::files_string_util |