| Index: chrome/browser/download/download_prefs.cc
|
| diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc
|
| index 1f2bca55b27a2bb56bfa81b438414856e9211714..eb39af5963a5d1d72a0f57540c3c8ce72971bfca 100644
|
| --- a/chrome/browser/download/download_prefs.cc
|
| +++ b/chrome/browser/download/download_prefs.cc
|
| @@ -23,6 +23,7 @@
|
| #include "build/build_config.h"
|
| #include "chrome/browser/download/chrome_download_manager_delegate.h"
|
| #include "chrome/browser/download/download_target_determiner.h"
|
| +#include "chrome/browser/download/trusted_sources_manager.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/common/chrome_paths.h"
|
| @@ -31,6 +32,7 @@
|
| #include "components/pref_registry/pref_registry_syncable.h"
|
| #include "components/prefs/pref_service.h"
|
| #include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/download_item.h"
|
| #include "content/public/browser/download_manager.h"
|
| #include "content/public/browser/save_page_type.h"
|
|
|
| @@ -156,6 +158,8 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profile_(profile) {
|
| download_path_.Init(prefs::kDownloadDefaultDirectory, prefs);
|
| save_file_path_.Init(prefs::kSaveFileDefaultDirectory, prefs);
|
| save_file_type_.Init(prefs::kSaveFileType, prefs);
|
| + safebrowsing_for_trusted_sources_enabled_.Init(
|
| + prefs::kSafeBrowsingForTrustedSourcesEnabled, prefs);
|
| download_restriction_.Init(prefs::kDownloadRestrictions, prefs);
|
|
|
| // We store any file extension that should be opened automatically at
|
| @@ -188,8 +192,9 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profile_(profile) {
|
| // expected that some entries in the users' auto open list will get dropped
|
| // permanently as a result.
|
| if (FileTypePolicies::GetInstance()->IsAllowedToOpenAutomatically(
|
| - filename_with_extension))
|
| + filename_with_extension)) {
|
| auto_open_.insert(extension);
|
| + }
|
| }
|
| }
|
|
|
| @@ -206,6 +211,9 @@ void DownloadPrefs::RegisterProfilePrefs(
|
| registry->RegisterBooleanPref(prefs::kDownloadDirUpgraded, false);
|
| registry->RegisterIntegerPref(prefs::kSaveFileType,
|
| content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML);
|
| + registry->RegisterIntegerPref(prefs::kDownloadRestrictions, 0);
|
| + registry->RegisterBooleanPref(prefs::kSafeBrowsingForTrustedSourcesEnabled,
|
| + true);
|
|
|
| const base::FilePath& default_download_path = GetDefaultDownloadDirectory();
|
| registry->RegisterFilePathPref(prefs::kDownloadDefaultDirectory,
|
| @@ -245,6 +253,12 @@ DownloadPrefs* DownloadPrefs::FromBrowserContext(
|
| return FromDownloadManager(BrowserContext::GetDownloadManager(context));
|
| }
|
|
|
| +bool DownloadPrefs::IsFromTrustedSource(const content::DownloadItem& item) {
|
| + if (!trusted_sources_manager_)
|
| + trusted_sources_manager_.reset(TrustedSourcesManager::Create());
|
| + return trusted_sources_manager_->IsFromTrustedSource(item.GetURL());
|
| +}
|
| +
|
| base::FilePath DownloadPrefs::DownloadPath() const {
|
| #if defined(OS_CHROMEOS)
|
| // If the download path is under /drive, and DriveIntegrationService isn't
|
| @@ -315,8 +329,9 @@ bool DownloadPrefs::EnableAutoOpenBasedOnExtension(
|
| const base::FilePath& file_name) {
|
| base::FilePath::StringType extension = file_name.Extension();
|
| if (!FileTypePolicies::GetInstance()->IsAllowedToOpenAutomatically(
|
| - file_name))
|
| + file_name)) {
|
| return false;
|
| + }
|
|
|
| DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
|
| extension.erase(0, 1);
|
|
|