#ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_NET_REQUEST_CONSTANTS_H_
#define EXTENSIONS_BROWSER_API_DECLARATIVE_NET_REQUEST_CONSTANTS_H_
#include <cstddef>
#include <cstdint>
#include <string_view>
#include "base/containers/fixed_flat_map.h"
#include "extensions/common/api/declarative_net_request/constants.h"
namespace extensions::declarative_net_request {
enum class ParseResult {
NONE,
SUCCESS,
ERROR_REQUEST_METHOD_DUPLICATED,
ERROR_RESOURCE_TYPE_DUPLICATED,
ERROR_INVALID_RULE_ID,
ERROR_INVALID_RULE_PRIORITY,
ERROR_NO_APPLICABLE_RESOURCE_TYPES,
ERROR_EMPTY_DOMAINS_LIST,
ERROR_EMPTY_INITIATOR_DOMAINS_LIST,
ERROR_EMPTY_REQUEST_DOMAINS_LIST,
ERROR_EMPTY_TOP_DOMAINS_LIST,
ERROR_DOMAINS_AND_INITIATOR_DOMAINS_BOTH_SPECIFIED,
ERROR_EXCLUDED_DOMAINS_AND_EXCLUDED_INITIATOR_DOMAINS_BOTH_SPECIFIED,
ERROR_EMPTY_RESOURCE_TYPES_LIST,
ERROR_EMPTY_REQUEST_METHODS_LIST,
ERROR_EMPTY_URL_FILTER,
ERROR_INVALID_REDIRECT_URL,
ERROR_DUPLICATE_IDS,
ERROR_NON_ASCII_URL_FILTER,
ERROR_NON_ASCII_DOMAIN,
ERROR_NON_ASCII_EXCLUDED_DOMAIN,
ERROR_NON_ASCII_INITIATOR_DOMAIN,
ERROR_NON_ASCII_EXCLUDED_INITIATOR_DOMAIN,
ERROR_NON_ASCII_REQUEST_DOMAIN,
ERROR_NON_ASCII_EXCLUDED_REQUEST_DOMAIN,
ERROR_NON_ASCII_TOP_DOMAIN,
ERROR_NON_ASCII_EXCLUDED_TOP_DOMAIN,
ERROR_INVALID_URL_FILTER,
ERROR_INVALID_REDIRECT,
ERROR_INVALID_EXTENSION_PATH,
ERROR_INVALID_TRANSFORM_SCHEME,
ERROR_INVALID_TRANSFORM_PORT,
ERROR_INVALID_TRANSFORM_QUERY,
ERROR_INVALID_TRANSFORM_FRAGMENT,
ERROR_QUERY_AND_TRANSFORM_BOTH_SPECIFIED,
ERROR_JAVASCRIPT_REDIRECT,
ERROR_EMPTY_REGEX_FILTER,
ERROR_NON_ASCII_REGEX_FILTER,
ERROR_INVALID_REGEX_FILTER,
ERROR_REGEX_TOO_LARGE,
ERROR_MULTIPLE_FILTERS_SPECIFIED,
ERROR_REGEX_SUBSTITUTION_WITHOUT_FILTER,
ERROR_INVALID_REGEX_SUBSTITUTION,
ERROR_INVALID_ALLOW_ALL_REQUESTS_RESOURCE_TYPE,
ERROR_NO_HEADERS_TO_MODIFY_SPECIFIED,
ERROR_EMPTY_MODIFY_REQUEST_HEADERS_LIST,
ERROR_EMPTY_MODIFY_RESPONSE_HEADERS_LIST,
ERROR_INVALID_HEADER_TO_MODIFY_NAME,
ERROR_INVALID_HEADER_TO_MODIFY_VALUE,
ERROR_HEADER_VALUE_NOT_SPECIFIED,
ERROR_HEADER_VALUE_PRESENT,
ERROR_APPEND_INVALID_REQUEST_HEADER,
ERROR_EMPTY_TAB_IDS_LIST,
ERROR_TAB_IDS_ON_NON_SESSION_RULE,
ERROR_TAB_ID_DUPLICATED,
ERROR_EMPTY_RESPONSE_HEADER_MATCHING_LIST,
ERROR_EMPTY_EXCLUDED_RESPONSE_HEADER_MATCHING_LIST,
ERROR_INVALID_MATCHING_RESPONSE_HEADER_NAME,
ERROR_INVALID_MATCHING_EXCLUDED_RESPONSE_HEADER_NAME,
ERROR_INVALID_MATCHING_RESPONSE_HEADER_VALUE,
ERROR_MATCHING_RESPONSE_HEADER_DUPLICATED,
ERROR_RESPONSE_HEADER_RULE_CANNOT_MODIFY_REQUEST_HEADERS,
};
enum class UpdateDynamicRulesStatus {
kSuccess = 0,
kErrorReadJSONRules = 1,
kErrorRuleCountExceeded = 2,
kErrorInvalidRules = 6,
kErrorCreateDynamicRulesDirectory = 7,
kErrorCreateMatcher_InvalidPath = 10,
kErrorCreateMatcher_FileReadError = 11,
kErrorCreateMatcher_ChecksumMismatch = 12,
kErrorCreateMatcher_VersionMismatch = 13,
kErrorRegexTooLarge = 14,
kErrorRegexRuleCountExceeded = 15,
kErrorSerializeToJson = 16,
kErrorWriteJson = 17,
kErrorWriteFlatbuffer = 18,
kErrorUnsafeRuleCountExceeded = 19,
kMaxValue = kErrorUnsafeRuleCountExceeded,
};
enum class LoadRulesetResult {
kSuccess = 0,
kErrorInvalidPath = 1,
kErrorCannotReadFile = 2,
kErrorChecksumMismatch = 3,
kErrorVersionMismatch = 4,
kErrorChecksumNotFound = 5,
kMaxValue = kErrorChecksumNotFound,
};
enum class HostPermissionsAlwaysRequired {
kTrue,
kFalse,
};
enum class RulesetMatchingStage {
kOnBeforeRequest,
kOnHeadersReceived,
};
enum class LoadRulesetRequestSource {
kOnExtensionLoad = 0,
kUpdateEnabledStaticRulesets = 1,
kUpdateDynamicRules = 2,
};
#if BUILDFLAG(ARKWEB_ARKWEB_EXTENSIONS)
constexpr int ALLOWED_TRANSFORM_SCHEMES_NUMBER = 5;
#else
constexpr int ALLOWED_TRANSFORM_SCHEMES_NUMBER = 4;
#endif
extern const char* const
kAllowedTransformSchemes[ALLOWED_TRANSFORM_SCHEMES_NUMBER];
extern const char kErrorRequestMethodDuplicated[];
extern const char kErrorResourceTypeDuplicated[];
extern const char kErrorInvalidRuleKey[];
extern const char kErrorNoApplicableResourceTypes[];
extern const char kErrorEmptyList[];
extern const char kErrorEmptyKey[];
extern const char kErrorInvalidRedirectUrl[];
extern const char kErrorDuplicateIDs[];
extern const char kErrorPersisting[];
extern const char kErrorNonAscii[];
extern const char kErrorInvalidKey[];
extern const char kErrorInvalidTransformScheme[];
extern const char kErrorQueryAndTransformBothSpecified[];
extern const char kErrorDomainsAndInitiatorDomainsBothSpecified[];
extern const char kErrorJavascriptRedirect[];
extern const char kErrorMultipleFilters[];
extern const char kErrorRegexSubstitutionWithoutFilter[];
extern const char kErrorInvalidAllowAllRequestsResourceType[];
extern const char kErrorRegexTooLarge[];
extern const char kErrorNoHeaderListsSpecified[];
extern const char kErrorInvalidModifyHeaderName[];
extern const char kErrorInvalidModifyHeaderValue[];
extern const char kErrorNoHeaderValueSpecified[];
extern const char kErrorHeaderValuePresent[];
extern const char kErrorAppendInvalidRequestHeader[];
extern const char kErrorTabIdsOnNonSessionRule[];
extern const char kErrorTabIdDuplicated[];
extern const char kErrorInvalidMatchingHeaderName[];
extern const char kErrorInvalidMatchingHeaderValue[];
extern const char kErrorResponseHeaderDuplicated[];
extern const char kErrorResponseHeaderRuleCannotModifyRequestHeaders[];
extern const char kErrorListNotPassed[];
extern const char kRuleCountExceeded[];
extern const char kRegexRuleCountExceeded[];
extern const char kEnabledRuleCountExceeded[];
extern const char kEnabledRegexRuleCountExceeded[];
extern const char kRuleNotParsedWarning[];
extern const char kTooManyParseFailuresWarning[];
extern const char kIndexingRuleLimitExceeded[];
extern const char kInternalErrorUpdatingDynamicRules[];
extern const char kInternalErrorGettingDynamicRules[];
extern const char kDynamicRuleCountExceeded[];
extern const char kDynamicUnsafeRuleCountExceeded[];
extern const char kDynamicRegexRuleCountExceeded[];
extern const char kSessionRuleCountExceeded[];
extern const char kSessionUnsafeRuleCountExceeded[];
extern const char kSessionRegexRuleCountExceeded[];
extern const char kInvalidRulesetIDError[];
extern const char kEnabledRulesetsRuleCountExceeded[];
extern const char kEnabledRulesetsRegexRuleCountExceeded[];
extern const char kInternalErrorUpdatingEnabledRulesets[];
extern const char kEnabledRulesetCountExceeded[];
extern const char kDisabledStaticRuleCountExceeded[];
extern const char kTabNotFoundError[];
extern const char kIncrementActionCountWithoutUseAsBadgeTextError[];
extern const char kInvalidTestURLError[];
extern const char kInvalidTestInitiatorError[];
extern const char kInvalidTestTabIdError[];
extern const char kInvalidTestTopURLError[];
extern const char kInvalidResponseHeaderObjectError[];
extern const char kInvalidResponseHeaderNameError[];
extern const char kInvalidResponseHeaderValueError[];
extern const char kIndexAndPersistRulesTimeHistogram[];
extern const char kManifestEnabledRulesCountHistogram[];
extern const char kUpdateDynamicRulesStatusHistogram[];
extern const char kReadDynamicRulesJSONStatusHistogram[];
extern const char kIsLargeRegexHistogram[];
extern const char kRegexRuleSizeHistogram[];
extern const char kLoadRulesetResultHistogram[];
extern const char kActionCountPlaceholderBadgeText[];
extern const char kErrorGetMatchedRulesMissingPermissions[];
inline constexpr int kMaxStaticRulesPerProfile = 300000;
inline constexpr int kMaxDisabledStaticRules = 5000;
inline constexpr int kRegexMaxMemKb = 2;
extern const char kEmbedderConditionsBufferIdentifier[];
inline constexpr auto kDNRRequestHeaderAppendAllowList =
base::MakeFixedFlatMap<std::string_view, std::string_view>(
{{"accept", ", "},
{"accept-encoding", ", "},
{"accept-language", ", "},
{"access-control-request-headers", ", "},
{"cache-control", ", "},
{"connection", ", "},
{"content-language", ", "},
{"cookie", "; "},
{"forwarded", ", "},
{"if-match", ", "},
{"if-none-match", ", "},
{"keep-alive", ", "},
{"range", ", "},
{"te", ", "},
{"trailer", ""},
{"transfer-encoding", ", "},
{"upgrade", ", "},
{"user-agent", " "},
{"via", ", "},
{"want-digest", ", "},
{"x-forwarded-for", ", "}});
}
#endif