| Index: chrome/browser/safe_browsing/download_protection_service.cc
|
| diff --git a/chrome/browser/safe_browsing/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection_service.cc
|
| index a17daed873d442c687861883db4232a7f98c3ff5..bedb410f78e37d46c398c8c4deef340140d978b3 100644
|
| --- a/chrome/browser/safe_browsing/download_protection_service.cc
|
| +++ b/chrome/browser/safe_browsing/download_protection_service.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/format_macros.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/metrics/field_trial.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/metrics/sparse_histogram.h"
|
| #include "base/sequenced_task_runner_helpers.h"
|
| @@ -615,7 +616,15 @@ class DownloadProtectionService::CheckClientDownloadRequest
|
| // Currently, the UI only works on Windows so we don't even bother with
|
| // pinging the server if we're not on Windows.
|
| // TODO(noelutz): change this code once the UI is done for Linux and Mac.
|
| -#if defined(OS_WIN)
|
| +#if defined(OS_MACOSX)
|
| + // TODO(mattm): remove this (see crbug.com/414834).
|
| + if (base::FieldTrialList::FindFullName("SafeBrowsingOSXClientDownloadPings")
|
| + != "Enabled") {
|
| + PostFinishTask(UNKNOWN, REASON_OS_NOT_SUPPORTED);
|
| + return;
|
| + }
|
| +#endif
|
| +#if defined(OS_WIN) || defined(OS_MACOSX)
|
| // The URLFetcher is owned by the UI thread, so post a message to
|
| // start the pingback.
|
| BrowserThread::PostTask(
|
| @@ -780,6 +789,13 @@ class DownloadProtectionService::CheckClientDownloadRequest
|
| UMA_HISTOGRAM_ENUMERATION("SBClientDownload.CheckDownloadStats",
|
| reason,
|
| REASON_MAX);
|
| +#if defined(OS_MACOSX)
|
| + // OSX is currently sending pings only for evaluation purposes, ignore
|
| + // the result for now.
|
| + // TODO(mattm): remove this and update the ifdef in
|
| + // DownloadItemImpl::IsDangerous (see crbug.com/413968).
|
| + result = UNKNOWN;
|
| +#endif
|
| callback_.Run(result);
|
| item_->RemoveObserver(this);
|
| item_ = NULL;
|
| @@ -929,18 +945,17 @@ void DownloadProtectionService::CheckDownloadUrl(
|
| bool DownloadProtectionService::IsSupportedDownload(
|
| const content::DownloadItem& item,
|
| const base::FilePath& target_path) const {
|
| - // Currently, the UI only works on Windows. On Linux and Mac we still
|
| + // Currently, the UI is only enabled on Windows. On Mac we send the ping but
|
| + // ignore the result (see ifdef in FinishRequest). On Linux we still
|
| // want to show the dangerous file type warning if the file is possibly
|
| // dangerous which means we have to always return false here.
|
| #if defined(OS_WIN)
|
| DownloadCheckResultReason reason = REASON_MAX;
|
| ClientDownloadRequest::DownloadType type =
|
| ClientDownloadRequest::WIN_EXECUTABLE;
|
| - return (CheckClientDownloadRequest::IsSupportedDownload(item, target_path,
|
| - &reason, &type) &&
|
| - (ClientDownloadRequest::ANDROID_APK == type ||
|
| - ClientDownloadRequest::WIN_EXECUTABLE == type ||
|
| - ClientDownloadRequest::ZIPPED_EXECUTABLE == type));
|
| + return (CheckClientDownloadRequest::IsSupportedDownload(
|
| + item, target_path, &reason, &type) &&
|
| + (ClientDownloadRequest::CHROME_EXTENSION != type));
|
| #else
|
| return false;
|
| #endif
|
|
|