1919 Home: https://github.com/gorhill/uBlock
2020*/
2121
22+ /* globals browser */
23+
2224'use strict' ;
2325
2426import { dom , qs$ , qsa$ } from './dom.js' ;
@@ -29,21 +31,8 @@ import { dom, qs$, qsa$ } from './dom.js';
2931
3032/******************************************************************************/
3133
32- const showdomButton = qs$ ( '#showdom' ) ;
33-
34- // Don't bother if the browser is not modern enough.
35- if (
36- typeof Map === 'undefined' ||
37- Map . polyfill ||
38- typeof WeakMap === 'undefined'
39- ) {
40- dom . cl . add ( showdomButton , 'disabled' ) ;
41- return ;
42- }
43-
44- /******************************************************************************/
45-
4634const logger = self . logger ;
35+ const showdomButton = qs$ ( '#showdom' ) ;
4736const inspector = qs$ ( '#domInspector' ) ;
4837const domTree = qs$ ( '#domTree' ) ;
4938const filterToIdMap = new Map ( ) ;
@@ -71,7 +60,7 @@ inspectorFramePort.onmessageerror = ( ) => {
7160
7261/******************************************************************************/
7362
74- const nodeFromDomEntry = function ( entry ) {
63+ const nodeFromDomEntry = entry => {
7564 const li = document . createElement ( 'li' ) ;
7665 dom . attr ( li , 'id' , entry . nid ) ;
7766 // expander/collapser
@@ -107,7 +96,7 @@ const nodeFromDomEntry = function(entry) {
10796
10897/******************************************************************************/
10998
110- const appendListItem = function ( ul , li ) {
99+ const appendListItem = ( ul , li ) => {
111100 ul . appendChild ( li ) ;
112101 // Ancestor nodes of a node which is affected by a cosmetic filter will
113102 // be marked as "containing cosmetic filters", for user convenience.
@@ -121,7 +110,7 @@ const appendListItem = function(ul, li) {
121110
122111/******************************************************************************/
123112
124- const renderDOMFull = function ( response ) {
113+ const renderDOMFull = response => {
125114 const domTreeParent = domTree . parentElement ;
126115 let ul = domTreeParent . removeChild ( domTree ) ;
127116 logger . removeAllChildren ( domTree ) ;
@@ -165,7 +154,7 @@ const renderDOMFull = function(response) {
165154
166155/******************************************************************************/
167156
168- const patchIncremental = function ( from , delta ) {
157+ const patchIncremental = ( from , delta ) => {
169158 let li = from . parentElement . parentElement ;
170159 const patchCosmeticHide = delta >= 0 &&
171160 dom . cl . has ( from , 'isCosmeticHide' ) &&
@@ -189,7 +178,7 @@ const patchIncremental = function(from, delta) {
189178
190179/******************************************************************************/
191180
192- const renderDOMIncremental = function ( response ) {
181+ const renderDOMIncremental = response => {
193182 // Process each journal entry:
194183 // 1 = node added
195184 // -1 = node removed
@@ -248,15 +237,15 @@ const renderDOMIncremental = function(response) {
248237
249238/******************************************************************************/
250239
251- const countFromNode = function ( li ) {
240+ const countFromNode = li => {
252241 const span = li . children [ 2 ] ;
253242 const cnt = parseInt ( dom . attr ( span , 'data-cnt' ) , 10 ) ;
254243 return isNaN ( cnt ) ? 0 : cnt ;
255244} ;
256245
257246/******************************************************************************/
258247
259- const selectorFromNode = function ( node ) {
248+ const selectorFromNode = node => {
260249 let selector = '' ;
261250 while ( node !== null ) {
262251 if ( node . localName === 'li' ) {
@@ -273,7 +262,7 @@ const selectorFromNode = function(node) {
273262
274263/******************************************************************************/
275264
276- const selectorFromFilter = function ( node ) {
265+ const selectorFromFilter = node => {
277266 while ( node !== null ) {
278267 if ( node . localName === 'li' ) {
279268 const code = qs$ ( node , 'code:nth-of-type(2)' ) ;
@@ -288,7 +277,7 @@ const selectorFromFilter = function(node) {
288277
289278/******************************************************************************/
290279
291- const nidFromNode = function ( node ) {
280+ const nidFromNode = node => {
292281 let li = node ;
293282 while ( li !== null ) {
294283 if ( li . localName === 'li' ) {
@@ -301,7 +290,7 @@ const nidFromNode = function(node) {
301290
302291/******************************************************************************/
303292
304- const startDialog = ( function ( ) {
293+ const startDialog = ( ( ) => {
305294 let dialog ;
306295 let textarea ;
307296 let hideSelectors = [ ] ;
@@ -414,7 +403,7 @@ const startDialog = (function() {
414403
415404/******************************************************************************/
416405
417- const onClicked = function ( ev ) {
406+ const onClicked = ev => {
418407 ev . stopPropagation ( ) ;
419408
420409 if ( inspectedTabId === 0 ) { return ; }
@@ -475,21 +464,19 @@ const onClicked = function(ev) {
475464
476465/******************************************************************************/
477466
478- const onMouseOver = ( function ( ) {
467+ const onMouseOver = ( ( ) => {
479468 let mouseoverTarget = null ;
480469
481- const timerHandler = ( ) => {
470+ const mouseoverTimer = vAPI . defer . create ( ( ) => {
482471 inspectorFramePort . postMessage ( {
483472 what : 'highlightOne' ,
484473 selector : selectorFromNode ( mouseoverTarget ) ,
485474 nid : nidFromNode ( mouseoverTarget ) ,
486475 scrollTo : true
487476 } ) ;
488- } ;
489-
490- const mouseoverTimer = vAPI . defer . create ( timerHandler ) ;
477+ } ) ;
491478
492- return function ( ev ) {
479+ return ev => {
493480 if ( inspectedTabId === 0 ) { return ; }
494481 // Convenience: skip real-time highlighting if shift key is pressed.
495482 if ( ev . shiftKey ) { return ; }
@@ -503,65 +490,76 @@ const onMouseOver = (function() {
503490
504491/******************************************************************************/
505492
506- const currentTabId = function ( ) {
493+ const currentTabId = ( ) => {
507494 if ( dom . cl . has ( showdomButton , 'active' ) === false ) { return 0 ; }
508495 return logger . tabIdFromPageSelector ( ) ;
509496} ;
510497
511498/******************************************************************************/
512499
513- const injectInspector = function ( ) {
514- const tabId = currentTabId ( ) ;
515- if ( tabId <= 0 ) { return ; }
516- inspectedTabId = tabId ;
517- vAPI . messaging . send ( 'loggerUI' , {
518- what : 'scriptlet' ,
519- tabId,
520- scriptlet : 'dom-inspector' ,
500+ const injectInspector = ( ( ) => {
501+ const timer = vAPI . defer . create ( ( ) => {
502+ const tabId = currentTabId ( ) ;
503+ if ( tabId <= 0 ) { return ; }
504+ inspectedTabId = tabId ;
505+ vAPI . messaging . send ( 'loggerUI' , {
506+ what : 'scriptlet' ,
507+ tabId,
508+ scriptlet : 'dom-inspector' ,
509+ } ) ;
521510 } ) ;
522- } ;
511+ return ( ) => {
512+ shutdownInspector ( ) ;
513+ timer . offon ( 353 ) ;
514+ } ;
515+ } ) ( ) ;
523516
524517/******************************************************************************/
525518
526- const shutdownInspector = function ( ) {
527- if ( inspectorFramePort !== undefined ) {
528- inspectorFramePort . postMessage ( { what : 'quitInspector' } ) ;
529- }
519+ const shutdownInspector = ( ) => {
520+ inspectorFramePort . postMessage ( { what : 'quitInspector' } ) ;
530521 logger . removeAllChildren ( domTree ) ;
531522 dom . cl . remove ( inspector , 'vExpanded' ) ;
532523 inspectedTabId = 0 ;
533524} ;
534525
535526/******************************************************************************/
536527
537- const onTabIdChanged = function ( ) {
528+ const onTabIdChanged = ( ) => {
538529 const tabId = currentTabId ( ) ;
539530 if ( tabId <= 0 ) {
540531 return toggleOff ( ) ;
541532 }
542533 if ( inspectedTabId !== tabId ) {
543- shutdownInspector ( ) ;
544534 injectInspector ( ) ;
545535 }
546536} ;
547537
548538/******************************************************************************/
549539
550- const toggleVCompactView = function ( ) {
540+ const onDOMContentLoaded = details => {
541+ if ( details . tabId !== inspectedTabId ) { return ; }
542+ if ( details . frameId !== 0 ) { return ; }
543+ injectInspector ( ) ;
544+ } ;
545+
546+ /******************************************************************************/
547+
548+ const toggleVCompactView = ( ) => {
551549 const state = dom . cl . toggle ( inspector , 'vExpanded' ) ;
552550 const branches = qsa$ ( '#domInspector li.branch' ) ;
553551 for ( const branch of branches ) {
554552 dom . cl . toggle ( branch , 'show' , state ) ;
555553 }
556554} ;
557555
558- const toggleHCompactView = function ( ) {
556+ const toggleHCompactView = ( ) => {
559557 dom . cl . toggle ( inspector , 'hCompact' ) ;
560558} ;
561559
562560/******************************************************************************/
563561
564- const revert = function ( ) {
562+ const revert = ( ) => {
565563 dom . cl . remove ( '#domTree .off' , 'off' ) ;
566564 inspectorFramePort . postMessage ( { what : 'resetToggledNodes' } ) ;
567565 dom . cl . add ( qs$ ( inspector , '.permatoolbar .revert' ) , 'disabled' ) ;
@@ -570,7 +568,7 @@ const revert = function() {
570568
571569/******************************************************************************/
572570
573- const toggleOn = function ( ) {
571+ const toggleOn = ( ) => {
574572 dom . cl . add ( '#inspectors' , 'dom' ) ;
575573 window . addEventListener ( 'beforeunload' , toggleOff ) ;
576574 document . addEventListener ( 'tabIdChanged' , onTabIdChanged ) ;
@@ -580,12 +578,13 @@ const toggleOn = function() {
580578 dom . on ( '#domInspector .hCompactToggler' , 'click' , toggleHCompactView ) ;
581579 dom . on ( '#domInspector .permatoolbar .revert' , 'click' , revert ) ;
582580 dom . on ( '#domInspector .permatoolbar .commit' , 'click' , startDialog ) ;
581+ browser . webNavigation . onDOMContentLoaded . addListener ( onDOMContentLoaded ) ;
583582 injectInspector ( ) ;
584583} ;
585584
586585/******************************************************************************/
587586
588- const toggleOff = function ( ) {
587+ const toggleOff = ( ) => {
589588 dom . cl . remove ( showdomButton , 'active' ) ;
590589 dom . cl . remove ( '#inspectors' , 'dom' ) ;
591590 shutdownInspector ( ) ;
@@ -597,12 +596,13 @@ const toggleOff = function() {
597596 dom . off ( '#domInspector .hCompactToggler' , 'click' , toggleHCompactView ) ;
598597 dom . off ( '#domInspector .permatoolbar .revert' , 'click' , revert ) ;
599598 dom . off ( '#domInspector .permatoolbar .commit' , 'click' , startDialog ) ;
599+ browser . webNavigation . onDOMContentLoaded . removeListener ( onDOMContentLoaded ) ;
600600 inspectedTabId = 0 ;
601601} ;
602602
603603/******************************************************************************/
604604
605- const toggle = function ( ) {
605+ const toggle = ( ) => {
606606 if ( dom . cl . toggle ( showdomButton , 'active' ) ) {
607607 toggleOn ( ) ;
608608 } else {
0 commit comments