| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 930 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 | 941 |
| 942 for (auto bin_itr : request.archived_binary()) { | 942 for (auto bin_itr : request.archived_binary()) { |
| 943 if (service_->IsHashManuallyBlacklisted(bin_itr.digests().sha256())) | 943 if (service_->IsHashManuallyBlacklisted(bin_itr.digests().sha256())) |
| 944 return true; | 944 return true; |
| 945 } | 945 } |
| 946 return false; | 946 return false; |
| 947 } | 947 } |
| 948 | 948 |
| 949 // Prepares URLs to be put into a ping message. Currently this just shortens | 949 // Prepares URLs to be put into a ping message. Currently this just shortens |
| 950 // data: URIs, other URLs are included verbatim. If this is a sampled binary, | 950 // data: URIs, other URLs are included verbatim. If this is a sampled binary, |
| 951 // we'll send a lite-ping which strips all PII. | 951 // we'll send a light-ping which strips PII from the URL. |
| 952 std::string SanitizeUrl(const GURL& url) const { | 952 std::string SanitizeUrl(const GURL& url) const { |
| 953 if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) | 953 if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) |
| 954 return url.GetOrigin().spec(); | 954 return url.GetOrigin().spec(); |
| 955 | 955 |
| 956 std::string spec = url.spec(); | 956 std::string spec = url.spec(); |
| 957 if (url.SchemeIs(url::kDataScheme)) { | 957 if (url.SchemeIs(url::kDataScheme)) { |
| 958 size_t comma_pos = spec.find(','); | 958 size_t comma_pos = spec.find(','); |
| 959 if (comma_pos != std::string::npos && comma_pos != spec.size() - 1) { | 959 if (comma_pos != std::string::npos && comma_pos != spec.size() - 1) { |
| 960 std::string hash_value = crypto::SHA256HashString(spec); | 960 std::string hash_value = crypto::SHA256HashString(spec); |
| 961 spec.erase(comma_pos + 1); | 961 spec.erase(comma_pos + 1); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1015 resource->set_url(SanitizeUrl(tab_url_)); | 1015 resource->set_url(SanitizeUrl(tab_url_)); |
| 1016 DVLOG(2) << "tab url " << resource->url(); | 1016 DVLOG(2) << "tab url " << resource->url(); |
| 1017 resource->set_type(ClientDownloadRequest::TAB_URL); | 1017 resource->set_type(ClientDownloadRequest::TAB_URL); |
| 1018 if (tab_referrer_url_.is_valid()) { | 1018 if (tab_referrer_url_.is_valid()) { |
| 1019 resource->set_referrer(SanitizeUrl(tab_referrer_url_)); | 1019 resource->set_referrer(SanitizeUrl(tab_referrer_url_)); |
| 1020 DVLOG(2) << "tab referrer " << resource->referrer(); | 1020 DVLOG(2) << "tab referrer " << resource->referrer(); |
| 1021 } | 1021 } |
| 1022 } | 1022 } |
| 1023 | 1023 |
| 1024 request.set_user_initiated(item_->HasUserGesture()); | 1024 request.set_user_initiated(item_->HasUserGesture()); |
| 1025 if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) { | 1025 request.set_file_basename( |
| 1026 request.set_file_basename( | |
| 1027 base::FilePath(item_->GetTargetFilePath().Extension()) | |
| 1028 .AsUTF8Unsafe()); | |
| 1029 } else { | |
| 1030 request.set_file_basename( | |
| 1031 item_->GetTargetFilePath().BaseName().AsUTF8Unsafe()); | 1026 item_->GetTargetFilePath().BaseName().AsUTF8Unsafe()); |
| 1032 } | |
| 1033 request.set_download_type(type_); | 1027 request.set_download_type(type_); |
| 1034 | 1028 |
| 1035 ReferrerChainData* referrer_chain_data = | 1029 ReferrerChainData* referrer_chain_data = |
| 1036 static_cast<ReferrerChainData*>( | 1030 static_cast<ReferrerChainData*>( |
| 1037 item_->GetUserData(kDownloadReferrerChainDataKey)); | 1031 item_->GetUserData(kDownloadReferrerChainDataKey)); |
| 1038 if (referrer_chain_data && | 1032 if (referrer_chain_data && |
| 1039 !referrer_chain_data->GetReferrerChain()->empty()) { | 1033 !referrer_chain_data->GetReferrerChain()->empty()) { |
| 1040 request.mutable_referrer_chain()->Swap( | 1034 request.mutable_referrer_chain()->Swap( |
| 1041 referrer_chain_data->GetReferrerChain()); | 1035 referrer_chain_data->GetReferrerChain()); |
| 1042 } | 1036 } |
| (...skipping 953 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1996 out_request->mutable_referrer_chain()); | 1990 out_request->mutable_referrer_chain()); |
| 1997 UMA_HISTOGRAM_COUNTS_100( | 1991 UMA_HISTOGRAM_COUNTS_100( |
| 1998 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution", | 1992 "SafeBrowsing.ReferrerURLChainSize.PPAPIDownloadAttribution", |
| 1999 out_request->referrer_chain_size()); | 1993 out_request->referrer_chain_size()); |
| 2000 UMA_HISTOGRAM_ENUMERATION( | 1994 UMA_HISTOGRAM_ENUMERATION( |
| 2001 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result, | 1995 "SafeBrowsing.ReferrerAttributionResult.PPAPIDownloadAttribution", result, |
| 2002 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); | 1996 SafeBrowsingNavigationObserverManager::ATTRIBUTION_FAILURE_TYPE_MAX); |
| 2003 } | 1997 } |
| 2004 | 1998 |
| 2005 } // namespace safe_browsing | 1999 } // namespace safe_browsing |
| OLD | NEW |