| // 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. |
| |
| #ifndef CHROME_BROWSER_DOWNLOAD_DOWNLOAD_UI_SAFE_BROWSING_UTIL_H_ |
| #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_UI_SAFE_BROWSING_UTIL_H_ |
| |
| #include <string> |
| |
| #include "build/build_config.h" |
| #include "components/download/public/common/download_danger_type.h" |
| #include "components/safe_browsing/buildflags.h" |
| |
| #if BUILDFLAG(SAFE_BROWSING_DOWNLOAD_PROTECTION) |
| #include "components/safe_browsing/core/common/proto/csd.pb.h" |
| #endif |
| |
| class Profile; |
| |
| namespace download { |
| class DownloadItem; |
| } |
| |
| // Utilities for determining how to display a download in the desktop UI based |
| // on Safe Browsing state and verdict. |
| |
| // Returns whether the download item had a download protection verdict. If it |
| // did not, we should call it "unverified" rather than "suspicious". |
| bool WasSafeBrowsingVerdictObtained(const download::DownloadItem* item); |
| |
| // For users with no Safe Browsing protections, we display a special warning. |
| // If this returns true, a filetype warning should say "unverified" instead of |
| // "suspicious". |
| bool ShouldShowWarningForNoSafeBrowsing(Profile* profile); |
| |
| // Whether the user is capable of turning on Safe Browsing, e.g. it is not |
| // controlled by a policy. |
| bool CanUserTurnOnSafeBrowsing(Profile* profile); |
| |
| // Utilities for recording actions taken on Safe Browsing-flagged downloads. |
| |
| // Records UMA metrics for taking an action on the chrome://downloads warning |
| // bypass prompt. Logs to Download.DownloadDangerPrompt with the suffix, which |
| // can be "Proceed" or "Shown". |
| void RecordDownloadDangerPromptHistogram( |
| const std::string& proceed_or_shown_suffix, |
| const download::DownloadItem& item); |
| |
| #if BUILDFLAG(SAFE_BROWSING_DOWNLOAD_PROTECTION) |
| // Sends download recovery report to safe browsing backend. |
| // Since it only records download url (DownloadItem::GetURL()), user's |
| // action (click through or not) and its download danger type, it isn't gated |
| // by user's extended reporting preference (i.e. |
| // prefs::kSafeBrowsingExtendedReportingEnabled). We should not put any extra |
| // information in this report. |
| void SendSafeBrowsingDownloadReport( |
| safe_browsing::ClientSafeBrowsingReportRequest::ReportType report_type, |
| bool did_proceed, |
| download::DownloadItem* item); |
| #endif // BUILDFLAG(SAFE_BROWSING_DOWNLOAD_PROTECTION) |
| |
| #if BUILDFLAG(IS_ANDROID) |
| // Whether Safe Browsing Android Download Protection warnings should be shown |
| // in the UI (for malicious APK downloads). This checks the feature state only; |
| // Safe Browsing state is checked elsewhere. |
| bool ShouldShowSafeBrowsingAndroidDownloadWarnings(); |
| #endif |
| |
| #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_UI_SAFE_BROWSING_UTIL_H_ |