diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /toolkit/components/reputationservice/ApplicationReputationTelemetryUtils.cpp | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/reputationservice/ApplicationReputationTelemetryUtils.cpp')
-rw-r--r-- | toolkit/components/reputationservice/ApplicationReputationTelemetryUtils.cpp | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/toolkit/components/reputationservice/ApplicationReputationTelemetryUtils.cpp b/toolkit/components/reputationservice/ApplicationReputationTelemetryUtils.cpp new file mode 100644 index 0000000000..8487e866c5 --- /dev/null +++ b/toolkit/components/reputationservice/ApplicationReputationTelemetryUtils.cpp @@ -0,0 +1,195 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "ApplicationReputationTelemetryUtils.h" +#include "mozilla/Assertions.h" +#include "chrome/common/safe_browsing/csd.pb.h" + +using ServerLabel = mozilla::Telemetry::LABELS_APPLICATION_REPUTATION_SERVER_2; +using ServerVerdictLabel = + mozilla::Telemetry::LABELS_APPLICATION_REPUTATION_SERVER_VERDICT_2; + +struct NSErrorTelemetryResult { + nsresult mValue; + ServerLabel mLabel; +}; + +static const NSErrorTelemetryResult sResult[] = { + { + NS_ERROR_ALREADY_CONNECTED, + ServerLabel::ErrAlreadyConnected, + }, + { + NS_ERROR_NOT_CONNECTED, + ServerLabel::ErrNotConnected, + }, + { + NS_ERROR_CONNECTION_REFUSED, + ServerLabel::ErrConnectionRefused, + }, + { + NS_ERROR_NET_TIMEOUT, + ServerLabel::ErrNetTimeout, + }, + { + NS_ERROR_OFFLINE, + ServerLabel::ErrOffline, + }, + { + NS_ERROR_PORT_ACCESS_NOT_ALLOWED, + ServerLabel::ErrPortAccess, + }, + { + NS_ERROR_NET_RESET, + ServerLabel::ErrNetReset, + }, + { + NS_ERROR_NET_INTERRUPT, + ServerLabel::ErrNetInterrupt, + }, + { + NS_ERROR_PROXY_CONNECTION_REFUSED, + ServerLabel::ErrProxyConnection, + }, + { + NS_ERROR_NET_PARTIAL_TRANSFER, + ServerLabel::ErrNetPartial, + }, + { + NS_ERROR_NET_INADEQUATE_SECURITY, + ServerLabel::ErrNetInadequate, + }, + { + NS_ERROR_UNKNOWN_HOST, + ServerLabel::ErrUnknownHost, + }, + { + NS_ERROR_DNS_LOOKUP_QUEUE_FULL, + ServerLabel::ErrDNSLookupQueue, + }, + { + NS_ERROR_UNKNOWN_PROXY_HOST, + ServerLabel::ErrUnknownProxyHost, + }, +}; + +mozilla::Telemetry::LABELS_APPLICATION_REPUTATION_SERVER_2 NSErrorToLabel( + nsresult aRv) { + MOZ_ASSERT(aRv != NS_OK); + + for (const auto& p : sResult) { + if (p.mValue == aRv) { + return p.mLabel; + } + } + return ServerLabel::ErrOthers; +} + +mozilla::Telemetry::LABELS_APPLICATION_REPUTATION_SERVER_2 HTTPStatusToLabel( + uint32_t aStatus) { + MOZ_ASSERT(aStatus != 200); + + switch (aStatus) { + case 100: + case 101: + // Unexpected 1xx return code + return ServerLabel::HTTP1xx; + case 201: + case 202: + case 203: + case 205: + case 206: + // Unexpected 2xx return code + return ServerLabel::HTTP2xx; + case 204: + // No Content + return ServerLabel::HTTP204; + case 300: + case 301: + case 302: + case 303: + case 304: + case 305: + case 307: + case 308: + // Unexpected 3xx return code + return ServerLabel::HTTP3xx; + case 400: + // Bad Request - The HTTP request was not correctly formed. + // The client did not provide all required CGI parameters. + return ServerLabel::HTTP400; + case 401: + case 402: + case 405: + case 406: + case 407: + case 409: + case 410: + case 411: + case 412: + case 414: + case 415: + case 416: + case 417: + case 421: + case 426: + case 428: + case 429: + case 431: + case 451: + // Unexpected 4xx return code + return ServerLabel::HTTP4xx; + case 403: + // Forbidden - The client id is invalid. + return ServerLabel::HTTP403; + case 404: + // Not Found + return ServerLabel::HTTP404; + case 408: + // Request Timeout + return ServerLabel::HTTP408; + case 413: + // Request Entity Too Large + return ServerLabel::HTTP413; + case 500: + case 501: + case 510: + // Unexpected 5xx return code + return ServerLabel::HTTP5xx; + case 502: + case 504: + case 511: + // Local network errors, we'll ignore these. + return ServerLabel::HTTP502_504_511; + case 503: + // Service Unavailable - The server cannot handle the request. + // Clients MUST follow the backoff behavior specified in the + // Request Frequency section. + return ServerLabel::HTTP503; + case 505: + // HTTP Version Not Supported - The server CANNOT handle the requested + // protocol major version. + return ServerLabel::HTTP505; + default: + return ServerLabel::HTTPOthers; + } +} + +mozilla::Telemetry::LABELS_APPLICATION_REPUTATION_SERVER_VERDICT_2 +VerdictToLabel(uint32_t aVerdict) { + switch (aVerdict) { + case safe_browsing::ClientDownloadResponse::DANGEROUS: + return ServerVerdictLabel::Dangerous; + case safe_browsing::ClientDownloadResponse::DANGEROUS_HOST: + return ServerVerdictLabel::DangerousHost; + case safe_browsing::ClientDownloadResponse::POTENTIALLY_UNWANTED: + return ServerVerdictLabel::PotentiallyUnwanted; + case safe_browsing::ClientDownloadResponse::UNCOMMON: + return ServerVerdictLabel::Uncommon; + case safe_browsing::ClientDownloadResponse::UNKNOWN: + return ServerVerdictLabel::Unknown; + default: + return ServerVerdictLabel::Safe; + } +} |