Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6176)

Unified Diff: chrome/browser/download/download_safe_browsing_client.h

Issue 8536041: This CL integrates the new SafeBrowsing download service class (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fix uninitialized variable issue. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/download/download_safe_browsing_client.h
diff --git a/chrome/browser/download/download_safe_browsing_client.h b/chrome/browser/download/download_safe_browsing_client.h
deleted file mode 100644
index 3b4d14b975b46fe9c2fa1d10165af9ae976d1f2d..0000000000000000000000000000000000000000
--- a/chrome/browser/download/download_safe_browsing_client.h
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_DOWNLOAD_DOWNLOAD_SAFE_BROWSING_CLIENT_H_
-#define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_SAFE_BROWSING_CLIENT_H_
-#pragma once
-
-#include "base/callback.h"
-#include "base/memory/ref_counted.h"
-#include "base/time.h"
-#include "chrome/browser/safe_browsing/safe_browsing_service.h"
-
-// This is a helper class used by DownloadManager to check a download URL with
-// SafeBrowsingService. The client is refcounted and will be released once there
-// is no reference to it.
-// Usage:
-// {
-// scoped_refptr<DownloadSBClient> client_ = new DownloadSBClient(...);
-// client_->CheckDownloadUrl(
-// ..., base::Bind(&DownloadManager::UrlCallBack,
-// base::Unretained(this)));
-// or
-// client_->CheckDownloadHash(
-// ..., base::Bind(&DownloadManager::HashCallBack,
-// base::Unretained(this)));
-// }
-// DownloadManager::UrlCallBack(...) or HashCallCall {
-// // After this, the |client_| is gone.
-// }
-class DownloadSBClient
- : public SafeBrowsingService::Client,
- public base::RefCountedThreadSafe<DownloadSBClient> {
- public:
- typedef base::Callback<void(int32, bool)> UrlDoneCallback;
- typedef base::Callback<void(int32, bool)> HashDoneCallback;
-
- DownloadSBClient(int32 download_id,
- const std::vector<GURL>& url_chain,
- const GURL& referrer_url,
- bool safe_browsing_enabled);
-
- // Call safebrowsing service to verify the download.
- // For each DownloadSBClient instance, either CheckDownloadUrl or
- // CheckDownloadHash can be called, and be called only once.
- // DownloadSBClient instance.
- void CheckDownloadUrl(const UrlDoneCallback& callback);
- void CheckDownloadHash(const std::string& hash,
- const HashDoneCallback& callback);
-
- private:
- // Call SafeBrowsingService on IO thread to verify the download URL or
- // hash of downloaded file.
- void CheckDownloadUrlOnIOThread(const std::vector<GURL>& url_chain);
- void CheckDownloadHashOnIOThread(const std::string& hash);
-
- // Callback interfaces for SafeBrowsingService::Client.
- virtual void OnDownloadUrlCheckResult(
- const std::vector<GURL>& url_chain,
- SafeBrowsingService::UrlCheckResult result) OVERRIDE;
- virtual void OnDownloadHashCheckResult(
- const std::string& hash,
- SafeBrowsingService::UrlCheckResult result) OVERRIDE;
-
- // Enumerate for histogramming purposes.
- // DO NOT CHANGE THE ORDERING OF THESE VALUES (different histogram data will
- // be mixed together based on their values).
- enum SBStatsType {
- DOWNLOAD_URL_CHECKS_TOTAL,
- DOWNLOAD_URL_CHECKS_CANCELED,
- DOWNLOAD_URL_CHECKS_MALWARE,
-
- DOWNLOAD_HASH_CHECKS_TOTAL,
- DOWNLOAD_HASH_CHECKS_MALWARE,
-
- // Memory space for histograms is determined by the max.
- // ALWAYS ADD NEW VALUES BEFORE THIS ONE.
- DOWNLOAD_CHECKS_MAX
- };
-
- friend class base::RefCountedThreadSafe<DownloadSBClient>;
- friend class DownloadSBClientTest_UrlHit_Test;
- friend class DownloadSBClientTest_DigestHit_Test;
-
- // Set the |sb_service_| manually for testing purposes.
- void SetSBService(SafeBrowsingService* service) {
- sb_service_ = service;
- }
-
- virtual ~DownloadSBClient();
-
- // Call DownloadManager on UI thread for download URL or hash check.
- void SafeBrowsingCheckUrlDone(SafeBrowsingService::UrlCheckResult result);
- void SafeBrowsingCheckHashDone(SafeBrowsingService::UrlCheckResult result,
- const std::string& hash);
-
- // Report malware hits to safebrowsing service. |hash| should be empty if
- // this is an URL check result.
- void ReportMalware(SafeBrowsingService::UrlCheckResult result,
- const std::string& hash);
-
- // Update the UMA stats.
- void UpdateDownloadCheckStats(SBStatsType stat_type);
-
- UrlDoneCallback url_done_callback_;
- HashDoneCallback hash_done_callback_;
-
- int32 download_id_;
- scoped_refptr<SafeBrowsingService> sb_service_;
-
- // These URLs are used to report malware to safe browsing service.
- std::vector<GURL> url_chain_;
- GURL referrer_url_;
-
- // When a safebrowsing check starts, for stats purpose.
- base::TimeTicks start_time_;
-
- // Whether the profile from which this client was created has enabled the
- // safe browsing service.
- bool safe_browsing_enabled_;
-
- DISALLOW_COPY_AND_ASSIGN(DownloadSBClient);
-};
-
-#endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_SAFE_BROWSING_CLIENT_H_

Powered by Google App Engine
This is Rietveld 408576698