// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file intentionally does not have header guards, it's included
// inside a macro to generate enum values.

// This file contains list of sdch-related problem codes.
// No error.
SDCH_PROBLEM_CODE(OK, 0)

// Content-encoding correction problems.
SDCH_PROBLEM_CODE(ADDED_CONTENT_ENCODING, 1)
SDCH_PROBLEM_CODE(FIXED_CONTENT_ENCODING, 2)
SDCH_PROBLEM_CODE(FIXED_CONTENT_ENCODINGS, 3)

// Content decoding errors.
SDCH_PROBLEM_CODE(DECODE_HEADER_ERROR, 4)
SDCH_PROBLEM_CODE(DECODE_BODY_ERROR, 5)

// More content-encoding correction problems.
SDCH_PROBLEM_CODE(OPTIONAL_GUNZIP_ENCODING_ADDED, 6)

// Content encoding correction when we're not even tagged as HTML!?!
SDCH_PROBLEM_CODE(BINARY_ADDED_CONTENT_ENCODING, 7)
SDCH_PROBLEM_CODE(BINARY_FIXED_CONTENT_ENCODING, 8)
SDCH_PROBLEM_CODE(BINARY_FIXED_CONTENT_ENCODINGS, 9)

// Dictionary selection for use problems.
SDCH_PROBLEM_CODE(DICTIONARY_FOUND_HAS_WRONG_DOMAIN, 10)
SDCH_PROBLEM_CODE(DICTIONARY_FOUND_HAS_WRONG_PORT_LIST, 11)
SDCH_PROBLEM_CODE(DICTIONARY_FOUND_HAS_WRONG_PATH, 12)
SDCH_PROBLEM_CODE(DICTIONARY_FOUND_HAS_WRONG_SCHEME, 13)
SDCH_PROBLEM_CODE(DICTIONARY_HASH_NOT_FOUND, 14)
SDCH_PROBLEM_CODE(DICTIONARY_HASH_MALFORMED, 15)
SDCH_PROBLEM_CODE(DICTIONARY_FOUND_EXPIRED, 16)

// Dictionary saving problems.
SDCH_PROBLEM_CODE(DICTIONARY_HAS_NO_HEADER, 20)
SDCH_PROBLEM_CODE(DICTIONARY_HEADER_LINE_MISSING_COLON, 21)
SDCH_PROBLEM_CODE(DICTIONARY_MISSING_DOMAIN_SPECIFIER, 22)
SDCH_PROBLEM_CODE(DICTIONARY_SPECIFIES_TOP_LEVEL_DOMAIN, 23)
SDCH_PROBLEM_CODE(DICTIONARY_DOMAIN_NOT_MATCHING_SOURCE_URL, 24)
SDCH_PROBLEM_CODE(DICTIONARY_PORT_NOT_MATCHING_SOURCE_URL, 25)
SDCH_PROBLEM_CODE(DICTIONARY_HAS_NO_TEXT, 26)
SDCH_PROBLEM_CODE(DICTIONARY_REFERER_URL_HAS_DOT_IN_PREFIX, 27)
SDCH_PROBLEM_CODE(DICTIONARY_UNSUPPORTED_VERSION, 28)

// Dictionary loading problems.
SDCH_PROBLEM_CODE(DICTIONARY_LOAD_ATTEMPT_FROM_DIFFERENT_HOST, 30)
SDCH_PROBLEM_CODE(DICTIONARY_SELECTED_FOR_SSL, 31)
SDCH_PROBLEM_CODE(DICTIONARY_ALREADY_LOADED, 32)
SDCH_PROBLEM_CODE(DICTIONARY_SELECTED_FROM_NON_HTTP, 33)
SDCH_PROBLEM_CODE(DICTIONARY_IS_TOO_LARGE, 34)
SDCH_PROBLEM_CODE(DICTIONARY_COUNT_EXCEEDED, 35)
// defunct = 36, // DICTIONARY_PREVIOUSLY_SCHEDULED_TO_DOWNLOAD used instead.
// defunct = 37, // DICTIONARY_PREVIOUSLY_SCHEDULED_TO_DOWNLOAD used instead.
SDCH_PROBLEM_CODE(DICTIONARY_FETCH_READ_FAILED, 38)
SDCH_PROBLEM_CODE(DICTIONARY_PREVIOUSLY_SCHEDULED_TO_DOWNLOAD, 39)

