| Index: chrome/browser/download/download_target_determiner.cc
|
| diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc
|
| index 8089b2b0fa0f6fcfd319f7c9e37fce8c79d58b1a..32a2e5f6c489c8ba07d69326c2b7b64c0eeae9e4 100644
|
| --- a/chrome/browser/download/download_target_determiner.cc
|
| +++ b/chrome/browser/download/download_target_determiner.cc
|
| @@ -13,11 +13,11 @@
|
| #include "build/build_config.h"
|
| #include "chrome/browser/download/chrome_download_manager_delegate.h"
|
| #include "chrome/browser/download/download_crx_util.h"
|
| -#include "chrome/browser/download/download_extensions.h"
|
| #include "chrome/browser/download/download_prefs.h"
|
| #include "chrome/browser/history/history_service_factory.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/common/pref_names.h"
|
| +#include "chrome/common/safe_browsing/file_type_policies.h"
|
| #include "chrome/grit/generated_resources.h"
|
| #include "components/history/core/browser/history_service.h"
|
| #include "components/mime_util/mime_util.h"
|
| @@ -46,6 +46,7 @@
|
|
|
| using content::BrowserThread;
|
| using content::DownloadItem;
|
| +using safe_browsing::DownloadFileType;
|
|
|
| namespace {
|
|
|
| @@ -76,7 +77,7 @@ bool g_is_adobe_reader_up_to_date_ = false;
|
| DownloadTargetInfo::DownloadTargetInfo()
|
| : target_disposition(DownloadItem::TARGET_DISPOSITION_OVERWRITE),
|
| danger_type(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS),
|
| - danger_level(download_util::NOT_DANGEROUS),
|
| + danger_level(DownloadFileType::NOT_DANGEROUS),
|
| is_filetype_handled_safely(false) {}
|
|
|
| DownloadTargetInfo::~DownloadTargetInfo() {}
|
| @@ -96,7 +97,7 @@ DownloadTargetDeterminer::DownloadTargetDeterminer(
|
| create_target_directory_(false),
|
| conflict_action_(DownloadPathReservationTracker::OVERWRITE),
|
| danger_type_(download->GetDangerType()),
|
| - danger_level_(download_util::NOT_DANGEROUS),
|
| + danger_level_(DownloadFileType::NOT_DANGEROUS),
|
| virtual_path_(initial_virtual_path),
|
| is_filetype_handled_safely_(false),
|
| download_(download),
|
| @@ -611,14 +612,14 @@ DownloadTargetDeterminer::Result
|
| // prior visits to the referrer recoreded in history. The resulting danger
|
| // level would be ALLOW_ON_USER_GESTURE if the level depends on the visit
|
| // history. In the latter case, we can query the history DB to determine if
|
| - // there were prior reqeusts and determine the danger level again once the
|
| + // there were prior requests and determine the danger level again once the
|
| // result is available.
|
| danger_level_ = GetDangerLevel(NO_VISITS_TO_REFERRER);
|
|
|
| - if (danger_level_ == download_util::NOT_DANGEROUS)
|
| + if (danger_level_ == DownloadFileType::NOT_DANGEROUS)
|
| return CONTINUE;
|
|
|
| - if (danger_level_ == download_util::ALLOW_ON_USER_GESTURE) {
|
| + if (danger_level_ == DownloadFileType::ALLOW_ON_USER_GESTURE) {
|
| // HistoryServiceFactory redirects incognito profiles to on-record profiles.
|
| // There's no history for on-record profiles in unit_tests.
|
| history::HistoryService* history_service =
|
| @@ -652,7 +653,7 @@ void DownloadTargetDeterminer::CheckVisitedReferrerBeforeDone(
|
| DCHECK_EQ(STATE_DETERMINE_INTERMEDIATE_PATH, next_state_);
|
| danger_level_ = GetDangerLevel(
|
| visited_referrer_before ? VISITED_REFERRER : NO_VISITS_TO_REFERRER);
|
| - if (danger_level_ != download_util::NOT_DANGEROUS &&
|
| + if (danger_level_ != DownloadFileType::NOT_DANGEROUS &&
|
| danger_type_ == content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS)
|
| danger_type_ = content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE;
|
| DoLoop();
|
| @@ -840,7 +841,7 @@ bool DownloadTargetDeterminer::HasPromptedForPath() const {
|
| DownloadItem::TARGET_DISPOSITION_PROMPT);
|
| }
|
|
|
| -download_util::DownloadDangerLevel DownloadTargetDeterminer::GetDangerLevel(
|
| +DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
|
| PriorVisitsToReferrer visits) const {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
|
|
| @@ -849,7 +850,7 @@ download_util::DownloadDangerLevel DownloadTargetDeterminer::GetDangerLevel(
|
| // contains malware.
|
| if (HasPromptedForPath() || should_prompt_ ||
|
| !download_->GetForcedFilePath().empty())
|
| - return download_util::NOT_DANGEROUS;
|
| + return DownloadFileType::NOT_DANGEROUS;
|
|
|
| const bool is_extension_download =
|
| download_crx_util::IsExtensionDownload(*download_);
|
| @@ -860,7 +861,7 @@ download_util::DownloadDangerLevel DownloadTargetDeterminer::GetDangerLevel(
|
| is_extension_download &&
|
| download_crx_util::OffStoreInstallAllowedByPrefs(
|
| GetProfile(), *download_)) {
|
| - return download_util::NOT_DANGEROUS;
|
| + return DownloadFileType::NOT_DANGEROUS;
|
| }
|
|
|
| #if defined(ENABLE_EXTENSIONS)
|
| @@ -870,27 +871,28 @@ download_util::DownloadDangerLevel DownloadTargetDeterminer::GetDangerLevel(
|
| if (extensions::FeatureSwitch::easy_off_store_install()->IsEnabled() &&
|
| is_extension_download &&
|
| !extensions::WebstoreInstaller::GetAssociatedApproval(*download_)) {
|
| - return download_util::ALLOW_ON_USER_GESTURE;
|
| + return DownloadFileType::ALLOW_ON_USER_GESTURE;
|
| }
|
| #endif
|
|
|
| // Anything the user has marked auto-open is OK if it's user-initiated.
|
| if (download_prefs_->IsAutoOpenEnabledBasedOnExtension(virtual_path_) &&
|
| download_->HasUserGesture())
|
| - return download_util::NOT_DANGEROUS;
|
| + return DownloadFileType::NOT_DANGEROUS;
|
|
|
| - download_util::DownloadDangerLevel danger_level =
|
| - download_util::GetFileDangerLevel(virtual_path_.BaseName());
|
| + DownloadFileType::DangerLevel danger_level =
|
| + safe_browsing::FileTypePolicies::GetInstance()->GetFileDangerLevel(
|
| + virtual_path_.BaseName());
|
|
|
| // If the danger level is ALLOW_ON_USER_GESTURE and we have a user gesture AND
|
| // there was a recorded visit to the referrer prior to today, then we are
|
| // going to downgrade the danger_level to NOT_DANGEROUS. This prevents
|
| // spurious prompting for moderately dangerous files that are downloaded from
|
| // familiar sites.
|
| - if (danger_level == download_util::ALLOW_ON_USER_GESTURE &&
|
| + if (danger_level == DownloadFileType::ALLOW_ON_USER_GESTURE &&
|
| (download_->GetTransitionType() == ui::PAGE_TRANSITION_FROM_ADDRESS_BAR ||
|
| (download_->HasUserGesture() && visits == VISITED_REFERRER)))
|
| - return download_util::NOT_DANGEROUS;
|
| + return DownloadFileType::NOT_DANGEROUS;
|
| return danger_level;
|
| }
|
|
|
|
|