Index: messageResponder.js |
diff --git a/messageResponder.js b/messageResponder.js |
index a6886cbbe74380c6901224cc87b8d405de5a8da8..965e01401a8aeb0683554d6fb2bcf225b0f9823b 100644 |
--- a/messageResponder.js |
+++ b/messageResponder.js |
@@ -25,10 +25,12 @@ |
var FilterStorage = require("filterStorage").FilterStorage; |
var FilterNotifier = require("filterNotifier").FilterNotifier; |
var defaultMatcher = require("matcher").defaultMatcher; |
- |
+ var CSSRules = require("cssRules").CSSRules; |
+ |
var filterClasses = require("filterClasses"); |
var Filter = filterClasses.Filter; |
var BlockingFilter = filterClasses.BlockingFilter; |
+ var RegExpFilter = filterClasses.RegExpFilter; |
var Synchronizer = require("synchronizer").Synchronizer; |
var subscriptionClasses = require("subscriptionClasses"); |
@@ -194,13 +196,36 @@ |
callback(filter instanceof BlockingFilter); |
break; |
case "filters.get": |
+ if (message.what == "cssproperties") |
+ { |
+ var filters = []; |
+ var isFrameWhitelisted = require("whitelisting").isFrameWhitelisted; |
+ |
+ if (!isFrameWhitelisted(sender.page, sender.frame, |
+ RegExpFilter.typeMap.DOCUMENT | |
+ RegExpFilter.typeMap.ELEMHIDE)) |
+ { |
+ filters = CSSRules.getRulesForDomain(sender.frame.url.hostname); |
+ filters = filters.map(function(filter) |
+ { |
+ return { |
+ prefix: filter.selectorPrefix, |
+ suffix: filter.selectorSuffix, |
+ regexp: filter.regexpString |
+ }; |
+ }); |
+ } |
+ callback(filters); |
+ break; |
+ } |
+ |
var subscription = Subscription.fromURL(message.subscriptionUrl); |
if (!subscription) |
{ |
callback([]); |
break; |
} |
- |
+ |
callback(subscription.filters.map(convertFilter)); |
break; |
case "filters.importRaw": |