| Index: background.js | 
| =================================================================== | 
| --- a/background.js | 
| +++ b/background.js | 
| @@ -30,8 +30,7 @@ | 
| } | 
| with(require("whitelisting")) | 
| { | 
| -  this.isPageWhitelisted = isPageWhitelisted; | 
| -  this.isFrameWhitelisted = isFrameWhitelisted; | 
| +  this.checkWhitelisted = checkWhitelisted; | 
| this.processKey = processKey; | 
| this.getKey = getKey; | 
| } | 
| @@ -53,6 +52,7 @@ | 
| var updateIcon = require("icon").updateIcon; | 
| var initNotifications = require("notificationHelper").initNotifications; | 
| var showNextNotificationForUrl = require("notificationHelper").showNextNotificationForUrl; | 
| +var devtools = require("devtools"); | 
|  | 
| var seenDataCorruption = false; | 
| var filterlistsReinitialized = false; | 
| @@ -126,7 +126,7 @@ | 
| // Adds or removes browser action icon according to options. | 
| function refreshIconAndContextMenu(page) | 
| { | 
| -  var whitelisted = isPageWhitelisted(page); | 
| +  var whitelisted = !!checkWhitelisted(page); | 
| updateIcon(page, whitelisted); | 
|  | 
| // show or hide the context menu entry dependent on whether | 
| @@ -285,13 +285,15 @@ | 
| { | 
| case "get-selectors": | 
| var selectors = []; | 
| +      var trace = devtools && devtools.hasPanel(sender.page); | 
|  | 
| -      if (!isFrameWhitelisted(sender.page, sender.frame, | 
| -                              RegExpFilter.typeMap.DOCUMENT | RegExpFilter.typeMap.ELEMHIDE)) | 
| +      if (!checkWhitelisted(sender.page, sender.frame, | 
| +                            RegExpFilter.typeMap.DOCUMENT | | 
| +                            RegExpFilter.typeMap.ELEMHIDE)) | 
| { | 
| var noStyleRules = false; | 
| -        var specificOnly = isFrameWhitelisted(sender.page, sender.frame, | 
| -                                              RegExpFilter.typeMap.GENERICHIDE); | 
| +        var specificOnly = checkWhitelisted(sender.page, sender.frame, | 
| +                                            RegExpFilter.typeMap.GENERICHIDE); | 
| var host = extractHostFromFrame(sender.frame); | 
|  | 
| for (var i = 0; i < noStyleRulesHosts.length; i++) | 
| @@ -313,10 +315,10 @@ | 
| } | 
| } | 
|  | 
| -      sendResponse(selectors); | 
| +      sendResponse({selectors: selectors, trace: trace}); | 
| break; | 
| case "should-collapse": | 
| -      if (isFrameWhitelisted(sender.page, sender.frame, RegExpFilter.typeMap.DOCUMENT)) | 
| +      if (checkWhitelisted(sender.page, sender.frame)) | 
| { | 
| sendResponse(false); | 
| break; | 
| @@ -354,7 +356,7 @@ | 
| // The browser action popup asks us this. | 
| if(sender.page) | 
| { | 
| -        sendResponse({enabled: !isPageWhitelisted(sender.page)}); | 
| +        sendResponse({enabled: !checkWhitelisted(sender.page)}); | 
| return; | 
| } | 
| break; | 
| @@ -393,6 +395,12 @@ | 
| frame: sender.frame | 
| })); | 
| break; | 
| +    case "trace-elemhide": | 
| +      devtools.logHiddenElements( | 
| +        sender.page, msg.selectors, | 
| +        extractHostFromFrame(sender.frame) | 
| +      ); | 
| +      break; | 
| case "forward": | 
| if (sender.page) | 
| { | 
|  |