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