// Copyright (c) 2012 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.

#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h"

namespace extensions {
namespace declarative_webrequest_constants {

// Signals to which WebRequestRulesRegistries are registered.
const char kOnRequest[] = "declarativeWebRequest.onRequest";
const char kOnMessage[] = "declarativeWebRequest.onMessage";

// Keys of dictionaries.
const char kAgeLowerBoundKey[] = "ageLowerBound";
const char kAgeUpperBoundKey[] = "ageUpperBound";
const char kCookieKey[] = "cookie";
const char kContentTypeKey[] = "contentType";
const char kDomainKey[] = "domain";
const char kExcludeContentTypeKey[] = "excludeContentType";
const char kExcludeRequestHeadersKey[] = "excludeRequestHeaders";
const char kExcludeResponseHeadersKey[] = "excludeResponseHeaders";
const char kExpiresKey[] = "expires";
const char kFilterKey[] ="filter";
const char kFirstPartyForCookiesUrlKey[] = "firstPartyForCookiesUrl";
const char kFromKey[] = "from";
const char kHttpOnlyKey[] = "httpOnly";
const char kHasTagKey[] = "hasTag";
const char kInstanceTypeKey[] = "instanceType";
const char kLowerPriorityThanKey[] = "lowerPriorityThan";
const char kMaxAgeKey[] = "maxAge";
const char kMessageKey[] = "message";
const char kModificationKey[] = "modification";
const char kNameContainsKey[] = "nameContains";
const char kNameEqualsKey[] = "nameEquals";
const char kNameKey[] = "name";
const char kNamePrefixKey[] = "namePrefix";
const char kNameSuffixKey[] = "nameSuffix";
const char kPathKey[] = "path";
const char kRedirectUrlKey[] = "redirectUrl";
const char kRequestHeadersKey[] = "requestHeaders";
const char kResourceTypeKey[] = "resourceType";
const char kResponseHeadersKey[] = "responseHeaders";
const char kSecureKey[] = "secure";
const char kSessionCookieKey[] = "sessionCookie";
const char kStagesKey[] = "stages";
const char kThirdPartyKey[] = "thirdPartyForCookies";
const char kToKey[] = "to";
const char kUrlKey[] = "url";
const char kValueContainsKey[] = "valueContains";
const char kValueEqualsKey[] = "valueEquals";
const char kValueKey[] = "value";
const char kValuePrefixKey[] = "valuePrefix";
const char kValueSuffixKey[] = "valueSuffix";

// Enum string values
const char kOnBeforeRequestEnum[] = "onBeforeRequest";
const char kOnBeforeSendHeadersEnum[] = "onBeforeSendHeaders";
const char kOnHeadersReceivedEnum[] = "onHeadersReceived";
const char kOnAuthRequiredEnum[] = "onAuthRequired";

// Values of dictionaries, in particular instance types
const char kAddRequestCookieType[] = "declarativeWebRequest.AddRequestCookie";
const char kAddResponseCookieType[] = "declarativeWebRequest.AddResponseCookie";
const char kAddResponseHeaderType[] = "declarativeWebRequest.AddResponseHeader";
const char kCancelRequestType[] = "declarativeWebRequest.CancelRequest";
const char kEditRequestCookieType[] = "declarativeWebRequest.EditRequestCookie";
const char kEditResponseCookieType[] =
    "declarativeWebRequest.EditResponseCookie";
const char kIgnoreRulesType[] = "declarativeWebRequest.IgnoreRules";
const char kRedirectRequestType[] = "declarativeWebRequest.RedirectRequest";
const char kRedirectByRegExType[] =
    "declarativeWebRequest.RedirectByRegEx";
const char kRedirectToEmptyDocumentType[] =
    "declarativeWebRequest.RedirectToEmptyDocument";
const char kRedirectToTransparentImageType[] =
    "declarativeWebRequest.RedirectToTransparentImage";
const char kRemoveRequestCookieType[] =
    "declarativeWebRequest.RemoveRequestCookie";
const char kRemoveRequestHeaderType[] =
    "declarativeWebRequest.RemoveRequestHeader";
const char kRemoveResponseCookieType[] =
    "declarativeWebRequest.RemoveResponseCookie";
const char kRemoveResponseHeaderType[] =
    "declarativeWebRequest.RemoveResponseHeader";
const char kRequestMatcherType[] = "declarativeWebRequest.RequestMatcher";
const char kSendMessageToExtensionType[] =
    "declarativeWebRequest.SendMessageToExtension";
const char kSetRequestHeaderType[] = "declarativeWebRequest.SetRequestHeader";

}  // namespace declarative_webrequest_constants
}  // namespace extensions
