Index: lib/filterClasses.js |
=================================================================== |
--- a/lib/filterClasses.js |
+++ b/lib/filterClasses.js |
@@ -369,17 +369,17 @@ |
this._lastHit = value; |
FilterNotifier.triggerListeners("filter.lastHit", this, value, oldValue); |
} |
return this._lastHit; |
}, |
/** |
* String that the domains property should be generated from |
- * @type {string} |
+ * @type {?string} |
*/ |
domainSource: null, |
/** |
* Separator character used in domainSource property, must be |
* overridden by subclasses |
* @type {string} |
*/ |
@@ -466,23 +466,23 @@ |
} |
Object.defineProperty(this, "domains", {value: domains, enumerable: true}); |
return this.domains; |
}, |
/** |
* Array containing public keys of websites that this filter should apply to |
- * @type {string[]} |
+ * @type {?string[]} |
*/ |
sitekeys: null, |
/** |
* Checks whether this filter is active on a domain. |
- * @param {string} docDomain domain name of the document that loads the URL |
+ * @param {string} [docDomain] domain name of the document that loads the URL |
* @param {string} [sitekey] public key provided by the document |
* @return {boolean} true in case of the filter being active |
*/ |
isActiveOnDomain(docDomain, sitekey) |
{ |
// Sitekeys are case-sensitive so we shouldn't convert them to |
// upper-case to avoid false positives here. Instead we need to |
// change the way filter options are parsed. |
@@ -681,29 +681,28 @@ |
* Defines whether the filter should distinguish between lower and |
* upper case letters |
* @type {boolean} |
*/ |
matchCase: false, |
/** |
* Defines whether the filter should apply to third-party or |
* first-party content only. Can be null (apply to all content). |
- * @type {boolean} |
+ * @type {?boolean} |
*/ |
thirdParty: null, |
/** |
* String that the sitekey property should be generated from |
- * @type {string} |
+ * @type {?string} |
*/ |
sitekeySource: null, |
/** |
- * Array containing public keys of websites that this filter should apply to |
- * @type {string[]} |
+ * @see ActiveFilter.sitekeys |
Manish Jethani
2018/05/09 16:56:08
This may seem unrelated but I wanted to specify th
|
*/ |
get sitekeys() |
{ |
// Despite this property being cached, the getter is called |
// several times on Safari, due to WebKit bug 132872 |
let prop = Object.getOwnPropertyDescriptor(this, "sitekeys"); |
if (prop) |
return prop.value; |
@@ -721,20 +720,20 @@ |
); |
return this.sitekeys; |
}, |
/** |
* Tests whether the URL matches this filter |
* @param {string} location URL to be tested |
* @param {number} typeMask bitmask of content / request types to match |
- * @param {string} docDomain domain name of the document that loads the URL |
- * @param {boolean} thirdParty should be true if the URL is a third-party |
- * request |
- * @param {string} sitekey public key provided by the document |
+ * @param {string} [docDomain] domain name of the document that loads the URL |
+ * @param {boolean} [thirdParty] should be true if the URL is a third-party |
+ * request |
+ * @param {string} [sitekey] public key provided by the document |
* @return {boolean} true in case of a match |
*/ |
matches(location, typeMask, docDomain, thirdParty, sitekey) |
{ |
if (this.contentType & typeMask && |
(this.thirdParty == null || this.thirdParty == thirdParty) && |
this.isActiveOnDomain(docDomain, sitekey) && this.regexp.test(location)) |
{ |
@@ -880,22 +879,22 @@ |
RegExpFilter.typeMap.POPUP | |
RegExpFilter.typeMap.GENERICHIDE | |
RegExpFilter.typeMap.GENERICBLOCK); |
/** |
* Class for blocking filters |
* @param {string} text see Filter() |
* @param {string} regexpSource see RegExpFilter() |
- * @param {number} contentType see RegExpFilter() |
- * @param {boolean} matchCase see RegExpFilter() |
- * @param {string} domains see RegExpFilter() |
- * @param {boolean} thirdParty see RegExpFilter() |
- * @param {string} sitekeys see RegExpFilter() |
- * @param {boolean} collapse |
+ * @param {number} [contentType] see RegExpFilter() |
+ * @param {boolean} [matchCase] see RegExpFilter() |
+ * @param {string} [domains] see RegExpFilter() |
+ * @param {boolean} [thirdParty] see RegExpFilter() |
+ * @param {string} [sitekeys] see RegExpFilter() |
+ * @param {boolean} [collapse] |
* defines whether the filter should collapse blocked content, can be null |
* @param {string} [csp] |
* Content Security Policy to inject when the filter matches |
* @constructor |
* @augments RegExpFilter |
*/ |
function BlockingFilter(text, regexpSource, contentType, matchCase, domains, |
thirdParty, sitekeys, collapse, csp) |
@@ -909,36 +908,36 @@ |
exports.BlockingFilter = BlockingFilter; |
BlockingFilter.prototype = extend(RegExpFilter, { |
type: "blocking", |
/** |
* Defines whether the filter should collapse blocked content. |
* Can be null (use the global preference). |
- * @type {boolean} |
+ * @type {?boolean} |
*/ |
collapse: null, |
/** |
* Content Security Policy to inject for matching requests. |
- * @type {string} |
+ * @type {?string} |
*/ |
csp: null |
}); |
/** |
* Class for whitelist filters |
* @param {string} text see Filter() |
* @param {string} regexpSource see RegExpFilter() |
- * @param {number} contentType see RegExpFilter() |
- * @param {boolean} matchCase see RegExpFilter() |
- * @param {string} domains see RegExpFilter() |
- * @param {boolean} thirdParty see RegExpFilter() |
- * @param {string} sitekeys see RegExpFilter() |
+ * @param {number} [contentType] see RegExpFilter() |
+ * @param {boolean} [matchCase] see RegExpFilter() |
+ * @param {string} [domains] see RegExpFilter() |
+ * @param {boolean} [thirdParty] see RegExpFilter() |
+ * @param {string} [sitekeys] see RegExpFilter() |
* @constructor |
* @augments RegExpFilter |
*/ |
function WhitelistFilter(text, regexpSource, contentType, matchCase, domains, |
thirdParty, sitekeys) |
{ |
RegExpFilter.call(this, text, regexpSource, contentType, matchCase, domains, |
thirdParty, sitekeys); |
@@ -983,33 +982,33 @@ |
/** |
* @see ActiveFilter.ignoreTrailingDot |
*/ |
ignoreTrailingDot: false, |
/** |
* Host names or domains the filter should be restricted to (can be null for |
* no restriction) |
- * @type {string} |
+ * @type {?string} |
*/ |
selectorDomains: null, |
/** |
* CSS selector for the HTML elements that should be hidden |
* @type {string} |
Manish Jethani
2018/05/09 16:56:08
Note that selector will always be non-null.
kzar
2018/05/10 11:06:25
I guess this is technically incorrect for the abst
Manish Jethani
2018/05/11 03:20:57
So ElemHideBase is an abstract class, we don't cre
Manish Jethani
2018/05/11 03:26:52
By the way there's a @abstract tag in JSDoc [1], b
|
*/ |
selector: null |
}); |
/** |
* Creates an element hiding filter from a pre-parsed text representation |
* |
* @param {string} text same as in Filter() |
- * @param {string?} domains |
+ * @param {string} [domains] |
* domains part of the text representation |
- * @param {string?} type |
+ * @param {string} [type] |
* rule type, either empty or @ (exception) or ? (emulation rule) |
* @param {string} selector raw CSS selector |
* @return {ElemHideFilter|ElemHideException| |
* ElemHideEmulationFilter|InvalidFilter} |
*/ |
ElemHideBase.fromText = function(text, domains, type, selector) |
{ |
// We don't allow ElemHide filters which have any empty domains. |
@@ -1032,17 +1031,17 @@ |
} |
return new ElemHideFilter(text, domains, selector); |
}; |
/** |
* Class for element hiding filters |
* @param {string} text see Filter() |
- * @param {string} domains see ElemHideBase() |
+ * @param {string} [domains] see ElemHideBase() |
* @param {string} selector see ElemHideBase() |
* @constructor |
* @augments ElemHideBase |
*/ |
function ElemHideFilter(text, domains, selector) |
{ |
ElemHideBase.call(this, text, domains, selector); |
} |
@@ -1050,17 +1049,17 @@ |
ElemHideFilter.prototype = extend(ElemHideBase, { |
type: "elemhide" |
}); |
/** |
* Class for element hiding exceptions |
* @param {string} text see Filter() |
- * @param {string} domains see ElemHideBase() |
+ * @param {string} [domains] see ElemHideBase() |
* @param {string} selector see ElemHideBase() |
* @constructor |
* @augments ElemHideBase |
*/ |
function ElemHideException(text, domains, selector) |
{ |
ElemHideBase.call(this, text, domains, selector); |
} |