Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update root-cert-stats to use runtime.sendMessage #542 #547

Merged
merged 9 commits into from
Nov 4, 2023
14 changes: 10 additions & 4 deletions root-cert-stats/background.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
"use strict";

// Note: declared with "var" because popup.js references this global variable.
// If this were to be declared with "const" or "let", then the variable would
// still be available to this file, but not to popup.js.
var rootCertStats = {};
let rootCertStats = {};

/*
On an onHeadersReceived event, if there was a successful TLS connection
Expand Down Expand Up @@ -39,3 +36,12 @@ browser.webRequest.onHeadersReceived.addListener(logRootCert,
{urls: ["<all_urls>"]},
["blocking"]
);

/*
Send the rootCertStats object to popup.js when requested.
*/
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.action === "getRootCertStats") {
sendResponse({ rootCertStats: rootCertStats });
}
});
52 changes: 28 additions & 24 deletions root-cert-stats/popup.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
"use strict";

/*
Get the background page to access the rootCertStats object
Send message to the background page to get the rootCertStats object
*/
const backgroundPage = browser.extension.getBackgroundPage();
browser.runtime.sendMessage({ action: "getRootCertStats" }, response => {
displayTable(response.rootCertStats);
});

let entries = Object.keys(backgroundPage.rootCertStats);

/*
If there are any stats, show the table, and append one row for each entry.
Each row contains the name of the CA and the number of times it has been
used as a trust root.
*/
if (entries.length > 0) {

let noData = document.querySelector(".no-data");
noData.classList.add("hidden");
let entryTable = document.querySelector(".root-cert-table");
entryTable.classList.remove("hidden");

for (let entry of entries) {
let entryTR = document.createElement("tr");
let entryName = document.createElement("td");
let entryValue = document.createElement("td");
entryName.textContent = entry;
entryValue.textContent = backgroundPage.rootCertStats[entry];
function displayTable(rootCertStats) {
/*
If there are any stats, show the table, and append one row for each entry.
Each row contains the name of the CA and the number of times it has been
used as a trust root.
*/
let entries = Object.keys(rootCertStats);

entryTR.appendChild(entryName);
entryTR.appendChild(entryValue);
entryTable.appendChild(entryTR);
if (entries.length > 0) {
let noData = document.querySelector(".no-data");
noData.classList.add("hidden");
let entryTable = document.querySelector(".root-cert-table");
entryTable.classList.remove("hidden");

for (let entry of entries) {
let entryTR = document.createElement("tr");
let entryName = document.createElement("td");
let entryValue = document.createElement("td");
entryName.textContent = entry;
entryValue.textContent = rootCertStats[entry];

entryTR.appendChild(entryName);
entryTR.appendChild(entryValue);
entryTable.appendChild(entryTR);
}
}
}