From b8f7bdbcba3f2a32b1414839eff0591762a054a1 Mon Sep 17 00:00:00 2001 From: Francois Marier Date: Mon, 12 Jun 2023 17:25:43 -0700 Subject: [PATCH] Add flag to override download danger level (fixes brave/brave-browser#28917) This only applies when Safe Browsing is turned off. --- browser/about_flags.cc | 9 +++++++++ browser/brave_browser_features.cc | 6 ++++++ browser/brave_browser_features.h | 1 + .../browser/download/download_target_determiner.cc | 11 +++++++++++ ...owser-download-download_target_determiner.cc.patch | 10 +++++++++- 5 files changed, 36 insertions(+), 1 deletion(-) diff --git a/browser/about_flags.cc b/browser/about_flags.cc index 020a02f1776c..f1749c5e8a00 100644 --- a/browser/about_flags.cc +++ b/browser/about_flags.cc @@ -857,6 +857,15 @@ "back to HTTP.", \ kOsAll, \ FEATURE_VALUE_TYPE(net::features::kBraveHttpsByDefault), \ + }, \ + { \ + "brave-override-download-danger-level", \ + "Override download danger level", \ + "Disables download warnings for files which are considered " \ + "dangerous when Safe Browsing is disabled. Use at your own risks. " \ + "Not recommended.", \ + kOsWin | kOsLinux | kOsMac, \ + FEATURE_VALUE_TYPE(features::kBraveOverrideDownloadDangerLevel), \ }) \ BRAVE_IPFS_FEATURE_ENTRIES \ BRAVE_NATIVE_WALLET_FEATURE_ENTRIES \ diff --git a/browser/brave_browser_features.cc b/browser/brave_browser_features.cc index bac0c5842048..62216706a4bf 100644 --- a/browser/brave_browser_features.cc +++ b/browser/brave_browser_features.cc @@ -23,4 +23,10 @@ BASE_FEATURE(kBraveCopyCleanLinkByDefault, #endif ); +// Disable download warnings for dangerous files when Safe Browsing is +// disabled. +BASE_FEATURE(kBraveOverrideDownloadDangerLevel, + "brave-override-download-danger-level", + base::FEATURE_DISABLED_BY_DEFAULT); + } // namespace features diff --git a/browser/brave_browser_features.h b/browser/brave_browser_features.h index fdec0d6514df..19174ef955e3 100644 --- a/browser/brave_browser_features.h +++ b/browser/brave_browser_features.h @@ -12,6 +12,7 @@ namespace features { BASE_DECLARE_FEATURE(kBraveCleanupSessionCookiesOnSessionRestore); BASE_DECLARE_FEATURE(kBraveCopyCleanLinkByDefault); +BASE_DECLARE_FEATURE(kBraveOverrideDownloadDangerLevel); } // namespace features diff --git a/chromium_src/chrome/browser/download/download_target_determiner.cc b/chromium_src/chrome/browser/download/download_target_determiner.cc index 76db7ed6c915..c86d6632f33c 100644 --- a/chromium_src/chrome/browser/download/download_target_determiner.cc +++ b/chromium_src/chrome/browser/download/download_target_determiner.cc @@ -3,11 +3,22 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at https://mozilla.org/MPL/2.0/. */ +#include "brave/browser/brave_browser_features.h" + // Prompting the user for download location shouldn't be a factor in determining // the download's danger level. #define BRAVE_DOWNLOAD_TARGET_DETERMINER_GET_DANGER_LEVEL \ true) {} \ if ( +#define BRAVE_DOWNLOAD_TARGET_DETERMINER_GET_DANGER_LEVEL2 \ + if (danger_level == DownloadFileType::ALLOW_ON_USER_GESTURE) { \ + if (base::FeatureList::IsEnabled( \ + features::kBraveOverrideDownloadDangerLevel)) { \ + return DownloadFileType::NOT_DANGEROUS; \ + } \ + } + #include "src/chrome/browser/download/download_target_determiner.cc" #undef BRAVE_DOWNLOAD_TARGET_DETERMINER_GET_DANGER_LEVEL +#undef BRAVE_DOWNLOAD_TARGET_DETERMINER_GET_DANGER_LEVEL2 diff --git a/patches/chrome-browser-download-download_target_determiner.cc.patch b/patches/chrome-browser-download-download_target_determiner.cc.patch index f543769327e8..8464a843ace7 100644 --- a/patches/chrome-browser-download-download_target_determiner.cc.patch +++ b/patches/chrome-browser-download-download_target_determiner.cc.patch @@ -1,5 +1,5 @@ diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc -index 0927a4c06b273e58954cba1f6be70695370b83a8..fbc06b9fa3b99d1a7324012dc17fa5127bb160c7 100644 +index 0927a4c06b273e58954cba1f6be70695370b83a8..a388aba922dbef0b01fbcc59048c3af8244fe0c3 100644 --- a/chrome/browser/download/download_target_determiner.cc +++ b/chrome/browser/download/download_target_determiner.cc @@ -1255,6 +1255,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel( @@ -10,3 +10,11 @@ index 0927a4c06b273e58954cba1f6be70695370b83a8..fbc06b9fa3b99d1a7324012dc17fa512 !download_->GetForcedFilePath().empty()) return DownloadFileType::NOT_DANGEROUS; +@@ -1293,6 +1294,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel( + ui::PAGE_TRANSITION_FROM_ADDRESS_BAR) != 0 || + (download_->HasUserGesture() && visits == VISITED_REFERRER))) + return DownloadFileType::NOT_DANGEROUS; ++ BRAVE_DOWNLOAD_TARGET_DETERMINER_GET_DANGER_LEVEL2 + return danger_level; + } +