diff --git a/src/messages/css.js b/src/messages/css.js index 78468c645f..f677883f54 100644 --- a/src/messages/css.js +++ b/src/messages/css.js @@ -11,5 +11,7 @@ export const CSS_SYNTAX_ERROR = { export const INVALID_SELECTOR_NESTING = { code: 'INVALID_SELECTOR_NESTING', message: i18n._('Invalid nesting of selectors found'), - description: i18n._(`Selectors should not be nested`), + description: i18n._( + `Selector nesting is supported from firefox version 117.0 and above` + ), }; diff --git a/src/rules/css/invalidNesting.js b/src/rules/css/invalidNesting.js index 9667249e8c..64c77461cf 100644 --- a/src/rules/css/invalidNesting.js +++ b/src/rules/css/invalidNesting.js @@ -1,10 +1,22 @@ import * as messages from 'messages'; +import { basicCompatVersionComparisonGEQ } from '../../utils'; + +const CSS_NESTING_MIN_VERSION = 117; + export function invalidNesting( cssNode, filename, - { startLine, startColumn } = {} + { startLine, startColumn, addonMetadata } = {} ) { + if ( + basicCompatVersionComparisonGEQ( + addonMetadata?.firefoxMinVersion, + CSS_NESTING_MIN_VERSION + ) + ) { + return []; + } const messageList = []; if (cssNode.type === 'rule') { for (let i = 0; i < cssNode.nodes.length; i++) { diff --git a/src/utils.js b/src/utils.js index 45c1d671b2..c93fa4ac2c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -415,11 +415,26 @@ export function androidStrictMinVersion(manifestJson) { return version; } +/** + * @param {*} versionAdded + * @param {number} minVersion + * @returns {boolean} true if versionAdded has a strictly greater major version than minVersion + */ export function basicCompatVersionComparison(versionAdded, minVersion) { const asNumber = parseInt(versionAdded, 10); return !Number.isNaN(asNumber) && asNumber > minVersion; } +/** + * @param {*} versionAdded + * @param {number} minVersion + * @returns {boolean} true if versionAdded has a greater or equal major version than minVersion + */ +export function basicCompatVersionComparisonGEQ(versionAdded, minVersion) { + const asNumber = parseInt(versionAdded, 10); + return !Number.isNaN(asNumber) && asNumber >= minVersion; +} + /** * @param {*} supportInfo - bcd support info of a feature * @returns {string|boolean} The first version number to support the feature