Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/contentPolicy.js

Issue 4559243822759936: Issue 431/432 - Remove special handling for the $sitekey option (Closed)
Patch Set: Created July 28, 2014, 2:44 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | lib/filterClasses.js » ('j') | lib/filterClasses.js » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/contentPolicy.js
===================================================================
--- a/lib/contentPolicy.js
+++ b/lib/contentPolicy.js
@@ -170,29 +170,9 @@
{
let testWndLocation = parentWndLocation;
parentWndLocation = (testWnd == testWnd.parent ? testWndLocation : getWindowLocation(testWnd.parent));
- match = Policy.isWhitelisted(testWndLocation, parentWndLocation);
- if (!(match instanceof WhitelistFilter))
- {
- let keydata = (testWnd.document && testWnd.document.documentElement ? testWnd.document.documentElement.getAttribute("data-adblockkey") : null);
- if (keydata && keydata.indexOf("_") >= 0)
- {
- let [key, signature] = keydata.split("_", 2);
- let keyMatch = defaultMatcher.matchesByKey(testWndLocation, key.replace(/=/g, ""), docDomain);
- if (keyMatch && Utils.crypto)
- {
- // Website specifies a key that we know but is the signature valid?
- let uri = Services.io.newURI(testWndLocation, null, null);
- let params = [
- uri.path.replace(/#.*/, ""), // REQUEST_URI
- uri.asciiHost, // HTTP_HOST
- Utils.httpProtocol.userAgent // HTTP_USER_AGENT
- ];
- if (Utils.verifySignature(key, signature, params.join("\0")))
- match = keyMatch;
- }
- }
- }
+ let siteKey = getSiteKey(node, testWnd);
+ match = Policy.isWhitelisted(testWndLocation, parentWndLocation, siteKey);
Wladimir Palant 2014/08/01 10:50:21 The logic here seems wrong to me. I've extended th
Thomas Greiner 2014/08/11 17:18:15 Done.
if (match instanceof WhitelistFilter)
{
@@ -260,7 +240,9 @@
if (!match && Prefs.enabled)
{
- match = defaultMatcher.matchesAny(locationText, Policy.typeDescr[contentType] || "", docDomain, thirdParty);
+ let docLocation = getWindowLocation(wnd);
+ let siteKey = getSiteKey(node, wnd);
+ match = defaultMatcher.matchesAny(locationText, Policy.typeDescr[contentType] || "", docDomain, thirdParty, docLocation, siteKey);
if (match instanceof BlockingFilter && node.ownerDocument && !(contentType in Policy.nonVisual))
{
let prefCollapse = (match.collapse != null ? match.collapse : !Prefs.fastcollapse);
@@ -297,10 +279,11 @@
/**
* Checks whether a page is whitelisted.
* @param {String} url
- * @param {String} [parentUrl] location of the parent page
+ * @param {String} parentUrl location of the parent page
+ * @param {String} siteKey public key provided on the page
* @return {Filter} filter that matched the URL or null if not whitelisted
*/
- isWhitelisted: function(url, parentUrl)
+ isWhitelisted: function(url, parentUrl, siteKey)
Wladimir Palant 2014/08/01 10:50:21 If you change the parameters here you probably wan
Thomas Greiner 2014/08/11 17:18:15 Done.
{
if (!url)
return null;
@@ -318,7 +301,7 @@
if (index >= 0)
url = url.substring(0, index);
- let result = defaultMatcher.matchesAny(url, "DOCUMENT", getHostname(parentUrl), false);
+ let result = defaultMatcher.matchesAny(url, "DOCUMENT", getHostname(parentUrl), false, parentUrl, siteKey);
return (result instanceof WhitelistFilter ? result : null);
},
@@ -691,6 +674,17 @@
}
/**
+ * Retrieves the sitekey of a window.
+ */
+function getSiteKey(node, wnd)
Wladimir Palant 2014/08/01 10:50:21 Why pass in node parameter that isn't used?
Thomas Greiner 2014/08/11 17:18:15 Done.
+{
+ if (wnd.document && wnd.document.documentElement)
+ return wnd.document.documentElement.getAttribute("data-adblockkey");
+
+ return null;
+}
+
+/**
* Retrieves the location of a window.
* @param wnd {nsIDOMWindow}
* @return {String} window location or null on failure
« no previous file with comments | « no previous file | lib/filterClasses.js » ('j') | lib/filterClasses.js » ('J')

Powered by Google App Engine
This is Rietveld