123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- // Copyright 2016 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.
- syntax = "proto2";
- option optimize_for = LITE_RUNTIME;
- package url_pattern_index.proto;
- option java_package = "org.chromium.components.url_pattern_index.proto";
- // The type of a subresource filtering rule.
- enum RuleType {
- RULE_TYPE_UNSPECIFIED = 0;
- RULE_TYPE_COMMENT = 1; // Comment rule.
- RULE_TYPE_URL = 2; // Network level filtering rule based on URL pattern.
- RULE_TYPE_CSS = 3; // Element hiding rule based on a CSS selector.
- };
- // The format of a URL pattern.
- enum UrlPatternType {
- URL_PATTERN_TYPE_UNSPECIFIED = 0;
- // A pattern without special characters, e.g. "example.com".
- URL_PATTERN_TYPE_SUBSTRING = 1;
- // The pattern contains one or more wildcards, namely '*' and/or '^'
- // characters. The '*' matches any sequence of characters, while the '^'
- // matches a separator, i.e. anything but a letter, a digit, or one of [-._%].
- URL_PATTERN_TYPE_WILDCARDED = 2;
- // The pattern is a regular expression.
- URL_PATTERN_TYPE_REGEXP = 3;
- };
- // Types of anchors that can be used to constrain where a URL pattern must
- // begin/end in the URL in order to be considered a match.
- enum AnchorType {
- ANCHOR_TYPE_UNSPECIFIED = 0;
- // Acts like a '*' wildcard at the respective end of a pattern.
- ANCHOR_TYPE_NONE = 1;
- // The pattern must match from the start/until the end of the URL.
- ANCHOR_TYPE_BOUNDARY = 2;
- // The pattern must match starting with the TLD+n of the URL's domain, but the
- // scheme and subdomains (if any) can be arbitrary.
- ANCHOR_TYPE_SUBDOMAIN = 3;
- };
- // The types of subresource requests that a URL rule should be applied to.
- // Note: Values are used as flags in a bitmask.
- enum ElementType {
- option allow_alias = true;
- ELEMENT_TYPE_UNSPECIFIED = 0;
- ELEMENT_TYPE_OTHER = 1;
- ELEMENT_TYPE_SCRIPT = 2;
- ELEMENT_TYPE_IMAGE = 4;
- ELEMENT_TYPE_STYLESHEET = 8;
- ELEMENT_TYPE_OBJECT = 16;
- ELEMENT_TYPE_XMLHTTPREQUEST = 32;
- ELEMENT_TYPE_OBJECT_SUBREQUEST = 64;
- ELEMENT_TYPE_SUBDOCUMENT = 128;
- ELEMENT_TYPE_PING = 256;
- ELEMENT_TYPE_MEDIA = 512;
- ELEMENT_TYPE_FONT = 1024;
- ELEMENT_TYPE_POPUP = 2048;
- ELEMENT_TYPE_WEBSOCKET = 4096;
- ELEMENT_TYPE_WEBTRANSPORT = 8192;
- ELEMENT_TYPE_WEBBUNDLE = 16384;
- // NOTE: Keep these two values consistent with the values above.
- ELEMENT_TYPE_MAX = 16384;
- ELEMENT_TYPE_ALL = 32767;
- };
- // The options controlling whether or not to activate filtering for subresources
- // of documents that match the URL pattern of the rule.
- // Note: Values are used as flags in a bitmask.
- enum ActivationType {
- option allow_alias = true;
- ACTIVATION_TYPE_UNSPECIFIED = 0;
- ACTIVATION_TYPE_DOCUMENT = 1; // Disable all rules on the page.
- ACTIVATION_TYPE_ELEMHIDE = 2; // Disable CSS rules on the page.
- ACTIVATION_TYPE_GENERICHIDE = 4; // Disable generic CSS rules on the page.
- ACTIVATION_TYPE_GENERICBLOCK = 8; // Disable generic URL rules on the page.
- // NOTE: Keep these two values consistent with the values above.
- ACTIVATION_TYPE_MAX = 8;
- ACTIVATION_TYPE_ALL = 15;
- };
- // The semantics of a rule. Defines how the rule relates to other rules and how
- // it influences the filtering decision.
- enum RuleSemantics {
- RULE_SEMANTICS_UNSPECIFIED = 0;
- // Matching subresource requests should be aborted, matching elements should
- // be hidden.
- RULE_SEMANTICS_BLOCKLIST = 1;
- // If the rule matches, it suppresses any matching RULE_SEMANTICS_BLOCKLIST
- // rule.
- RULE_SEMANTICS_ALLOWLIST = 2;
- }
- // The type of relation between the source of the requested subresource and that
- // of the document.
- enum SourceType {
- SOURCE_TYPE_UNSPECIFIED = 0;
- SOURCE_TYPE_ANY = 1; // Doesn't matter.
- SOURCE_TYPE_THIRD_PARTY = 2; // Requesting a trird-party resource.
- SOURCE_TYPE_FIRST_PARTY = 3; // Requesting a first-party resource.
- }
- // An item of the domain list.
- message DomainListItem {
- // The UTF-8 representation of the domain, e.g. "subdomain.example.com".
- optional string domain = 1;
- // Defines whether the domain is excluded from the set of domains.
- optional bool exclude = 2;
- }
- // A network level filtering rule based on a URL pattern. Corresponds to
- // RULE_TYPE_URL.
- message UrlRule {
- // The semantics of the rule.
- optional RuleSemantics semantics = 1;
- // Restricts application of the rule to first-party/third-party requests.
- optional SourceType source_type = 2;
- // Stores the ElementTypes that the rule applies to as a bitwise OR of the
- // corresponding ElementType values.
- optional int32 element_types = 3;
- // Stores the ActivationTypes associated with the rule as a bitwise OR of the
- // corresponding ActivationType values.
- optional int32 activation_types = 4;
- // The rule applies only to subresources of documents loaded from included
- // domains (or subdomains thereof). If the list is empty, the rule is applied
- // on documents from all domains.
- // If `initiator_domains` is empty or only contains exceptions, the rule is
- // called generic.
- // Otherwise is it called domain specific, i.e. applies to a limited number of
- // domains.
- repeated DomainListItem initiator_domains = 5;
- // The format of |url_pattern|.
- optional UrlPatternType url_pattern_type = 6;
- // Defines where the URL pattern must start in the URL in order to be
- // considered a match. Never used with REGEXP patterns.
- optional AnchorType anchor_left = 7;
- // Defines where the URL pattern must end in the URL in order to be
- // considered a match. Never used with REGEXP patterns. Never equals to
- // ANCHOR_TYPE_SUBDOMAIN.
- optional AnchorType anchor_right = 8;
- // When set, the rule applies only to URLs that match |url_pattern| in a
- // case-sensitive way.
- // Not currently implemented.
- optional bool match_case = 9 [deprecated = true];
- // The URL pattern of the format prescribed by |url_pattern_type|.
- optional string url_pattern = 10;
- // The rule applies only for requests to the included domains (or subdomains
- // thereof). If the list is empty, the rule applies to requests to all
- // domains.
- repeated DomainListItem request_domains = 11;
- }
- // Element hiding rule based on a CSS selector. Corresponds to RULE_TYPE_CSS.
- message CssRule {
- // The semantics of the rule.
- optional RuleSemantics semantics = 1;
- // The list of domains, same as UrlRule::domains.
- repeated DomainListItem domains = 2;
- // A CSS selector as specified in http://www.w3.org/TR/css3-selectors.
- optional string css_selector = 3;
- }
- // A comment line.
- message Comment {
- // Comment text.
- optional string text = 1;
- // For special key-value comments, if any.
- optional string key = 2;
- optional string value = 3;
- }
- // A container for lists of non-comment rules collated by RuleType.
- message FilteringRules {
- repeated UrlRule url_rules = 1;
- repeated CssRule css_rules = 2;
- }
|