OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/safe_browsing/download_protection_service.h" | 5 #include "chrome/browser/safe_browsing/download_protection_service.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "chrome/browser/safe_browsing/signature_util.h" | 21 #include "chrome/browser/safe_browsing/signature_util.h" |
22 #include "chrome/browser/ui/browser.h" | 22 #include "chrome/browser/ui/browser.h" |
23 #include "chrome/browser/ui/browser_list.h" | 23 #include "chrome/browser/ui/browser_list.h" |
24 #include "chrome/common/safe_browsing/csd.pb.h" | 24 #include "chrome/common/safe_browsing/csd.pb.h" |
25 #include "chrome/common/url_constants.h" | 25 #include "chrome/common/url_constants.h" |
26 #include "chrome/common/zip_reader.h" | 26 #include "chrome/common/zip_reader.h" |
27 #include "content/public/browser/browser_thread.h" | 27 #include "content/public/browser/browser_thread.h" |
28 #include "content/public/browser/download_item.h" | 28 #include "content/public/browser/download_item.h" |
29 #include "content/public/browser/page_navigator.h" | 29 #include "content/public/browser/page_navigator.h" |
30 #include "content/public/common/url_fetcher.h" | 30 #include "content/public/common/url_fetcher.h" |
31 #include "content/public/common/url_fetcher_delegate.h" | |
32 #include "net/base/load_flags.h" | 31 #include "net/base/load_flags.h" |
33 #include "net/base/x509_cert_types.h" | 32 #include "net/base/x509_cert_types.h" |
34 #include "net/base/x509_certificate.h" | 33 #include "net/base/x509_certificate.h" |
35 #include "net/http/http_status_code.h" | 34 #include "net/http/http_status_code.h" |
| 35 #include "net/url_request/url_fetcher_delegate.h" |
36 #include "net/url_request/url_request_context_getter.h" | 36 #include "net/url_request/url_request_context_getter.h" |
37 #include "net/url_request/url_request_status.h" | 37 #include "net/url_request/url_request_status.h" |
38 | 38 |
39 using content::BrowserThread; | 39 using content::BrowserThread; |
40 | 40 |
41 namespace { | 41 namespace { |
42 static const int64 kDownloadRequestTimeoutMs = 3000; | 42 static const int64 kDownloadRequestTimeoutMs = 3000; |
43 } // namespace | 43 } // namespace |
44 | 44 |
45 namespace safe_browsing { | 45 namespace safe_browsing { |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 virtual ~DownloadUrlSBClient() {} | 324 virtual ~DownloadUrlSBClient() {} |
325 | 325 |
326 private: | 326 private: |
327 DISALLOW_COPY_AND_ASSIGN(DownloadUrlSBClient); | 327 DISALLOW_COPY_AND_ASSIGN(DownloadUrlSBClient); |
328 }; | 328 }; |
329 | 329 |
330 class DownloadProtectionService::CheckClientDownloadRequest | 330 class DownloadProtectionService::CheckClientDownloadRequest |
331 : public base::RefCountedThreadSafe< | 331 : public base::RefCountedThreadSafe< |
332 DownloadProtectionService::CheckClientDownloadRequest, | 332 DownloadProtectionService::CheckClientDownloadRequest, |
333 BrowserThread::DeleteOnUIThread>, | 333 BrowserThread::DeleteOnUIThread>, |
334 public content::URLFetcherDelegate { | 334 public net::URLFetcherDelegate { |
335 public: | 335 public: |
336 CheckClientDownloadRequest(const DownloadInfo& info, | 336 CheckClientDownloadRequest(const DownloadInfo& info, |
337 const CheckDownloadCallback& callback, | 337 const CheckDownloadCallback& callback, |
338 DownloadProtectionService* service, | 338 DownloadProtectionService* service, |
339 SafeBrowsingService* sb_service, | 339 SafeBrowsingService* sb_service, |
340 SignatureUtil* signature_util) | 340 SignatureUtil* signature_util) |
341 : info_(info), | 341 : info_(info), |
342 callback_(callback), | 342 callback_(callback), |
343 service_(service), | 343 service_(service), |
344 signature_util_(signature_util), | 344 signature_util_(signature_util), |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 // fetcher so it does not try to invoke OnURLFetchComplete. | 414 // fetcher so it does not try to invoke OnURLFetchComplete. |
415 fetcher_.reset(); | 415 fetcher_.reset(); |
416 } | 416 } |
417 // Note: If there is no fetcher, then some callback is still holding a | 417 // Note: If there is no fetcher, then some callback is still holding a |
418 // reference to this object. We'll eventually wind up in some method on | 418 // reference to this object. We'll eventually wind up in some method on |
419 // the UI thread that will call FinishRequest() again. If FinishRequest() | 419 // the UI thread that will call FinishRequest() again. If FinishRequest() |
420 // is called a second time, it will be a no-op. | 420 // is called a second time, it will be a no-op. |
421 service_ = NULL; | 421 service_ = NULL; |
422 } | 422 } |
423 | 423 |
424 // From the content::URLFetcherDelegate interface. | 424 // From the net::URLFetcherDelegate interface. |
425 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE { | 425 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE { |
426 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 426 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
427 DCHECK_EQ(source, fetcher_.get()); | 427 DCHECK_EQ(source, fetcher_.get()); |
428 VLOG(2) << "Received a response for URL: " | 428 VLOG(2) << "Received a response for URL: " |
429 << info_.download_url_chain.back() << ": success=" | 429 << info_.download_url_chain.back() << ": success=" |
430 << source->GetStatus().is_success() << " response_code=" | 430 << source->GetStatus().is_success() << " response_code=" |
431 << source->GetResponseCode(); | 431 << source->GetResponseCode(); |
432 DownloadCheckResultReason reason = REASON_SERVER_PING_FAILED; | 432 DownloadCheckResultReason reason = REASON_SERVER_PING_FAILED; |
433 DownloadCheckResult result = SAFE; | 433 DownloadCheckResult result = SAFE; |
434 if (source->GetStatus().is_success() && | 434 if (source->GetStatus().is_success() && |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
943 | 943 |
944 std::string issuer_fp = base::HexEncode(issuer.fingerprint().data, | 944 std::string issuer_fp = base::HexEncode(issuer.fingerprint().data, |
945 sizeof(issuer.fingerprint().data)); | 945 sizeof(issuer.fingerprint().data)); |
946 for (std::set<std::string>::iterator it = paths_to_check.begin(); | 946 for (std::set<std::string>::iterator it = paths_to_check.begin(); |
947 it != paths_to_check.end(); ++it) { | 947 it != paths_to_check.end(); ++it) { |
948 whitelist_strings->push_back("cert/" + issuer_fp + *it); | 948 whitelist_strings->push_back("cert/" + issuer_fp + *it); |
949 } | 949 } |
950 } | 950 } |
951 | 951 |
952 } // namespace safe_browsing | 952 } // namespace safe_browsing |
OLD | NEW |