From 4509483c7eec3f6cadcd00ee23526ce63d37202c Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Thu, 6 Feb 2020 10:18:15 -0500 Subject: [PATCH] Set tooltip to cname alias in popup panel The toolip of a canonical name entry (blue) in the popup panel will provide the alias hostname related to the canonical hostname in order to help with rule-making decisions. --- src/js/messaging.js | 8 ++++---- src/js/popup-fenix.js | 11 +++++------ src/js/popup.js | 11 +++++------ 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/js/messaging.js b/src/js/messaging.js index 8cba8e049..c496d6f8a 100644 --- a/src/js/messaging.js +++ b/src/js/messaging.js @@ -189,7 +189,7 @@ const µb = µBlock; const getHostnameDict = function(hostnameToCountMap, out) { const hnDict = Object.create(null); - const cnSet = []; + const cnMap = []; for ( const [ hostname, hnCounts ] of hostnameToCountMap ) { if ( hnDict[hostname] !== undefined ) { continue; } const domain = vAPI.domainFromHostname(hostname) || hostname; @@ -206,7 +206,7 @@ const getHostnameDict = function(hostnameToCountMap, out) { }; const cname = vAPI.net.canonicalNameFromHostname(domain); if ( cname !== undefined ) { - cnSet.push(cname); + cnMap.push([ cname, domain ]); } } const domainEntry = hnDict[domain]; @@ -224,11 +224,11 @@ const getHostnameDict = function(hostnameToCountMap, out) { }; const cname = vAPI.net.canonicalNameFromHostname(hostname); if ( cname !== undefined ) { - cnSet.push(cname); + cnMap.push([ cname, hostname ]); } } out.hostnameDict = hnDict; - out.cnameSet = cnSet; + out.cnameMap = cnMap; }; const getFirewallRules = function(srcHostname, desHostnames) { diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index 4b2f3a473..6097f1f9a 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -87,11 +87,7 @@ const cachePopupData = function(data) { return popupData; } popupData = data; - if ( Array.isArray(popupData.cnameSet) ) { - popupData.cnameSet = new Set(popupData.cnameSet); - } else if ( popupData.cnameSet === undefined ) { - popupData.cnameSet = new Set(); - } + popupData.cnameMap = new Map(popupData.cnameMap); scopeToSrcHostnameMap['.'] = popupData.pageHostname || ''; const hostnameDict = popupData.hostnameDict; if ( typeof hostnameDict !== 'object' ) { @@ -304,13 +300,16 @@ const buildAllFirewallRows = function() { classList.toggle('isRootContext', des === popupData.pageHostname); classList.toggle('isDomain', isDomain); classList.toggle('isSubDomain', !isDomain); - classList.toggle('isCname', popupData.cnameSet.has(des)); classList.toggle('allowed', hnDetails.allowCount !== 0); classList.toggle('blocked', hnDetails.blockCount !== 0); classList.toggle('totalAllowed', hnDetails.totalAllowCount !== 0); classList.toggle('totalBlocked', hnDetails.totalBlockCount !== 0); classList.toggle('expandException', expandExceptions.has(hnDetails.domain)); + if ( classList.toggle('isCname', popupData.cnameMap.has(des)) ) { + span.title = punycode.toUnicode(popupData.cnameMap.get(des)); + } + row = row.nextElementSibling; } diff --git a/src/js/popup.js b/src/js/popup.js index 41850128b..4c8039549 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -117,11 +117,7 @@ const cachePopupData = function(data) { return popupData; } popupData = data; - if ( Array.isArray(popupData.cnameSet) ) { - popupData.cnameSet = new Set(popupData.cnameSet); - } else if ( popupData.cnameSet === undefined ) { - popupData.cnameSet = new Set(); - } + popupData.cnameMap = new Map(popupData.cnameMap); scopeToSrcHostnameMap['.'] = popupData.pageHostname || ''; const hostnameDict = popupData.hostnameDict; if ( typeof hostnameDict !== 'object' ) { @@ -339,13 +335,16 @@ const buildAllFirewallRows = function() { classList.toggle('isRootContext', des === popupData.pageHostname); classList.toggle('isDomain', isDomain); classList.toggle('isSubDomain', !isDomain); - classList.toggle('isCname', popupData.cnameSet.has(des)); classList.toggle('allowed', hnDetails.allowCount !== 0); classList.toggle('blocked', hnDetails.blockCount !== 0); classList.toggle('totalAllowed', hnDetails.totalAllowCount !== 0); classList.toggle('totalBlocked', hnDetails.totalBlockCount !== 0); classList.toggle('expandException', expandExceptions.has(hnDetails.domain)); + if ( classList.toggle('isCname', popupData.cnameMap.has(des)) ) { + span.title = punycode.toUnicode(popupData.cnameMap.get(des)); + } + row = row.nextElementSibling; }