| Index: chrome/browser/download/download_util.cc
|
| ===================================================================
|
| --- chrome/browser/download/download_util.cc (revision 68377)
|
| +++ chrome/browser/download/download_util.cc (working copy)
|
| @@ -27,6 +27,7 @@
|
| #include "base/values.h"
|
| #include "base/win/windows_version.h"
|
| #include "chrome/browser/browser_thread.h"
|
| +#include "chrome/browser/download/download_extensions.h"
|
| #include "chrome/browser/download/download_item.h"
|
| #include "chrome/browser/download/download_item_model.h"
|
| #include "chrome/browser/download/download_manager.h"
|
| @@ -719,18 +720,22 @@
|
|
|
| // TODO(erikkay,phajdan.jr): This is apparently not being exercised in tests.
|
| bool IsDangerous(DownloadCreateInfo* info, Profile* profile) {
|
| - // Downloads can be marked as dangerous for two reasons:
|
| - // a) They have a dangerous-looking filename
|
| - // b) They are an extension that is not from the gallery
|
| - if (IsExecutableFile(info->suggested_path.BaseName())) {
|
| + DownloadDangerLevel danger_level = GetFileDangerLevel(
|
| + info->suggested_path.BaseName());
|
| +
|
| + if (danger_level == Dangerous) {
|
| return true;
|
| + } else if (danger_level == AllowOnUserGesture && !info->has_user_gesture) {
|
| + return true;
|
| } else if (info->is_extension_install) {
|
| ExtensionsService* service = profile->GetExtensionsService();
|
| if (!service ||
|
| !service->IsDownloadFromGallery(info->url, info->referrer_url)) {
|
| + // Extensions that are not from the gallery are considered dangerous.
|
| return true;
|
| }
|
| }
|
| +
|
| return false;
|
| }
|
|
|
|
|