@@ -31,7 +31,7 @@ var {FilterNotifier} = require("filterNotifier");
31
31
* Lookup table, filters by their associated key
32
32
* @type Object
33
33
*/
34
- var filterByKey = [ ] ;
34
+ var filterByKey = Object . create ( null ) ;
35
35
36
36
/**
37
37
* Lookup table, keys of the filters by filter text
@@ -47,7 +47,7 @@ var keyByFilter = Object.create(null);
47
47
var usingGetSelectorsForDomain = ! ( "nsIStyleSheetService" in Ci ) ;
48
48
49
49
/**
50
- * Nested lookup table, filter (or false if inactive) by filter text by domain.
50
+ * Nested lookup table, filter (or false if inactive) by filter key by domain.
51
51
* (Only contains filters that aren't unconditionally matched for all domains.)
52
52
* @type Object
53
53
*/
@@ -125,7 +125,7 @@ var ElemHide = exports.ElemHide =
125
125
*/
126
126
clear : function ( )
127
127
{
128
- filterByKey = [ ] ;
128
+ filterByKey = Object . create ( null ) ;
129
129
keyByFilter = Object . create ( null ) ;
130
130
filtersByDomain = Object . create ( null ) ;
131
131
filtersBySelector = Object . create ( null ) ;
@@ -192,7 +192,12 @@ var ElemHide = exports.ElemHide =
192
192
if ( filter . text in keyByFilter )
193
193
return ;
194
194
195
- let key = filterByKey . push ( filter ) - 1 ;
195
+ let key ;
196
+ do {
197
+ key = Math . random ( ) * 0x0FFFFFFF | 0 ;
198
+ } while ( key in filterByKey ) ;
199
+
200
+ filterByKey [ key ] = filter ;
196
201
keyByFilter [ filter . text ] = key ;
197
202
198
203
if ( usingGetSelectorsForDomain )
@@ -482,7 +487,7 @@ var ElemHide = exports.ElemHide =
482
487
483
488
let selectors = [ ] ;
484
489
485
- let seenFilters = Object . create ( null ) ;
490
+ let seenFilters = new Set ( ) ;
486
491
let currentDomain = domain ? domain . toUpperCase ( ) : "" ;
487
492
while ( true )
488
493
{
@@ -494,9 +499,9 @@ var ElemHide = exports.ElemHide =
494
499
{
495
500
for ( let filterKey in filters )
496
501
{
497
- if ( filterKey in seenFilters )
502
+ if ( seenFilters . has ( filterKey ) )
498
503
continue ;
499
- seenFilters [ filterKey ] = true ;
504
+ seenFilters . add ( filterKey ) ;
500
505
501
506
let filter = filters [ filterKey ] ;
502
507
if ( filter && ! this . getException ( filter , domain ) )
0 commit comments