| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 function CSSPropertyFilters(window, addSelectorsFunc) { |  | 
| 2   this.window = window; |  | 
| 3   this.addSelectorsFunc = addSelectorsFunc; |  | 
| 4 } |  | 
| 5 |  | 
| 6 CSSPropertyFilters.prototype = { |  | 
| 7   stringifyStyle: function(style) |  | 
| 8   { |  | 
| 9     var styles = []; |  | 
| 10     for (var i = 0; i < style.length; i++) |  | 
| 11     { |  | 
| 12       var property = style.item(i); |  | 
| 13       var value    = style.getPropertyValue(property); |  | 
| 14       var priority = style.getPropertyPriority(property); |  | 
| 15       styles.push(property + ": " + value + (priority ? " !" + priority : "") + 
    ";"); |  | 
| 16     } |  | 
| 17     styles.sort(); |  | 
| 18     return styles.join(" "); |  | 
| 19   }, |  | 
| 20 |  | 
| 21   findSelectors: function(stylesheet, selectors) |  | 
| 22   { |  | 
| 23     var rules = stylesheet.cssRules; |  | 
| 24     if (!rules) |  | 
| 25       return; |  | 
| 26 |  | 
| 27     for (var i = 0; i < rules.length; i++) |  | 
| 28     { |  | 
| 29       var rule = rules[i]; |  | 
| 30       if (rule.type != this.window.CSSRule.STYLE_RULE) |  | 
| 31         continue; |  | 
| 32 |  | 
| 33       var style = this.stringifyStyle(rule.style); |  | 
| 34       for (var j = 0; j < this.patterns.length; j++) |  | 
| 35       { |  | 
| 36         var pattern = this.patterns[j]; |  | 
| 37         var regexp = pattern.regexp; |  | 
| 38 |  | 
| 39         if (typeof regexp == "string") |  | 
| 40           regexp = pattern.regexp = new RegExp(regexp); |  | 
| 41 |  | 
| 42         if (regexp.test(style)) |  | 
| 43           selectors.push(pattern.prefix + rule.selectorText + pattern.suffix); |  | 
| 44       } |  | 
| 45     } |  | 
| 46   }, |  | 
| 47 |  | 
| 48   addSelectors: function(stylesheets) |  | 
| 49   { |  | 
| 50     var selectors = []; |  | 
| 51     for (var i = 0; i < stylesheets.length; i++) |  | 
| 52       this.findSelectors(stylesheets[i], selectors); |  | 
| 53     this.addSelectorsFunc(selectors); |  | 
| 54   }, |  | 
| 55 |  | 
| 56   onLoad: function(event) |  | 
| 57   { |  | 
| 58     var stylesheet = event.target.sheet; |  | 
| 59     if (stylesheet) |  | 
| 60       this.addSelectors([stylesheet]); |  | 
| 61   }, |  | 
| 62 |  | 
| 63   load: function(callback) |  | 
| 64   { |  | 
| 65     ext.backgroundPage.sendMessage( |  | 
| 66       { |  | 
| 67         type: "filters.get", |  | 
| 68         what: "cssproperties" |  | 
| 69       }, |  | 
| 70       function(patterns) |  | 
| 71       { |  | 
| 72         this.patterns = patterns; |  | 
| 73         callback(); |  | 
| 74       }.bind(this) |  | 
| 75     ); |  | 
| 76   }, |  | 
| 77 |  | 
| 78   apply: function() |  | 
| 79   { |  | 
| 80     if (this.patterns.length > 0) |  | 
| 81     { |  | 
| 82       var document = this.window.document; |  | 
| 83       this.addSelectors(document.styleSheets); |  | 
| 84       document.addEventListener("load", this.onLoad.bind(this), true); |  | 
| 85     } |  | 
| 86   } |  | 
| 87 }; |  | 
| OLD | NEW | 
|---|