| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/download/public/common/download_item_utils.h" |
| |
| #include "chromeos/crosapi/mojom/download_controller.mojom.h" |
| |
| namespace download { |
| namespace download_item_utils { |
| namespace { |
| |
| crosapi::mojom::DownloadDangerType ConvertToMojoDownloadDangerType( |
| DownloadDangerType value) { |
| switch (value) { |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeNotDangerous; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDangerousFile; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDangerousUrl; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDangerousContent; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeMaybeDangerousContent; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeUncommonContent; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_USER_VALIDATED: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeUserValidated; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDangerousHost; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypePotentiallyUnwanted; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_ALLOWLISTED_BY_POLICY: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeAllowlistedByPolicy; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeAsyncScanning; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_ASYNC_LOCAL_PASSWORD_SCANNING: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeAsyncLocalPasswordScanning; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_BLOCKED_PASSWORD_PROTECTED: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeBlockedPasswordProtected; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_BLOCKED_TOO_LARGE: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeBlockedTooLarge; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_WARNING: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeSensitiveContentWarning; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_BLOCK: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeSensitiveContentBlock; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDeepScannedSafe; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDeepScannedOpenedDangerous; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypePromptForScanning; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_BLOCKED_UNSUPPORTED_FILETYPE: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeBlockedUnsupportedFiletype; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DANGEROUS_ACCOUNT_COMPROMISE: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDangerousAccountCompromise; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_FAILED: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypeDeepScannedFailed; |
| case DownloadDangerType:: |
| DOWNLOAD_DANGER_TYPE_PROMPT_FOR_LOCAL_PASSWORD_SCANNING: |
| return crosapi::mojom::DownloadDangerType:: |
| kDownloadDangerTypePromptForLocalPasswordScanning; |
| case DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAX: |
| NOTREACHED(); |
| return crosapi::mojom::DownloadDangerType::kDownloadDangerTypeInvalid; |
| } |
| } |
| |
| crosapi::mojom::InsecureDownloadStatus ConvertToMojoInsecureDownloadStatus( |
| DownloadItem::InsecureDownloadStatus value) { |
| switch (value) { |
| case DownloadItem::InsecureDownloadStatus::UNKNOWN: |
| return crosapi::mojom::InsecureDownloadStatus::kUnknown; |
| case DownloadItem::InsecureDownloadStatus::SAFE: |
| return crosapi::mojom::InsecureDownloadStatus::kSafe; |
| case DownloadItem::InsecureDownloadStatus::VALIDATED: |
| return crosapi::mojom::InsecureDownloadStatus::kValidated; |
| case DownloadItem::InsecureDownloadStatus::WARN: |
| return crosapi::mojom::InsecureDownloadStatus::kWarn; |
| case DownloadItem::InsecureDownloadStatus::BLOCK: |
| return crosapi::mojom::InsecureDownloadStatus::kBlock; |
| case DownloadItem::InsecureDownloadStatus::SILENT_BLOCK: |
| return crosapi::mojom::InsecureDownloadStatus::kSilentBlock; |
| } |
| } |
| |
| } // namespace |
| |
| crosapi::mojom::DownloadItemPtr ConvertToMojoDownloadItem( |
| const DownloadItem* item, |
| bool is_from_incognito_profile) { |
| auto download = crosapi::mojom::DownloadItem::New(); |
| download->guid = item->GetGuid(); |
| download->state = ConvertToMojoDownloadState(item->GetState()); |
| download->full_path = item->GetFullPath(); |
| download->target_file_path = item->GetTargetFilePath(); |
| download->is_from_incognito_profile = is_from_incognito_profile; |
| download->is_paused = item->IsPaused(); |
| download->has_is_paused = true; |
| download->open_when_complete = item->GetOpenWhenComplete(); |
| download->has_open_when_complete = true; |
| download->received_bytes = item->GetReceivedBytes(); |
| download->has_received_bytes = true; |
| download->total_bytes = item->GetTotalBytes(); |
| download->has_total_bytes = true; |
| download->start_time = item->GetStartTime(); |
| download->is_dangerous = item->IsDangerous(); |
| download->has_is_dangerous = true; |
| download->is_insecure = item->IsInsecure(); |
| download->has_is_insecure = true; |
| download->danger_type = |
| ConvertToMojoDownloadDangerType(item->GetDangerType()); |
| download->insecure_download_status = |
| ConvertToMojoInsecureDownloadStatus(item->GetInsecureDownloadStatus()); |
| return download; |
| } |
| |
| crosapi::mojom::DownloadState ConvertToMojoDownloadState( |
| DownloadItem::DownloadState state) { |
| switch (state) { |
| case DownloadItem::IN_PROGRESS: |
| return crosapi::mojom::DownloadState::kInProgress; |
| case DownloadItem::COMPLETE: |
| return crosapi::mojom::DownloadState::kComplete; |
| case DownloadItem::CANCELLED: |
| return crosapi::mojom::DownloadState::kCancelled; |
| case DownloadItem::INTERRUPTED: |
| return crosapi::mojom::DownloadState::kInterrupted; |
| case DownloadItem::MAX_DOWNLOAD_STATE: |
| NOTREACHED_NORETURN(); |
| } |
| } |
| |
| } // namespace download_item_utils |
| } // namespace download |