Index: background.js |
=================================================================== |
--- a/background.js |
+++ b/background.js |
@@ -27,6 +27,12 @@ |
this.Subscription = Subscription; |
this.DownloadableSubscription = DownloadableSubscription; |
} |
+with(require("whitelisting")) |
+{ |
+ this.isWhitelisted = isWhitelisted; |
+ this.isFrameWhitelisted = isFrameWhitelisted; |
+ this.processKeyException = processKeyException; |
+} |
var FilterStorage = require("filterStorage").FilterStorage; |
var ElemHide = require("elemHide").ElemHide; |
var defaultMatcher = require("matcher").defaultMatcher; |
@@ -90,24 +96,6 @@ |
// Upgrade options before we do anything else. |
setDefaultOptions(); |
-/** |
- * Checks whether a page is whitelisted. |
- * @param {String} url |
- * @param {String} [parentUrl] URL of the parent frame |
- * @param {String} [type] content type to be checked, default is "DOCUMENT" |
- * @return {Filter} filter that matched the URL or null if not whitelisted |
- */ |
-function isWhitelisted(url, parentUrl, type) |
-{ |
- // Ignore fragment identifier |
- var index = url.indexOf("#"); |
- if (index >= 0) |
- url = url.substring(0, index); |
- |
- var result = defaultMatcher.matchesAny(url, type || "DOCUMENT", extractHostFromURL(parentUrl || url), false); |
- return (result instanceof WhitelistFilter ? result : null); |
-} |
- |
var activeNotification = null; |
// Adds or removes browser action icon according to options. |
@@ -329,32 +317,18 @@ |
prepareNotificationIconAndPopup(); |
} |
-/** |
- * This function is a hack - we only know the tabId and document URL for a |
- * message but we need to know the frame ID. Try to find it in webRequest"s |
- * frame data. |
- */ |
-function getFrameId(tab, url) |
-{ |
- for (var frameId in frames.get(tab)) |
- if (getFrameUrl(tab, frameId) == url) |
- return frameId; |
- return -1; |
-} |
- |
ext.onMessage.addListener(function (msg, sender, sendResponse) |
{ |
switch (msg.type) |
{ |
case "get-selectors": |
var selectors = null; |
- var frameId = sender.tab ? getFrameId(sender.tab, msg.frameUrl) : -1; |
- if (!isFrameWhitelisted(sender.tab, frameId, "DOCUMENT") && |
- !isFrameWhitelisted(sender.tab, frameId, "ELEMHIDE")) |
+ if (!isFrameWhitelisted(sender.tab, sender.frame, "DOCUMENT") && |
+ !isFrameWhitelisted(sender.tab, sender.frame, "ELEMHIDE")) |
{ |
var noStyleRules = false; |
- var host = extractHostFromURL(msg.frameUrl); |
+ var host = extractHostFromURL(sender.frame.url); |
for (var i = 0; i < noStyleRulesHosts.length; i++) |
{ |
var noStyleHost = noStyleRulesHosts[i]; |
@@ -377,16 +351,14 @@ |
sendResponse(selectors); |
break; |
case "should-collapse": |
- var frameId = sender.tab ? getFrameId(sender.tab, msg.documentUrl) : -1; |
- |
- if (isFrameWhitelisted(sender.tab, frameId, "DOCUMENT")) |
+ if (isFrameWhitelisted(sender.tab, sender.frame, "DOCUMENT")) |
{ |
sendResponse(false); |
break; |
} |
var requestHost = extractHostFromURL(msg.url); |
- var documentHost = extractHostFromURL(msg.documentUrl); |
+ var documentHost = extractHostFromURL(sender.frame.url); |
var thirdParty = isThirdParty(requestHost, documentHost); |
var filter = defaultMatcher.matchesAny(msg.url, msg.mediatype, documentHost, thirdParty); |
if (filter instanceof BlockingFilter) |
@@ -421,6 +393,9 @@ |
tab.sendMessage(msg); |
}); |
break; |
+ case "add-key-exception": |
+ processKeyException(msg.token, sender.tab, sender.frame); |
+ break; |
case "forward": |
if (sender.tab) |
{ |