summaryrefslogtreecommitdiffstats
path: root/devtools/server/actors/inspector/css-logic.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/actors/inspector/css-logic.js')
-rw-r--r--devtools/server/actors/inspector/css-logic.js33
1 files changed, 21 insertions, 12 deletions
diff --git a/devtools/server/actors/inspector/css-logic.js b/devtools/server/actors/inspector/css-logic.js
index 8ef0978915..0a602a55cc 100644
--- a/devtools/server/actors/inspector/css-logic.js
+++ b/devtools/server/actors/inspector/css-logic.js
@@ -253,19 +253,28 @@ class CssLogic {
if (cssSheet._passId != this._passId) {
cssSheet._passId = this._passId;
- // Find import and keyframes rules.
- for (const aDomRule of cssSheet.getCssRules()) {
- const ruleClassName = ChromeUtils.getClassName(aDomRule);
- if (
- ruleClassName === "CSSImportRule" &&
- aDomRule.styleSheet &&
- this.mediaMatches(aDomRule)
- ) {
- this._cacheSheet(aDomRule.styleSheet);
- } else if (ruleClassName === "CSSKeyframesRule") {
- this._keyframesRules.push(aDomRule);
+ // Find import and keyframes rules. We loop through all the stylesheet recursively,
+ // so we can go through nested rules.
+ const traverseRules = ruleList => {
+ for (const aDomRule of ruleList) {
+ const ruleClassName = ChromeUtils.getClassName(aDomRule);
+ if (
+ ruleClassName === "CSSImportRule" &&
+ aDomRule.styleSheet &&
+ this.mediaMatches(aDomRule)
+ ) {
+ this._cacheSheet(aDomRule.styleSheet);
+ } else if (ruleClassName === "CSSKeyframesRule") {
+ this._keyframesRules.push(aDomRule);
+ }
+
+ if (aDomRule.cssRules) {
+ traverseRules(aDomRule.cssRules);
+ }
}
- }
+ };
+
+ traverseRules(cssSheet.getCssRules());
}
}