Bug 1852740: add tests for the `fetchpriority` attribute in Link headers. r=necko...
[gecko.git] / dom / chrome-webidl / MatchPattern.webidl
blobb17a15f3ea82ffc0b34354d5fd2b7ff28142a61e
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 interface Cookie;
6 interface URI;
8 /**
9  * A URL match pattern as used by the WebExtension and Chrome extension APIs.
10  *
11  * A match pattern is a string with one of the following formats:
12  *
13  *  - "<all_urls>"
14  *    The literal string "<all_urls>" matches any URL with a supported
15  *    protocol.
16  *
17  *  - <proto>://<host>/<path>
18  *    A URL pattern with the following placeholders:
19  *
20  *    - <proto>
21  *      The protocol to match, or "*" to match either "http" or "https".
22  *    - <host>
23  *      The hostname to match. May be either a complete, literal hostname to
24  *      match a specific host, the wildcard character "*", to match any host,
25  *      or a subdomain pattern, with "*." followed by a domain name, to match
26  *      that domain name or any subdomain thereof.
27  *    - <path>
28  *      A glob pattern for paths to match. A "*" may appear anywhere within
29  *      the path, and will match any string of characters. If no "*" appears,
30  *      the URL path must exactly match the pattern path.
31  */
32 [ChromeOnly, Exposed=Window]
33 interface MatchPattern {
34   [Throws]
35   constructor(DOMString pattern, optional MatchPatternOptions options = {});
37   /**
38    * Returns true if the given URI matches the pattern.
39    *
40    * If explicit is true, only explicit domain matches, without wildcards, are
41    * considered.
42    */
43   [Throws]
44   boolean matches(URI uri, optional boolean explicit = false);
46   [Throws]
47   boolean matches(DOMString url, optional boolean explicit = false);
49   /**
50    * Returns true if a URL exists which a) would be able to access the given
51    * cookie, and b) would be matched by this match pattern.
52    */
53   boolean matchesCookie(Cookie cookie);
55   /**
56    * Returns true if this pattern will match any host which would be matched
57    * by the given pattern.
58    */
59   boolean subsumes(MatchPattern pattern);
61   /**
62    * Returns true if this pattern will match any host which would be matched
63    * by the given pattern, ignoring the scheme.
64    */
65   boolean subsumesDomain(MatchPattern pattern);
67   /**
68    * Returns true if there is any host which would be matched by both this
69    * pattern and the given pattern.
70    */
71   boolean overlaps(MatchPattern pattern);
73   /**
74    * The match pattern string represented by this pattern.
75    */
76   [Constant]
77   readonly attribute DOMString pattern;
79   /**
80    * Whether the match pattern matches all http(s) URLs.
81    */
82   [Constant]
83   readonly attribute boolean matchesAllWebUrls;
86 /**
87  * A set of MatchPattern objects, which implements the MatchPattern API and
88  * matches when any of its sub-patterns matches.
89  */
90 [ChromeOnly, Exposed=Window]
91 interface MatchPatternSet {
92   [Throws]
93   constructor(sequence<(DOMString or MatchPattern)> patterns, optional MatchPatternOptions options = {});
95   /**
96    * Returns true if the given URI matches any sub-pattern.
97    *
98    * If explicit is true, only explicit domain matches, without wildcards, are
99    * considered.
100    */
101   [Throws]
102   boolean matches(URI uri, optional boolean explicit = false);
104   [Throws]
105   boolean matches(DOMString url, optional boolean explicit = false);
107   /**
108    * Returns true if any sub-pattern matches the given cookie.
109    */
110   boolean matchesCookie(Cookie cookie);
112   /**
113    * Returns true if any sub-pattern subsumes the given pattern.
114    */
115   boolean subsumes(MatchPattern pattern);
117   /**
118    * Returns true if any sub-pattern subsumes the given pattern,
119    * ignoring any of the schemes in the patterns.
120    */
121   boolean subsumesDomain(MatchPattern pattern);
123   /**
124    * Returns true if any sub-pattern overlaps the given pattern.
125    */
126   boolean overlaps(MatchPattern pattern);
128   /**
129    * Returns true if any sub-pattern overlaps any sub-pattern the given
130    * pattern set.
131    */
132   boolean overlaps(MatchPatternSet patternSet);
134   /**
135    * Returns true if any sub-pattern overlaps *every* sub-pattern in the given
136    * pattern set.
137    */
138   boolean overlapsAll(MatchPatternSet patternSet);
140   [Cached, Constant, Frozen]
141   readonly attribute sequence<MatchPattern> patterns;
143   /**
144    * Whether all http(s) URLs are matched by any of the sub-patterns.
145    */
146   [Constant]
147   readonly attribute boolean matchesAllWebUrls;
150 dictionary MatchPatternOptions {
151   /**
152    * If true, the path portion of the pattern is ignored, and replaced with a
153    * wildcard. The `pattern` property is updated to reflect this.
154    */
155   boolean ignorePath = false;
157   /**
158    * If true, the set of schemes this pattern can match is restricted to
159    * those accessible by WebExtensions.
160    */
161   boolean restrictSchemes = true;