@@ -187,78 +187,78 @@ vAPI.messaging.setup(onMessage);
187187
188188const µb = µBlock ;
189189
190- const getHostnameDict = function ( hostnameToCountMap ) {
191- const r = Object . create ( null ) ;
192- const domainFromHostname = µb . URI . domainFromHostname ;
193- // Note: destructuring assignment not supported before Chromium 49.
190+ const getHostnameDict = function ( hostnameToCountMap , out ) {
191+ const hnDict = Object . create ( null ) ;
192+ const cnSet = [ ] ;
194193 for ( const [ hostname , hnCounts ] of hostnameToCountMap ) {
195- if ( r [ hostname ] !== undefined ) { continue ; }
196- const domain = domainFromHostname ( hostname ) || hostname ;
194+ if ( hnDict [ hostname ] !== undefined ) { continue ; }
195+ const domain = vAPI . domainFromHostname ( hostname ) || hostname ;
197196 const dnCounts = hostnameToCountMap . get ( domain ) || 0 ;
198197 let blockCount = dnCounts & 0xFFFF ;
199198 let allowCount = dnCounts >>> 16 & 0xFFFF ;
200- if ( r [ domain ] === undefined ) {
201- r [ domain ] = {
202- domain : domain ,
203- blockCount : blockCount ,
204- allowCount : allowCount ,
199+ if ( hnDict [ domain ] === undefined ) {
200+ hnDict [ domain ] = {
201+ domain,
202+ blockCount,
203+ allowCount,
205204 totalBlockCount : blockCount ,
206- totalAllowCount : allowCount
205+ totalAllowCount : allowCount ,
207206 } ;
207+ const cname = vAPI . net . canonicalNameFromHostname ( domain ) ;
208+ if ( cname !== undefined ) {
209+ cnSet . push ( cname ) ;
210+ }
208211 }
209- const domainEntry = r [ domain ] ;
212+ const domainEntry = hnDict [ domain ] ;
210213 blockCount = hnCounts & 0xFFFF ;
211214 allowCount = hnCounts >>> 16 & 0xFFFF ;
212215 domainEntry . totalBlockCount += blockCount ;
213216 domainEntry . totalAllowCount += allowCount ;
214217 if ( hostname === domain ) { continue ; }
215- r [ hostname ] = {
216- domain : domain ,
217- blockCount : blockCount ,
218- allowCount : allowCount ,
218+ hnDict [ hostname ] = {
219+ domain,
220+ blockCount,
221+ allowCount,
219222 totalBlockCount : 0 ,
220223 totalAllowCount : 0 ,
221224 } ;
225+ const cname = vAPI . net . canonicalNameFromHostname ( hostname ) ;
226+ if ( cname !== undefined ) {
227+ cnSet . push ( cname ) ;
228+ }
222229 }
223- return r ;
230+ out . hostnameDict = hnDict ;
231+ out . cnameSet = cnSet ;
224232} ;
225233
226234const getFirewallRules = function ( srcHostname , desHostnames ) {
227- var r = { } ;
228- var df = µb . sessionFirewall ;
229- r [ '/ * *' ] = df . lookupRuleData ( '*' , '*' , '*' ) ;
230- r [ '/ * image' ] = df . lookupRuleData ( '*' , '*' , 'image' ) ;
231- r [ '/ * 3p' ] = df . lookupRuleData ( '*' , '*' , '3p' ) ;
232- r [ '/ * inline-script' ] = df . lookupRuleData ( '*' , '*' , 'inline-script' ) ;
233- r [ '/ * 1p-script' ] = df . lookupRuleData ( '*' , '*' , '1p-script' ) ;
234- r [ '/ * 3p-script' ] = df . lookupRuleData ( '*' , '*' , '3p-script' ) ;
235- r [ '/ * 3p-frame' ] = df . lookupRuleData ( '*' , '*' , '3p-frame' ) ;
236- if ( typeof srcHostname !== 'string' ) { return r ; }
237-
238- r [ '. * *' ] = df . lookupRuleData ( srcHostname , '*' , '*' ) ;
239- r [ '. * image' ] = df . lookupRuleData ( srcHostname , '*' , 'image' ) ;
240- r [ '. * 3p' ] = df . lookupRuleData ( srcHostname , '*' , '3p' ) ;
241- r [ '. * inline-script' ] = df . lookupRuleData ( srcHostname ,
235+ const out = { } ;
236+ const df = µb . sessionFirewall ;
237+ out [ '/ * *' ] = df . lookupRuleData ( '*' , '*' , '*' ) ;
238+ out [ '/ * image' ] = df . lookupRuleData ( '*' , '*' , 'image' ) ;
239+ out [ '/ * 3p' ] = df . lookupRuleData ( '*' , '*' , '3p' ) ;
240+ out [ '/ * inline-script' ] = df . lookupRuleData ( '*' , '*' , 'inline-script' ) ;
241+ out [ '/ * 1p-script' ] = df . lookupRuleData ( '*' , '*' , '1p-script' ) ;
242+ out [ '/ * 3p-script' ] = df . lookupRuleData ( '*' , '*' , '3p-script' ) ;
243+ out [ '/ * 3p-frame' ] = df . lookupRuleData ( '*' , '*' , '3p-frame' ) ;
244+ if ( typeof srcHostname !== 'string' ) { return out ; }
245+
246+ out [ '. * *' ] = df . lookupRuleData ( srcHostname , '*' , '*' ) ;
247+ out [ '. * image' ] = df . lookupRuleData ( srcHostname , '*' , 'image' ) ;
248+ out [ '. * 3p' ] = df . lookupRuleData ( srcHostname , '*' , '3p' ) ;
249+ out [ '. * inline-script' ] = df . lookupRuleData ( srcHostname ,
242250 '*' ,
243251 'inline-script'
244252 ) ;
245- r [ '. * 1p-script' ] = df . lookupRuleData ( srcHostname , '*' , '1p-script' ) ;
246- r [ '. * 3p-script' ] = df . lookupRuleData ( srcHostname , '*' , '3p-script' ) ;
247- r [ '. * 3p-frame' ] = df . lookupRuleData ( srcHostname , '*' , '3p-frame' ) ;
253+ out [ '. * 1p-script' ] = df . lookupRuleData ( srcHostname , '*' , '1p-script' ) ;
254+ out [ '. * 3p-script' ] = df . lookupRuleData ( srcHostname , '*' , '3p-script' ) ;
255+ out [ '. * 3p-frame' ] = df . lookupRuleData ( srcHostname , '*' , '3p-frame' ) ;
248256
249257 for ( const desHostname in desHostnames ) {
250- r [ `/ ${ desHostname } *` ] = df . lookupRuleData (
251- '*' ,
252- desHostname ,
253- '*'
254- ) ;
255- r [ `. ${ desHostname } *` ] = df . lookupRuleData (
256- srcHostname ,
257- desHostname ,
258- '*'
259- ) ;
258+ out [ `/ ${ desHostname } *` ] = df . lookupRuleData ( '*' , desHostname , '*' ) ;
259+ out [ `. ${ desHostname } *` ] = df . lookupRuleData ( srcHostname , desHostname , '*' ) ;
260260 }
261- return r ;
261+ return out ;
262262} ;
263263
264264const popupDataFromTabId = function ( tabId , tabTitle ) {
@@ -304,7 +304,7 @@ const popupDataFromTabId = function(tabId, tabTitle) {
304304 r . pageBlockedRequestCount = pageStore . perLoadBlockedRequestCount ;
305305 r . pageAllowedRequestCount = pageStore . perLoadAllowedRequestCount ;
306306 r . netFilteringSwitch = pageStore . getNetFilteringSwitch ( ) ;
307- r . hostnameDict = getHostnameDict ( pageStore . hostnameToCountMap ) ;
307+ getHostnameDict ( pageStore . hostnameToCountMap , r ) ;
308308 r . contentLastModified = pageStore . contentLastModified ;
309309 r . firewallRules = getFirewallRules ( rootHostname , r . hostnameDict ) ;
310310 r . canElementPicker = µb . URI . isNetworkURI ( r . rawURL ) ;
0 commit comments