// Failsafe hack.
SDCH_PROBLEM_CODE(ATTEMPT_TO_DECODE_NON_HTTP_DATA, 40)

// Content-Encoding problems detected, with no action taken.
SDCH_PROBLEM_CODE(MULTIENCODING_FOR_NON_SDCH_REQUEST, 50)
SDCH_PROBLEM_CODE(SDCH_CONTENT_ENCODE_FOR_NON_SDCH_REQUEST, 51)

// Dictionary manager issues.
SDCH_PROBLEM_CODE(DOMAIN_BLACKLIST_INCLUDES_TARGET, 61)

// Problematic decode recovery methods.
// Dictionary not found.
SDCH_PROBLEM_CODE(META_REFRESH_RECOVERY, 70)
// defunct =  71, // Almost the same as META_REFRESH_UNSUPPORTED.
// defunct = 72,  // Almost the same as CACHED_META_REFRESH_UNSUPPORTED.
// defunct = 73,  // PASSING_THROUGH_NON_SDCH plus DISCARD_TENTATIVE_SDCH.
// Unrecoverable error.
SDCH_PROBLEM_CODE(META_REFRESH_UNSUPPORTED, 74)
// As above, but pulled from cache.
SDCH_PROBLEM_CODE(CACHED_META_REFRESH_UNSUPPORTED, 75)
// Tagged sdch but missing dictionary-hash.
SDCH_PROBLEM_CODE(PASSING_THROUGH_NON_SDCH, 76)
// Last window was not completely decoded.
SDCH_PROBLEM_CODE(INCOMPLETE_SDCH_CONTENT, 77)
// URL not found message passing through.
SDCH_PROBLEM_CODE(PASS_THROUGH_404_CODE, 78)

// This next report is very common, and not really an error scenario, but
// it exercises the error recovery logic.
// Back button got pre-SDCH cached content.
SDCH_PROBLEM_CODE(PASS_THROUGH_OLD_CACHED, 79)

// Common decoded recovery methods.
// Probably startup tab loading.
SDCH_PROBLEM_CODE(META_REFRESH_CACHED_RECOVERY, 80)
// defunct = 81, // Now tracked by ResponseCorruptionDetectionCause histo.

// Non SDCH problems, only accounted for to make stat counting complete
// (i.e., be able to be sure all dictionary advertisements are accounted
// for).
// Possible error in filter chaining.
SDCH_PROBLEM_CODE(UNFLUSHED_CONTENT, 90)
// defunct = 91,           // MISSING_TIME_STATS (Should never happen.)
// No timing stats recorded.
SDCH_PROBLEM_CODE(CACHE_DECODED, 92)
// defunct = 93,           // OVER_10_MINUTES (No timing stats recorded.)
// Filter never even got initialized.
SDCH_PROBLEM_CODE(UNINITIALIZED, 94)
// We hadn't even parsed a dictionary selector.
SDCH_PROBLEM_CODE(PRIOR_TO_DICTIONARY, 95)
// Something went wrong during decode.
SDCH_PROBLEM_CODE(DECODE_ERROR, 96)

// Problem during the latency test.
// SDCH now failing, but it worked before!
SDCH_PROBLEM_CODE(LATENCY_TEST_DISALLOWED, 100)

// General SDCH problems.
// SDCH is disabled.
SDCH_PROBLEM_CODE(DISABLED, 105)
// SDCH over https is disabled.
SDCH_PROBLEM_CODE(SECURE_SCHEME_NOT_SUPPORTED, 106)

// Used to bound histogram.
SDCH_PROBLEM_CODE(MAX_PROBLEM_CODE, 110)

// These values are not used in histograms.
