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" |
11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
12 #include "base/message_loop_helpers.h" | 12 #include "base/message_loop_helpers.h" |
13 #include "base/metrics/histogram.h" | 13 #include "base/metrics/histogram.h" |
14 #include "base/stl_util.h" | 14 #include "base/stl_util.h" |
15 #include "base/string_number_conversions.h" | 15 #include "base/string_number_conversions.h" |
16 #include "base/string_util.h" | 16 #include "base/string_util.h" |
17 #include "base/stringprintf.h" | 17 #include "base/stringprintf.h" |
18 #include "base/threading/sequenced_worker_pool.h" | 18 #include "base/threading/sequenced_worker_pool.h" |
19 #include "base/time.h" | 19 #include "base/time.h" |
20 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 20 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
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" | |
31 #include "net/base/load_flags.h" | 30 #include "net/base/load_flags.h" |
32 #include "net/base/x509_cert_types.h" | 31 #include "net/base/x509_cert_types.h" |
33 #include "net/base/x509_certificate.h" | 32 #include "net/base/x509_certificate.h" |
34 #include "net/http/http_status_code.h" | 33 #include "net/http/http_status_code.h" |
| 34 #include "net/url_request/url_fetcher.h" |
35 #include "net/url_request/url_fetcher_delegate.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 |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 request.mutable_signature()->CopyFrom(signature_info_); | 681 request.mutable_signature()->CopyFrom(signature_info_); |
682 std::string request_data; | 682 std::string request_data; |
683 if (!request.SerializeToString(&request_data)) { | 683 if (!request.SerializeToString(&request_data)) { |
684 RecordImprovedProtectionStats(REASON_INVALID_REQUEST_PROTO); | 684 RecordImprovedProtectionStats(REASON_INVALID_REQUEST_PROTO); |
685 FinishRequest(SAFE); | 685 FinishRequest(SAFE); |
686 return; | 686 return; |
687 } | 687 } |
688 | 688 |
689 VLOG(2) << "Sending a request for URL: " | 689 VLOG(2) << "Sending a request for URL: " |
690 << info_.download_url_chain.back(); | 690 << info_.download_url_chain.back(); |
691 fetcher_.reset(content::URLFetcher::Create(0 /* ID used for testing */, | 691 fetcher_.reset(net::URLFetcher::Create(0 /* ID used for testing */, |
692 GURL(kDownloadRequestUrl), | 692 GURL(kDownloadRequestUrl), |
693 net::URLFetcher::POST, | 693 net::URLFetcher::POST, |
694 this)); | 694 this)); |
695 fetcher_->SetLoadFlags(net::LOAD_DISABLE_CACHE); | 695 fetcher_->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
696 fetcher_->SetAutomaticallyRetryOn5xx(false); // Don't retry on error. | 696 fetcher_->SetAutomaticallyRetryOn5xx(false); // Don't retry on error. |
697 fetcher_->SetRequestContext(service_->request_context_getter_.get()); | 697 fetcher_->SetRequestContext(service_->request_context_getter_.get()); |
698 fetcher_->SetUploadData("application/octet-stream", request_data); | 698 fetcher_->SetUploadData("application/octet-stream", request_data); |
699 fetcher_->Start(); | 699 fetcher_->Start(); |
700 } | 700 } |
701 | 701 |
702 void PostFinishTask(DownloadCheckResult result) { | 702 void PostFinishTask(DownloadCheckResult result) { |
703 BrowserThread::PostTask( | 703 BrowserThread::PostTask( |
704 BrowserThread::UI, | 704 BrowserThread::UI, |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 | 958 |
959 std::string issuer_fp = base::HexEncode(issuer.fingerprint().data, | 959 std::string issuer_fp = base::HexEncode(issuer.fingerprint().data, |
960 sizeof(issuer.fingerprint().data)); | 960 sizeof(issuer.fingerprint().data)); |
961 for (std::set<std::string>::iterator it = paths_to_check.begin(); | 961 for (std::set<std::string>::iterator it = paths_to_check.begin(); |
962 it != paths_to_check.end(); ++it) { | 962 it != paths_to_check.end(); ++it) { |
963 whitelist_strings->push_back("cert/" + issuer_fp + *it); | 963 whitelist_strings->push_back("cert/" + issuer_fp + *it); |
964 } | 964 } |
965 } | 965 } |
966 | 966 |
967 } // namespace safe_browsing | 967 } // namespace safe_browsing |
OLD | NEW |