From 44903a3b55b4343f26de7cc4c60a2723e3131793 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Fri, 29 Jun 2012 09:09:56 -0700 Subject: Styles Controller Patch to ignore unfound rules from getMatchedCSSRules --- js/controllers/styles-controller.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 0f847653..2282794c 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -629,7 +629,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { if(!rule) { ///// This should never be hit if providing cssText from existing rule (like those ///// returned from getMatchedCSSRules() - console.warn('StylesController::_getRuleWithCSSText - No rule found with given cssText.'); + //console.warn('StylesController::_getRuleWithCSSText - No rule found with given cssText.'); } return rule; @@ -653,6 +653,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { }, this); rules = mappedRules.filter(function(rule) { + if(!rule) { return false; } + //// useStageStyleSheet flag indicates whether to only return rules from the stylesheet, //// or only use rules for other stylesheets -- cgit v1.2.3 From ae9a947b7019a57d399823142775c6b61ee69546 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Fri, 29 Jun 2012 11:49:11 -0700 Subject: Styles controller - adding check for attached element in getMatchedCSSRules --- js/controllers/styles-controller.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 2282794c..64efdb19 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -629,7 +629,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { if(!rule) { ///// This should never be hit if providing cssText from existing rule (like those ///// returned from getMatchedCSSRules() - //console.warn('StylesController::_getRuleWithCSSText - No rule found with given cssText.'); + console.warn('StylesController::_getRuleWithCSSText - No rule found with given cssText.'); } return rule; @@ -647,6 +647,10 @@ var stylesController = exports.StylesController = Montage.create(Component, { doc = element.ownerDocument, win = doc.defaultView; + if(!element.parentNode) { + console.warn('StylesController::getMatchingRules - Un-attached element queried'); + } + try { mappedRules = nj.toArray(win.getMatchedCSSRules(element)).map(function(rule) { return this._getRuleWithCSSText(rule.cssText, doc); @@ -675,7 +679,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { }, this); } catch(ERROR) { - console.warn('StylesController::getMatchingRules - Un-attached element queried.'); + console.warn('StylesController::getMatchingRules - getMatchedCSSRules Exception.'); } ///// Function for sorting by specificity values function sorter(ruleA, ruleB) { -- cgit v1.2.3 From 4db51449c829f34c1875e7c5ec91343c511da729 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Fri, 29 Jun 2012 11:51:46 -0700 Subject: Styles Controller - getMatchingRules - Add forgotten return statement --- js/controllers/styles-controller.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 64efdb19..aca86ec5 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -649,6 +649,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { if(!element.parentNode) { console.warn('StylesController::getMatchingRules - Un-attached element queried'); + return []; } try { -- cgit v1.2.3 From 06ac6fcdde5b1f9a00e4c966ce165af0a4c3c1da Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Fri, 29 Jun 2012 12:25:50 -0700 Subject: Null check on results from getMatchedCSSRules --- js/controllers/styles-controller.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index aca86ec5..39deeaa8 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -643,6 +643,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { getMatchingRules : { //TODO: Remove omitPseudos from here and usages value: function(element, omitPseudos, useStageStyleSheet) { var rules, + matchedRules, mappedRules, doc = element.ownerDocument, win = doc.defaultView; @@ -653,7 +654,14 @@ var stylesController = exports.StylesController = Montage.create(Component, { } try { - mappedRules = nj.toArray(win.getMatchedCSSRules(element)).map(function(rule) { + matchedRules = win.getMatchedCSSRules(element); + + if(!matchedRules) { + console.warn('StylesController::getMatchingRules - matched rules are null'); + return []; + } + + mappedRules = nj.toArray(matchedRules).map(function(rule) { return this._getRuleWithCSSText(rule.cssText, doc); }, this); -- cgit v1.2.3 From 25890906f10e4530f0245632d028a646ece563c1 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Fri, 29 Jun 2012 14:31:19 -0700 Subject: Another null check on results from getMatchedCSSRules --- js/controllers/styles-controller.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 39deeaa8..b50f43cc 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -629,7 +629,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { if(!rule) { ///// This should never be hit if providing cssText from existing rule (like those ///// returned from getMatchedCSSRules() - console.warn('StylesController::_getRuleWithCSSText - No rule found with given cssText.'); + //console.warn('StylesController::_getRuleWithCSSText - No rule found with given cssText.'); } return rule; @@ -649,7 +649,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { win = doc.defaultView; if(!element.parentNode) { - console.warn('StylesController::getMatchingRules - Un-attached element queried'); + //console.warn('StylesController::getMatchingRules - Un-attached element queried'); return []; } @@ -657,7 +657,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { matchedRules = win.getMatchedCSSRules(element); if(!matchedRules) { - console.warn('StylesController::getMatchingRules - matched rules are null'); + //console.warn('StylesController::getMatchingRules - matched rules are null'); return []; } @@ -688,7 +688,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { }, this); } catch(ERROR) { - console.warn('StylesController::getMatchingRules - getMatchedCSSRules Exception.'); + //console.warn('StylesController::getMatchingRules - getMatchedCSSRules Exception.'); + return []; } ///// Function for sorting by specificity values function sorter(ruleA, ruleB) { -- cgit v1.2.3