aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/contentscript-end.js
diff options
context:
space:
mode:
authorgorhill <rhill@raymondhill.net>2015-09-11 17:59:25 -0400
committergorhill <rhill@raymondhill.net>2015-09-11 17:59:25 -0400
commit59bdcbdb7e8ac788ed07c909606b7f9b31be1500 (patch)
tree9347cd2cbfc37b3d4a8a0ee1d5c645f49457f80d /src/js/contentscript-end.js
parent032becfd76f43c2c25fe18df6c85044ccccb5c6b (diff)
downloaduBlock-59bdcbdb7e8ac788ed07c909606b7f9b31be1500.zip
uBlock-59bdcbdb7e8ac788ed07c909606b7f9b31be1500.tar.gz
uBlock-59bdcbdb7e8ac788ed07c909606b7f9b31be1500.tar.bz2
code reviewed implementation of high-medium generic cosmetic filters
Diffstat (limited to 'src/js/contentscript-end.js')
-rw-r--r--src/js/contentscript-end.js22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/js/contentscript-end.js b/src/js/contentscript-end.js
index c12ff7b..b4cd920 100644
--- a/src/js/contentscript-end.js
+++ b/src/js/contentscript-end.js
@@ -577,19 +577,39 @@ var uBlockCollapser = (function() {
var nodeList = selectNodes('a[href^="http"]');
var iNode = nodeList.length;
var node, href, pos, hash, selectors, selector, iSelector;
+
while ( iNode-- ) {
node = nodeList[iNode];
href = node.getAttribute('href');
if ( !href ) { continue; }
+
pos = href.indexOf('://');
if ( pos === -1 ) { continue; }
+
hash = href.slice(pos + 3, pos + 11);
selectors = generics[hash];
if ( selectors === undefined ) { continue; }
+
+ // A string.
+ if ( typeof selectors === 'string' ) {
+ if (
+ href.lastIndexOf(selectors.slice(8, -2), 0) === 0 &&
+ injectedSelectors.hasOwnProperty(selectors) === false
+ ) {
+ injectedSelectors[selectors] = true;
+ out.push(selectors);
+ }
+ continue;
+ }
+
+ // An array of strings.
iSelector = selectors.length;
while ( iSelector-- ) {
selector = selectors[iSelector];
- if ( injectedSelectors.hasOwnProperty(selector) === false ) {
+ if (
+ href.lastIndexOf(selector.slice(8, -2), 0) === 0 &&
+ injectedSelectors.hasOwnProperty(selector) === false
+ ) {
injectedSelectors[selector] = true;
out.push(selector);
}