diff options
| -rw-r--r-- | ext/bg/js/profile-conditions.js | 22 | 
1 files changed, 21 insertions, 1 deletions
| diff --git a/ext/bg/js/profile-conditions.js b/ext/bg/js/profile-conditions.js index 5daa904e..8272e5dd 100644 --- a/ext/bg/js/profile-conditions.js +++ b/ext/bg/js/profile-conditions.js @@ -17,6 +17,26 @@   */ +function _profileConditionTestDomain(urlDomain, domain) { +    return ( +        urlDomain.endsWith(domain) && +        ( +            domain.length === urlDomain.length || +            urlDomain[urlDomain.length - domain.length - 1] === '.' +        ) +    ); +} + +function _profileConditionTestDomainList(url, domainList) { +    const urlDomain = new URL(url).hostname.toLowerCase(); +    for (const domain of domainList) { +        if (_profileConditionTestDomain(urlDomain, domain)) { +            return true; +        } +    } +    return false; +} +  const profileConditionsDescriptor = {      popupLevel: {          name: 'Popup Level', @@ -69,7 +89,7 @@ const profileConditionsDescriptor = {                  transform: (optionValue) => optionValue.split(/[,;\s]+/).map(v => v.trim().toLowerCase()).filter(v => v.length > 0),                  transformReverse: (transformedOptionValue) => transformedOptionValue.join(', '),                  validateTransformed: (transformedOptionValue) => (transformedOptionValue.length > 0), -                test: ({url}, transformedOptionValue) => (transformedOptionValue.indexOf(new URL(url).hostname.toLowerCase()) >= 0) +                test: ({url}, transformedOptionValue) => _profileConditionTestDomainList(url, transformedOptionValue)              },              matchRegExp: {                  name: 'Matches RegExp', |