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 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
464 std::string data; | 464 std::string data; |
465 bool got_data = source->GetResponseAsString(&data); | 465 bool got_data = source->GetResponseAsString(&data); |
466 DCHECK(got_data); | 466 DCHECK(got_data); |
467 if (!response.ParseFromString(data)) { | 467 if (!response.ParseFromString(data)) { |
468 reason = REASON_INVALID_RESPONSE_PROTO; | 468 reason = REASON_INVALID_RESPONSE_PROTO; |
469 result = UNKNOWN; | 469 result = UNKNOWN; |
470 } else if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) { | 470 } else if (type_ == ClientDownloadRequest::SAMPLED_UNSUPPORTED_FILE) { |
471 // Ignore the verdict because we were just reporting a sampled file. | 471 // Ignore the verdict because we were just reporting a sampled file. |
472 reason = REASON_SAMPLED_UNSUPPORTED_FILE; | 472 reason = REASON_SAMPLED_UNSUPPORTED_FILE; |
473 result = UNKNOWN; | 473 result = UNKNOWN; |
474 } else if (response.verdict() == ClientDownloadResponse::SAFE) { | |
475 reason = REASON_DOWNLOAD_SAFE; | |
476 result = SAFE; | |
477 } else if (service_ && !service_->IsSupportedDownload( | |
478 *item_, item_->GetTargetFilePath())) { | |
479 // TODO(nparker): Remove this check since it should be impossible. | |
480 reason = REASON_DOWNLOAD_NOT_SUPPORTED; | |
481 result = UNKNOWN; | |
482 } else if (response.verdict() == ClientDownloadResponse::DANGEROUS) { | |
483 reason = REASON_DOWNLOAD_DANGEROUS; | |
484 result = DANGEROUS; | |
485 token = response.token(); | |
486 } else if (response.verdict() == ClientDownloadResponse::UNCOMMON) { | |
487 reason = REASON_DOWNLOAD_UNCOMMON; | |
488 result = UNCOMMON; | |
489 token = response.token(); | |
490 } else if (response.verdict() == ClientDownloadResponse::DANGEROUS_HOST) { | |
491 reason = REASON_DOWNLOAD_DANGEROUS_HOST; | |
492 result = DANGEROUS_HOST; | |
493 token = response.token(); | |
494 } else if ( | |
495 response.verdict() == ClientDownloadResponse::POTENTIALLY_UNWANTED) { | |
496 reason = REASON_DOWNLOAD_POTENTIALLY_UNWANTED; | |
497 result = POTENTIALLY_UNWANTED; | |
498 token = response.token(); | |
499 } else { | 474 } else { |
500 LOG(DFATAL) << "Unknown download response verdict: " | 475 switch (response.verdict()) { |
501 << response.verdict(); | 476 case ClientDownloadResponse::SAFE: |
502 reason = REASON_INVALID_RESPONSE_VERDICT; | 477 reason = REASON_DOWNLOAD_SAFE; |
503 result = UNKNOWN; | 478 result = SAFE; |
479 break; | |
480 case ClientDownloadResponse::DANGEROUS: | |
481 reason = REASON_DOWNLOAD_DANGEROUS; | |
482 result = DANGEROUS; | |
483 token = response.token(); | |
484 break; | |
485 case ClientDownloadResponse::UNCOMMON: | |
486 reason = REASON_DOWNLOAD_UNCOMMON; | |
487 result = UNCOMMON; | |
488 token = response.token(); | |
489 break; | |
490 case ClientDownloadResponse::DANGEROUS_HOST: | |
491 reason = REASON_DOWNLOAD_DANGEROUS_HOST; | |
492 result = DANGEROUS_HOST; | |
493 token = response.token(); | |
494 break; | |
495 case ClientDownloadResponse::POTENTIALLY_UNWANTED: | |
496 reason = REASON_DOWNLOAD_POTENTIALLY_UNWANTED; | |
497 result = POTENTIALLY_UNWANTED; | |
498 token = response.token(); | |
499 break; | |
500 case ClientDownloadResponse::UNKNOWN: | |
501 reason = REASON_VERDICT_UNKNOWN; | |
502 result = UNKNOWN; | |
503 break; | |
504 default: | |
asanka
2016/07/07 20:46:59
Nit: Shall we go the route of eliminating the defa
Nathan Parker
2016/07/07 21:02:55
I don't think it'd fail to parse... hence I'm catc
asanka
2016/07/07 21:15:11
Ah. TIL. Acknowledged.
Nathan Parker
2016/07/11 20:26:22
Apparently I was wrong. The old code apparently c
| |
505 LOG(DFATAL) << "Unknown download response verdict: " | |
506 << response.verdict(); | |
507 reason = REASON_INVALID_RESPONSE_VERDICT; | |
508 result = UNKNOWN; | |
509 } | |
504 } | 510 } |
511 | |
505 if (!token.empty()) | 512 if (!token.empty()) |
506 SetDownloadPingToken(item_, token); | 513 SetDownloadPingToken(item_, token); |
507 | 514 |
508 DownloadFeedbackService::MaybeStorePingsForDownload( | 515 DownloadFeedbackService::MaybeStorePingsForDownload( |
509 result, item_, client_download_request_data_, data); | 516 result, item_, client_download_request_data_, data); |
510 } | 517 } |
511 // We don't need the fetcher anymore. | 518 // We don't need the fetcher anymore. |
512 fetcher_.reset(); | 519 fetcher_.reset(); |
513 UMA_HISTOGRAM_TIMES("SBClientDownload.DownloadRequestDuration", | 520 UMA_HISTOGRAM_TIMES("SBClientDownload.DownloadRequestDuration", |
514 base::TimeTicks::Now() - start_time_); | 521 base::TimeTicks::Now() - start_time_); |
(...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1387 case ClientDownloadResponse::SAFE: | 1394 case ClientDownloadResponse::SAFE: |
1388 return SAFE; | 1395 return SAFE; |
1389 case ClientDownloadResponse::UNCOMMON: | 1396 case ClientDownloadResponse::UNCOMMON: |
1390 return UNCOMMON; | 1397 return UNCOMMON; |
1391 case ClientDownloadResponse::POTENTIALLY_UNWANTED: | 1398 case ClientDownloadResponse::POTENTIALLY_UNWANTED: |
1392 return POTENTIALLY_UNWANTED; | 1399 return POTENTIALLY_UNWANTED; |
1393 case ClientDownloadResponse::DANGEROUS: | 1400 case ClientDownloadResponse::DANGEROUS: |
1394 return DANGEROUS; | 1401 return DANGEROUS; |
1395 case ClientDownloadResponse::DANGEROUS_HOST: | 1402 case ClientDownloadResponse::DANGEROUS_HOST: |
1396 return DANGEROUS_HOST; | 1403 return DANGEROUS_HOST; |
1404 case ClientDownloadResponse::UNKNOWN: | |
1405 return UNKNOWN; | |
1397 } | 1406 } |
1398 return UNKNOWN; | 1407 return UNKNOWN; |
1399 } | 1408 } |
1400 | 1409 |
1401 // Given a |default_file_path| and a list of |alternate_extensions|, | 1410 // Given a |default_file_path| and a list of |alternate_extensions|, |
1402 // constructs a FilePath with each possible extension and returns one that | 1411 // constructs a FilePath with each possible extension and returns one that |
1403 // satisfies IsCheckedBinaryFile(). If none are supported, returns an | 1412 // satisfies IsCheckedBinaryFile(). If none are supported, returns an |
1404 // empty FilePath. | 1413 // empty FilePath. |
1405 static base::FilePath GetSupportedFilePath( | 1414 static base::FilePath GetSupportedFilePath( |
1406 const base::FilePath& default_file_path, | 1415 const base::FilePath& default_file_path, |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1718 GURL DownloadProtectionService::GetDownloadRequestUrl() { | 1727 GURL DownloadProtectionService::GetDownloadRequestUrl() { |
1719 GURL url(kDownloadRequestUrl); | 1728 GURL url(kDownloadRequestUrl); |
1720 std::string api_key = google_apis::GetAPIKey(); | 1729 std::string api_key = google_apis::GetAPIKey(); |
1721 if (!api_key.empty()) | 1730 if (!api_key.empty()) |
1722 url = url.Resolve("?key=" + net::EscapeQueryParamValue(api_key, true)); | 1731 url = url.Resolve("?key=" + net::EscapeQueryParamValue(api_key, true)); |
1723 | 1732 |
1724 return url; | 1733 return url; |
1725 } | 1734 } |
1726 | 1735 |
1727 } // namespace safe_browsing | 1736 } // namespace safe_browsing |
OLD | NEW |