Chromium Code Reviews| Index: chrome/browser/safe_browsing/download_protection_service.h |
| diff --git a/chrome/browser/safe_browsing/download_protection_service.h b/chrome/browser/safe_browsing/download_protection_service.h |
| index 070c9a388d60f8f306e2634c0d0b10ec49cb0483..2d4db50170db6cfab42e9540e453a24c05a31e2c 100644 |
| --- a/chrome/browser/safe_browsing/download_protection_service.h |
| +++ b/chrome/browser/safe_browsing/download_protection_service.h |
| @@ -14,9 +14,11 @@ |
| #include "base/basictypes.h" |
| #include "base/callback.h" |
| +#include "base/callback_list.h" |
| #include "base/files/file_path.h" |
| #include "base/gtest_prod_util.h" |
| #include "base/memory/ref_counted.h" |
| +#include "base/memory/scoped_ptr.h" |
| #include "chrome/browser/safe_browsing/database_manager.h" |
| #include "chrome/browser/safe_browsing/ui_manager.h" |
| #include "url/gurl.h" |
| @@ -33,8 +35,9 @@ class X509Certificate; |
| } // namespace net |
| namespace safe_browsing { |
| -class DownloadFeedbackService; |
| class BinaryFeatureExtractor; |
| +class ClientDownloadRequest; |
| +class DownloadFeedbackService; |
| // This class provides an asynchronous API to check whether a particular |
| // client download is malicious or not. |
| @@ -52,6 +55,18 @@ class DownloadProtectionService { |
| // Callback type which is invoked once the download request is done. |
| typedef base::Callback<void(DownloadCheckResult)> CheckDownloadCallback; |
| + // A type of callback run on the main thread when a ClientDownloadRequest has |
| + // been formed for a download, or when one has not been formed for a supported |
| + // download. |
| + typedef base::Callback<void(content::DownloadItem*, |
| + const ClientDownloadRequest*)> |
| + ClientDownloadRequestCallback; |
|
robertshield
2014/10/21 13:15:38
nit: line-break here to make it clearer the commen
grt (UTC plus 2)
2014/10/23 19:53:13
Done.
|
| + typedef base::CallbackList<void(content::DownloadItem*, |
| + const ClientDownloadRequest*)> |
| + ClientDownloadRequestCallbackList; |
|
robertshield
2014/10/21 13:15:38
Does the list typedef need to be public?
grt (UTC plus 2)
2014/10/23 19:53:13
Yes, since the contained Subscription type is part
robertshield
2014/10/23 20:30:27
The Subscription is but not the SubscriptionList.
grt (UTC plus 2)
2014/10/23 21:02:18
The two ways I've found of not making the Callback
robertshield
2014/10/23 21:43:03
Can't you move the list typedef down into the priv
grt (UTC plus 2)
2014/10/24 01:51:30
Didn't work when I tried it:
...\download_protect
robertshield
2014/10/24 03:05:46
Huh, nm then, as is works for me.
|
| + typedef scoped_ptr<ClientDownloadRequestCallbackList::Subscription> |
| + ClientDownloadRequestSubscription; |
| + |
| // Creates a download service. The service is initially disabled. You need |
| // to call SetEnabled() to start it. |sb_service| owns this object; we |
| // keep a reference to |request_context_getter|. |
| @@ -107,6 +122,11 @@ class DownloadProtectionService { |
| return feedback_service_.get(); |
| } |
| + // Registers a callback that will be run when a ClientDownloadRequest has |
| + // been formed. |
| + ClientDownloadRequestSubscription RegisterClientDownloadRequestCallback( |
| + const ClientDownloadRequestCallback& callback); |
| + |
| protected: |
| // Enum to keep track why a particular download verdict was chosen. |
| // This is used to keep some stats around. |
| @@ -198,6 +218,10 @@ class DownloadProtectionService { |
| scoped_ptr<DownloadFeedbackService> feedback_service_; |
| + // A list of callbacks to be run on the main thread when a |
| + // ClientDownloadRequest has been formed. |
| + ClientDownloadRequestCallbackList client_download_request_callbacks_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(DownloadProtectionService); |
| }; |
| } // namespace safe_browsing |