forked from mirrors/gecko-dev
		
	 1b74e11955
			
		
	
	
		1b74e11955
		
	
	
	
	
		
			
			MozReview-Commit-ID: 3ifQtdOTulE --HG-- extra : rebase_source : d9854fba4e2dcbb7310ca73fec3305ba32bbb7ae
		
			
				
	
	
		
			146 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
	
		
			3.3 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 "UrlClassifierTelemetryUtils.h"
 | |
| #include "mozilla/Assertions.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| namespace safebrowsing {
 | |
| 
 | |
| uint8_t
 | |
| NetworkErrorToBucket(nsresult rv)
 | |
| {
 | |
|   switch(rv) {
 | |
|   // Connection errors
 | |
|   case NS_ERROR_ALREADY_CONNECTED:        return 2;
 | |
|   case NS_ERROR_NOT_CONNECTED:            return 3;
 | |
|   case NS_ERROR_CONNECTION_REFUSED:       return 4;
 | |
|   case NS_ERROR_NET_TIMEOUT:              return 5;
 | |
|   case NS_ERROR_OFFLINE:                  return 6;
 | |
|   case NS_ERROR_PORT_ACCESS_NOT_ALLOWED:  return 7;
 | |
|   case NS_ERROR_NET_RESET:                return 8;
 | |
|   case NS_ERROR_NET_INTERRUPT:            return 9;
 | |
|   case NS_ERROR_PROXY_CONNECTION_REFUSED: return 10;
 | |
|   case NS_ERROR_NET_PARTIAL_TRANSFER:     return 11;
 | |
|   case NS_ERROR_NET_INADEQUATE_SECURITY:  return 12;
 | |
|   // DNS errors
 | |
|   case NS_ERROR_UNKNOWN_HOST:             return 13;
 | |
|   case NS_ERROR_DNS_LOOKUP_QUEUE_FULL:    return 14;
 | |
|   case NS_ERROR_UNKNOWN_PROXY_HOST:       return 15;
 | |
|   // Others
 | |
|   default:                                return 1;
 | |
|   }
 | |
| }
 | |
| 
 | |
| uint32_t
 | |
| HTTPStatusToBucket(uint32_t status)
 | |
| {
 | |
|   uint32_t statusBucket;
 | |
|   switch (status) {
 | |
|   case 100:
 | |
|   case 101:
 | |
|     // Unexpected 1xx return code
 | |
|     statusBucket = 0;
 | |
|     break;
 | |
|   case 200:
 | |
|     // OK - Data is available in the HTTP response body.
 | |
|     statusBucket = 1;
 | |
|     break;
 | |
|   case 201:
 | |
|   case 202:
 | |
|   case 203:
 | |
|   case 205:
 | |
|   case 206:
 | |
|     // Unexpected 2xx return code
 | |
|     statusBucket = 2;
 | |
|     break;
 | |
|   case 204:
 | |
|     // No Content
 | |
|     statusBucket = 3;
 | |
|     break;
 | |
|   case 300:
 | |
|   case 301:
 | |
|   case 302:
 | |
|   case 303:
 | |
|   case 304:
 | |
|   case 305:
 | |
|   case 307:
 | |
|   case 308:
 | |
|     // Unexpected 3xx return code
 | |
|     statusBucket = 4;
 | |
|     break;
 | |
|   case 400:
 | |
|     // Bad Request - The HTTP request was not correctly formed.
 | |
|     // The client did not provide all required CGI parameters.
 | |
|     statusBucket = 5;
 | |
|     break;
 | |
|   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
 | |
|     statusBucket = 6;
 | |
|     break;
 | |
|   case 403:
 | |
|     // Forbidden - The client id is invalid.
 | |
|     statusBucket = 7;
 | |
|     break;
 | |
|   case 404:
 | |
|     // Not Found
 | |
|     statusBucket = 8;
 | |
|     break;
 | |
|   case 408:
 | |
|     // Request Timeout
 | |
|     statusBucket = 9;
 | |
|     break;
 | |
|   case 413:
 | |
|     // Request Entity Too Large - Bug 1150334
 | |
|     statusBucket = 10;
 | |
|     break;
 | |
|   case 500:
 | |
|   case 501:
 | |
|   case 510:
 | |
|     // Unexpected 5xx return code
 | |
|     statusBucket = 11;
 | |
|     break;
 | |
|   case 502:
 | |
|   case 504:
 | |
|   case 511:
 | |
|     // Local network errors, we'll ignore these.
 | |
|     statusBucket = 12;
 | |
|     break;
 | |
|   case 503:
 | |
|     // Service Unavailable - The server cannot handle the request.
 | |
|     // Clients MUST follow the backoff behavior specified in the
 | |
|     // Request Frequency section.
 | |
|     statusBucket = 13;
 | |
|     break;
 | |
|   case 505:
 | |
|     // HTTP Version Not Supported - The server CANNOT handle the requested
 | |
|     // protocol major version.
 | |
|     statusBucket = 14;
 | |
|     break;
 | |
|   default:
 | |
|     statusBucket = 15;
 | |
|   };
 | |
|   return statusBucket;
 | |
| }
 | |
| 
 | |
| } // namespace safebrowsing
 | |
| } // namespace mozilla
 |