/* 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 "nsDocShellTelemetryUtils.h" namespace { struct LoadErrorTelemetryResult { nsresult mValue; nsLiteralCString mLabel; }; static const LoadErrorTelemetryResult sResult[] = { {NS_ERROR_UNKNOWN_PROTOCOL, "UNKNOWN_PROTOCOL"_ns}, {NS_ERROR_FILE_NOT_FOUND, "FILE_NOT_FOUND"_ns}, {NS_ERROR_FILE_ACCESS_DENIED, "FILE_ACCESS_DENIED"_ns}, {NS_ERROR_UNKNOWN_HOST, "UNKNOWN_HOST"_ns}, {NS_ERROR_CONNECTION_REFUSED, "CONNECTION_REFUSED"_ns}, {NS_ERROR_PROXY_BAD_GATEWAY, "PROXY_BAD_GATEWAY"_ns}, {NS_ERROR_NET_INTERRUPT, "NET_INTERRUPT"_ns}, {NS_ERROR_NET_TIMEOUT, "NET_TIMEOUT"_ns}, {NS_ERROR_PROXY_GATEWAY_TIMEOUT, "P_GATEWAY_TIMEOUT"_ns}, {NS_ERROR_CSP_FRAME_ANCESTOR_VIOLATION, "CSP_FRAME_ANCEST"_ns}, {NS_ERROR_CSP_FORM_ACTION_VIOLATION, "CSP_FORM_ACTION"_ns}, {NS_ERROR_XFO_VIOLATION, "XFO_VIOLATION"_ns}, {NS_ERROR_PHISHING_URI, "PHISHING_URI"_ns}, {NS_ERROR_MALWARE_URI, "MALWARE_URI"_ns}, {NS_ERROR_UNWANTED_URI, "UNWANTED_URI"_ns}, {NS_ERROR_HARMFUL_URI, "HARMFUL_URI"_ns}, {NS_ERROR_CONTENT_CRASHED, "CONTENT_CRASHED"_ns}, {NS_ERROR_FRAME_CRASHED, "FRAME_CRASHED"_ns}, {NS_ERROR_BUILDID_MISMATCH, "BUILDID_MISMATCH"_ns}, {NS_ERROR_NET_RESET, "NET_RESET"_ns}, {NS_ERROR_MALFORMED_URI, "MALFORMED_URI"_ns}, {NS_ERROR_REDIRECT_LOOP, "REDIRECT_LOOP"_ns}, {NS_ERROR_UNKNOWN_SOCKET_TYPE, "UNKNOWN_SOCKET"_ns}, {NS_ERROR_DOCUMENT_NOT_CACHED, "DOCUMENT_N_CACHED"_ns}, {NS_ERROR_OFFLINE, "OFFLINE"_ns}, {NS_ERROR_DOCUMENT_IS_PRINTMODE, "DOC_PRINTMODE"_ns}, {NS_ERROR_PORT_ACCESS_NOT_ALLOWED, "PORT_ACCESS"_ns}, {NS_ERROR_UNKNOWN_PROXY_HOST, "UNKNOWN_PROXY_HOST"_ns}, {NS_ERROR_PROXY_CONNECTION_REFUSED, "PROXY_CONNECTION"_ns}, {NS_ERROR_PROXY_FORBIDDEN, "PROXY_FORBIDDEN"_ns}, {NS_ERROR_PROXY_NOT_IMPLEMENTED, "P_NOT_IMPLEMENTED"_ns}, {NS_ERROR_PROXY_AUTHENTICATION_FAILED, "PROXY_AUTH"_ns}, {NS_ERROR_PROXY_TOO_MANY_REQUESTS, "PROXY_TOO_MANY"_ns}, {NS_ERROR_INVALID_CONTENT_ENCODING, "CONTENT_ENCODING"_ns}, {NS_ERROR_UNSAFE_CONTENT_TYPE, "UNSAFE_CONTENT"_ns}, {NS_ERROR_CORRUPTED_CONTENT, "CORRUPTED_CONTENT"_ns}, {NS_ERROR_INTERCEPTION_FAILED, "INTERCEPTION_FAIL"_ns}, {NS_ERROR_NET_INADEQUATE_SECURITY, "INADEQUATE_SEC"_ns}, {NS_ERROR_BLOCKED_BY_POLICY, "BLOCKED_BY_POLICY"_ns}, {NS_ERROR_NET_HTTP2_SENT_GOAWAY, "HTTP2_SENT_GOAWAY"_ns}, {NS_ERROR_NET_HTTP3_PROTOCOL_ERROR, "HTTP3_PROTOCOL"_ns}, {NS_BINDING_FAILED, "BINDING_FAILED"_ns}, }; } // anonymous namespace namespace mozilla { namespace dom { nsLiteralCString LoadErrorToTelemetryLabel(nsresult aRv) { MOZ_ASSERT(aRv != NS_OK); for (const auto& p : sResult) { if (p.mValue == aRv) { return p.mLabel; } } return "otherError"_ns; } } // namespace dom } // namespace mozilla