diff --git a/.tools/findUnusedMessages.js b/.tools/findUnusedMessages.js index 11b2ac1..d603344 100644 --- a/.tools/findUnusedMessages.js +++ b/.tools/findUnusedMessages.js @@ -7,7 +7,7 @@ const util = require("util"); function getMessagesInContent(content){ const foundMessages = []; [ - /\b(?:_|browser.i18n.getMessage|notify|extension)\(["']([^"']+)["']\s*(?:\)|,)/g, + /\b(?:_|browser.i18n.getMessage|extension.getTranslation|notify|extension)\(["']([^"']+)["']\s*(?:\)|,)/g, /\b(?:messageId|name|getTranslation)\s*:\s*["']([^"']+)["']/g, ].forEach(function(re){ let match; @@ -81,32 +81,37 @@ async function getSettingMessages(){ const settingsDisplay = require("../options/settingsDisplay"); const foundMessages = []; - settingsDisplay.forEach(function(display){ - if ((typeof display) === "string"){ - foundMessages.push("section_" + display.toLowerCase()); + settingsDisplay.forEach(function(groupDefinition){ + if (groupDefinition.name){ + foundMessages.push("group_" + groupDefinition.name.toLowerCase()); } - else { - let settingDefinition = getDefinition(display.name); - if (!settingDefinition){ - settingDefinition = display; - display.action = true; + groupDefinition.sections.forEach(function(sectionDefinition){ + if (sectionDefinition.name){ + foundMessages.push("section_" + sectionDefinition.name.toLowerCase()); } - if (settingDefinition){ - if (display.inputs){ - settingDefinition.inputs = display.inputs.map(function(input){ - return getDefinition(input); + sectionDefinition.settings.forEach(function(display){ + let settingDefinition = getDefinition(display.name); + if (!settingDefinition){ + settingDefinition = display; + display.action = true; + } + if (settingDefinition){ + if (display.inputs){ + settingDefinition.inputs = display.inputs.map(function(input){ + return getDefinition(input); + }); + } + else if (display.actions){ + settingDefinition.actions = display.actions.map(function(action){ + return {name: action}; + }); + } + settingStrings.getMessages(settingDefinition).forEach(function(message){ + foundMessages.push(message.toLowerCase()); }); } - else if (display.actions){ - settingDefinition.actions = display.actions.map(function(action){ - return {name: action}; - }); - } - settingStrings.getMessages(settingDefinition).forEach(function(message){ - foundMessages.push(message.toLowerCase()); - }); - } - } + }); + }); }); return foundMessages.map(function(message){return message.toLowerCase();}); } @@ -140,7 +145,7 @@ Promise.all([getSettingMessages(), getMessagesInFolder(path.join(__dirname, ".." settingMessages.indexOf(message) === -1 && knownMessages.indexOf(message) === -1 ){ - console.log(`${message} not used`); + console.log(`usage of ${message} not found`); } }); }); \ No newline at end of file diff --git a/_locales/de/messages.json b/_locales/de/messages.json index 581af8c..1bcef65 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -83,6 +83,18 @@ "message": "In separatem Tab öffnen", "description": "" }, + "group_general": { + "message": "Allgemein", + "description": "" + }, + "group_APIs": { + "message": "APIs", + "description": "" + }, + "group_misc": { + "message": "Vermischtes", + "description": "" + }, "section_asking": { "message": "Nachfragen", "description": "" @@ -100,7 +112,7 @@ "description": "" }, "section_misc": { - "message": "Gemischtes", + "message": "Vermischtes", "description": "" }, "section_settings": { diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 677604b..5432af3 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -89,6 +89,19 @@ "description": "" }, + "group_general": { + "message": "General", + "description": "" + }, + "group_APIs": { + "message": "APIs", + "description": "" + }, + "group_misc": { + "message": "Misc", + "description": "" + }, + "section_asking": { "message": "Asking", "description": "" diff --git a/options/options.css b/options/options.css index 4edb5a6..58d6caf 100644 --- a/options/options.css +++ b/options/options.css @@ -25,8 +25,6 @@ header .bookmarkNotice .dontShowOptionsOnUpdate input { width: 100%; border-spacing: 0; border-collapse: collapse; -} -.settings { table-layout: fixed; } .settings * { @@ -289,4 +287,43 @@ td.hideColumn { .searching .settingRow.found:not(.hidden) { display: table-row; +} + +.groupTabs { + display: flex; + flex-wrap: nowrap; +} + +.groups { + flex-basis: max-content; + flex-shrink: 0; + flex-grow: 0; + list-style: none; + margin: 0; + margin-right: 1em; + padding: 0; + min-width: 50px; + min-height: 100%; + border-right: 1px solid #c1c1c1; +} +.searching .groups { + visibility: hidden; +} +.groups .groupName { + cursor: pointer; + border: 1px solid #c1c1c1; + border-radius: 0.5em; + padding: 2px 1em; + margin: 2px; +} +.groups .groupName.selected { + border-right-color: transparent; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: -1px; + padding-right: calc(1em + 3px); + background-color: var(--background-color); +} +body:not(.searching) .settings tbody:not(.selectedGroup) { + display: none; } \ No newline at end of file diff --git a/options/options.js b/options/options.js index bb637d0..cf65b02 100644 --- a/options/options.js +++ b/options/options.js @@ -222,12 +222,24 @@ } }); + var groupTabs = document.createElement("div"); + groupTabs.classList = "groupTabs"; + document.body.appendChild(groupTabs); + + var groups = document.createElement("ul"); + groups.className = "groups"; + groupTabs.appendChild(groups); + var table = document.createElement("table"); table.className = "settings " + (settings.displayDescriptions? "display": "hide") + "Descriptions"; settings.on("displayDescriptions", function(){ table.className = "settings " + (settings.displayDescriptions? "display": "hide") + "Descriptions"; }); - document.body.appendChild(table); + var tableContainer = document.createElement("div"); + tableContainer.classList = "tabContents"; + groupTabs.appendChild(tableContainer); + + tableContainer.appendChild(table); const displayHidden = settings.getDefinition(settingsDisplay.displayHidden); const searchInput = search.init(); @@ -261,7 +273,41 @@ const {hide: hideContainer, expand: expandContainer} = settings.getContainers(); - let lastSection = null; + const addGroup = function addGroup(groupDefinition){ + const sections = []; + const group = { + select: function(){ + groups.querySelectorAll(".selected").forEach(function(group){ + group.classList.remove("selected"); + }); + table.querySelectorAll("tbody").forEach(function(section){ + section.classList.remove("selectedGroup"); + }); + sections.forEach(function(section){ + section.node.classList.add("selectedGroup"); + }); + name.classList.add("selected"); + }, + addSection: function(sectionDefinition){ + const section = addSection(sectionDefinition.name); + sections.push(section); + return section; + } + }; + + const groupIndex = groups.childNodes.length; + const name = document.createElement("li"); + name.textContent = extension.getTranslation("group_" + groupDefinition.name); + name.className = "groupName group" + groupIndex; + + + name.addEventListener("click", group.select); + + groups.appendChild(name); + + return group; + }; + const addSection = function addSection(name){ const body = document.createElement("tbody"); if (name){ @@ -296,8 +342,9 @@ body.appendChild(row); } table.appendChild(body); - let rows = []; - let section = { + const rows = []; + const section = { + node: body, addRow: function(row){ rows.push(row); body.appendChild(row); @@ -327,158 +374,158 @@ }; search.on(function(){section.updateDisplay();}); - lastSection = section; + return section; }; - addSection(); const beforeChangeEventListeners = {}; - settingsDisplay.forEach(function(display){ - if (typeof display === "string"){ - addSection(display); - } - else { - var setting = settings.getDefinition(display.name); - if (!setting){ - if (display.inputs){ - setting = { - name: display.name, - inputs: display.inputs.map(settings.getDefinition) - }; + settingsDisplay.map(function(groupDefinition){ + const group = addGroup(groupDefinition); + groupDefinition.sections.forEach(function(sectionDefinition){ + const section = group.addSection(sectionDefinition); + sectionDefinition.settings.forEach(function(display){ + var setting = settings.getDefinition(display.name); + if (!setting){ + if (display.inputs){ + setting = { + name: display.name, + inputs: display.inputs.map(settings.getDefinition) + }; + } + else if (display.actions){ + setting = { + name: display.name, + actions: display.actions.map(function(action){ + return { + name: action, + action: callbacks[action] + }; + }).filter(function(action){ + return action.action; + }) + }; + } + else if (callbacks[display.name]){ + setting = { + name: display.name, + action: callbacks[display.name] + }; + } } - else if (display.actions){ - setting = { - name: display.name, - actions: display.actions.map(function(action){ - return { - name: action, - action: callbacks[action] - }; - }).filter(function(action){ - return action.action; - }) + if (setting){ + setting.display = display; + + let originalSet = setting.set; + setting.originalSet = originalSet; + if (originalSet){ + const eventListeners = []; + beforeChangeEventListeners[setting.name] = eventListeners; + setting.set = function(...args){ + if (eventListeners.every(function(listener){ + return listener.call(setting, ...args); + })){ + return originalSet.apply(this, args); + } + else { + return false; + } + }; + } + + let hideChangeListeners = []; + setting.setHide = function setHide(value){ + if (hideContainer){ + hideContainer.setHideByName(display.name, value); + if (computeDependencies){ + computeDependencies(); + } + } }; - } - else if (callbacks[display.name]){ - setting = { - name: display.name, - action: callbacks[display.name] + setting.onHideChange = function(listener){ + hideChangeListeners.push(listener); }; - } - } - if (setting){ - setting.display = display; - - let originalSet = setting.set; - setting.originalSet = originalSet; - if (originalSet){ - const eventListeners = []; - beforeChangeEventListeners[setting.name] = eventListeners; - setting.set = function(...args){ - if (eventListeners.every(function(listener){ - return listener.call(setting, ...args); - })){ - return originalSet.apply(this, args); + setting.getHide = function getHide(){ + if (hideContainer){ + return hideContainer.getHideByName(display.name); } else { return false; } }; - } - - let hideChangeListeners = []; - setting.setHide = function setHide(value){ if (hideContainer){ - hideContainer.setHideByName(display.name, value); - if (computeDependencies){ - computeDependencies(); - } - } - }; - setting.onHideChange = function(listener){ - hideChangeListeners.push(listener); - }; - setting.getHide = function getHide(){ - if (hideContainer){ - return hideContainer.getHideByName(display.name); - } - else { - return false; - } - }; - if (hideContainer){ - hideContainer.onHideChange(display.name, function(value){ - if (computeDependencies){ - computeDependencies(); - } - hideChangeListeners.forEach(function(listener){ - listener(value); - }); - }); - } - - let expandChangeListeners = []; - setting.setExpand = function setExpand(value){ - if (expandContainer){ - expandContainer.setExpandByName(display.name, value); - } - }; - setting.onExpandChange = function(listener){ - expandChangeListeners.push(listener); - }; - setting.getExpand = function getExpand(){ - if (expandContainer){ - return expandContainer.getExpandByName(display.name); - } - else { - return false; - } - }; - if (expandContainer){ - expandContainer.onExpandChange(display.name, function(value){ - expandChangeListeners.forEach(function(listener){ - listener(value); - }); - }); - } - - var row = optionsGui.createSettingRow(setting); - settingStrings.getStrings(setting).forEach(function(string){ - search.register(string, row); - }); - let section = lastSection; - section.addRow(row); - if (!display.displayDependencies){ - display.displayDependencies = {}; - } - var displayDependencies = display.displayDependencies; - displayDependencies = Array.isArray(displayDependencies)? - displayDependencies: - [displayDependencies]; - var computeDependencies = function(){ - logging.verbose("evaluate display dependencies for", setting); - row.classList[( - ( - displayHidden.get() || - !setting.getHide() - ) && - displayDependencies.some(function(displayDependency){ - return Object.keys(displayDependency).every(function(key){ - return displayDependency[key].indexOf(settings[key]) !== -1; + hideContainer.onHideChange(display.name, function(value){ + if (computeDependencies){ + computeDependencies(); + } + hideChangeListeners.forEach(function(listener){ + listener(value); }); - }) - )? "remove": "add"]("hidden"); - section.updateDisplay(); - }; - computeDependencies(); - displayDependencies.forEach(function(displayDependency){ - Object.keys(displayDependency).forEach(function(name){ - settings.on(name, computeDependencies); + }); + } + + let expandChangeListeners = []; + setting.setExpand = function setExpand(value){ + if (expandContainer){ + expandContainer.setExpandByName(display.name, value); + } + }; + setting.onExpandChange = function(listener){ + expandChangeListeners.push(listener); + }; + setting.getExpand = function getExpand(){ + if (expandContainer){ + return expandContainer.getExpandByName(display.name); + } + else { + return false; + } + }; + if (expandContainer){ + expandContainer.onExpandChange(display.name, function(value){ + expandChangeListeners.forEach(function(listener){ + listener(value); + }); + }); + } + + var row = optionsGui.createSettingRow(setting); + settingStrings.getStrings(setting).forEach(function(string){ + search.register(string, row); }); - }); - displayHidden.on(computeDependencies); - } - } - }); + section.addRow(row); + if (!display.displayDependencies){ + display.displayDependencies = {}; + } + var displayDependencies = display.displayDependencies; + displayDependencies = Array.isArray(displayDependencies)? + displayDependencies: + [displayDependencies]; + var computeDependencies = function(){ + logging.verbose("evaluate display dependencies for", setting); + row.classList[( + ( + displayHidden.get() || + !setting.getHide() + ) && + displayDependencies.some(function(displayDependency){ + return Object.keys(displayDependency).every(function(key){ + return displayDependency[key].indexOf(settings[key]) !== -1; + }); + }) + )? "remove": "add"]("hidden"); + section.updateDisplay(); + }; + computeDependencies(); + displayDependencies.forEach(function(displayDependency){ + Object.keys(displayDependency).forEach(function(name){ + settings.on(name, computeDependencies); + }); + }); + displayHidden.on(computeDependencies); + } + }); + }); + return group; + })[0].select(); const version = document.createElement("div"); version.className = "version"; diff --git a/options/settingsDisplay.js b/options/settingsDisplay.js index 73bce9c..af2248a 100644 --- a/options/settingsDisplay.js +++ b/options/settingsDisplay.js @@ -6,543 +6,611 @@ "use strict"; var settingsDisplay = [ { - "name": "displayAdvancedSettings" - }, - { - "name": "displayDescriptions" - }, - { - "name": "blockMode" - }, - "asking", - { - "name": "askOnlyOnce", - "displayDependencies": { - "blockMode": ["ask"] - } - }, - { - "name": "askDenyMode", - "displayDependencies": { - "blockMode": ["ask"], - "displayAdvancedSettings": [true] - } - }, - { - "name": "showCanvasWhileAsking", - "displayDependencies": { - "blockMode": ["ask"], - "displayAdvancedSettings": [true] - } - }, - "faking", - { - "name": "rng", - "displayDependencies": [ + name: "general", + sections: [ { - "blockMode": ["fake"], - "displayAdvancedSettings": [true] + name: "", + settings: [ + { + "name": "displayAdvancedSettings" + }, + { + "name": "blockMode" + }, + ] }, { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "storePersistentRnd", - "displayDependencies": [ - { - "blockMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] + name: "asking", + settings: [ + { + "name": "askOnlyOnce", + "displayDependencies": { + "blockMode": ["ask"] + } + }, + { + "name": "askDenyMode", + "displayDependencies": { + "blockMode": ["ask"], + "displayAdvancedSettings": [true] + } + }, + { + "name": "showCanvasWhileAsking", + "displayDependencies": { + "blockMode": ["ask"], + "displayAdvancedSettings": [true] + } + }, + ] }, { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "persistentRndClearInterval", - "inputs": ["persistentRndClearIntervalValue", "persistentRndClearIntervalUnit"], - "displayDependencies": [ - { - "blockMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] + name: "faking", + settings: [ + { + "name": "rng", + "displayDependencies": [ + { + "blockMode": ["fake"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "storePersistentRnd", + "displayDependencies": [ + { + "blockMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "persistentRndClearInterval", + "inputs": ["persistentRndClearIntervalValue", "persistentRndClearIntervalUnit"], + "displayDependencies": [ + { + "blockMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "clearPersistentRnd", + "actions": ["clearPersistentRnd", "clearPersistentRndForContainer"], + "displayDependencies": [ + { + "blockMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "sharePersistentRndBetweenDomains", + "displayDependencies": [ + { + "blockMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "rng": ["persistent"], + "displayAdvancedSettings": [true] + } + ] + }, + ] }, { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "clearPersistentRnd", - "actions": ["clearPersistentRnd", "clearPersistentRndForContainer"], - "displayDependencies": [ - { - "blockMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] + name: "notifications", + settings: [ + { + "name": "showNotifications" + }, + { + "name": "highlightPageAction", + "displayDependencies": [ + { + "showNotifications": [true] + } + ] + }, + { + "name": "displayBadge" + }, + { + "name": "highlightBrowserAction" + }, + { + "name": "storeNotificationData", + "displayDependencies": [ + { + "showNotifications": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "ignoreList", + "multiline": true, + "displayDependencies": [ + { + "showNotifications": [true], + "displayAdvancedSettings": [true] + }, + { + "displayBadge": [true], + "displayAdvancedSettings": [true] + }, + { + "highlightBrowserAction": ["color", "blink"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "ignoredAPIs", + "displayDependencies": [ + { + "showNotifications": [true], + "displayAdvancedSettings": [true] + }, + { + "displayBadge": [true], + "displayAdvancedSettings": [true] + }, + { + "highlightBrowserAction": ["color", "blink"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "showCallingFile", + "displayDependencies": { + "blockMode": ["ask"], + "displayAdvancedSettings": [true] + } + }, + { + "name": "showCompleteCallingStack", + "displayDependencies": [ + { + "displayAdvancedSettings": [true] + } + ] + }, + ] }, { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] - } + name: "lists", + settings: [ + { + "name": "enableStackList", + "displayDependencies": { + "blockMode": ["fake", "block", "ask"], + "displayAdvancedSettings": [true] + } + }, + { + "name": "stackList", + "multiline": true, + "displayDependencies": { + "enableStackList": [true], + "displayAdvancedSettings": [true] + } + + }, + { + "name": "whiteList", + "multiline": true, + "displayDependencies": { + "blockMode": ["fake", "block", "ask"], + "displayAdvancedSettings": [true] + } + }, + { + "name": "sessionWhiteList", + "multiline": true, + "displayDependencies": { + "blockMode": ["fake", "block", "ask"], + "displayAdvancedSettings": [true] + } + }, + { + "name": "blackList", + "multiline": true, + "displayDependencies": { + "blockMode": ["block", "fake", "ask", "allow"], + "displayAdvancedSettings": [true] + } + }, + ] + }, ] }, { - "name": "sharePersistentRndBetweenDomains", - "displayDependencies": [ + name: "APIs", + sections: [ { - "blockMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] + name: "Canvas-API", + settings: [ + { + "name": "protectedCanvasPart" + }, + { + "name": "protectedAPIFeatures", + "displayedSection": "Canvas-API", + "displayDependencies": [ + { + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "minFakeSize", + "displayDependencies": [ + { + "blockMode": ["fake"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "maxFakeSize", + "displayDependencies": [ + { + "blockMode": ["fake"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "ignoreFrequentColors", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectedCanvasPart": ["readout", "everything"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "minColors", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectedCanvasPart": ["readout", "everything"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "fakeAlphaChannel", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectedCanvasPart": ["readout", "everything"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "useCanvasCache", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectedCanvasPart": ["readout", "everything"], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "storeImageForInspection", + "displayDependencies": [ + { + "showNotifications": [true], + "storeNotificationData": [true], + "displayAdvancedSettings": [true] + } + ] + }, + ] }, { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "rng": ["persistent"], - "displayAdvancedSettings": [true] - } - ] - }, - "notifications", - { - "name": "showNotifications" - }, - { - "name": "highlightPageAction", - "displayDependencies": [ - { - "showNotifications": [true] - } - ] - }, - { - "name": "displayBadge" - }, - { - "name": "highlightBrowserAction" - }, - { - "name": "storeNotificationData", - "displayDependencies": [ - { - "showNotifications": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "ignoreList", - "multiline": true, - "displayDependencies": [ - { - "showNotifications": [true], - "displayAdvancedSettings": [true] + name: "Audio-API", + settings: [ + { + "name": "protectAudio" + }, + { + "name": "protectedAPIFeatures", + "displayedSection": "Audio-API", + "displayDependencies": [ + { + "protectAudio": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "audioFakeRate", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "audioNoiseLevel", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "useAudioCache", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "audioUseFixedIndices", + "displayDependencies": [ + { + "blockMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + }, + { + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "audioFixedIndices", + "displayDependencies": [ + { + "audioUseFixedIndices": [true], + "blockMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + }, + { + "audioUseFixedIndices": [true], + "blockMode": ["ask"], + "askDenyMode": ["fake"], + "protectAudio": [true], + "displayAdvancedSettings": [true] + } + ] + }, + ] }, { - "displayBadge": [true], - "displayAdvancedSettings": [true] + name: "History-API", + settings: [ + { + "name": "protectedAPIFeatures", + "displayedSection": "History-API", + "displayDependencies": [ + { + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "historyLengthThreshold", + "displayDependencies": { + "displayAdvancedSettings": [true] + } + }, + ] }, { - "highlightBrowserAction": ["color", "blink"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "ignoredAPIs", - "displayDependencies": [ - { - "showNotifications": [true], - "displayAdvancedSettings": [true] + name: "Window-API", + settings: [ + { + "name": "protectWindow" + }, + { + "name": "protectedAPIFeatures", + "displayedSection": "Window-API", + "displayDependencies": [ + { + "protectWindow": [true], + "displayAdvancedSettings": [true] + } + ] + }, + ] }, { - "displayBadge": [true], - "displayAdvancedSettings": [true] + name: "DOMRect-API", + settings: [ + { + "name": "protectDOMRect" + }, + { + "name": "protectedAPIFeatures", + "displayedSection": "DOMRect-API", + "displayDependencies": [ + { + "protectDOMRect": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "domRectIntegerFactor", + "displayDependencies": { + "protectDOMRect": [true], + "displayAdvancedSettings": [true] + } + }, + ] }, { - "highlightBrowserAction": ["color", "blink"], - "displayAdvancedSettings": [true] - } + name: "Navigator-API", + settings: [ + { + "name": "protectNavigator" + }, + { + "name": "protectedAPIFeatures", + "displayedSection": "Navigator-API", + "displayDependencies": [ + { + "protectNavigator": [true], + "displayAdvancedSettings": [true] + } + ] + }, + { + "name": "openNavigatorSettings", + "displayDependencies": [ + { + "protectNavigator": [true] + } + ] + }, + ] + }, ] }, { - "name": "showCallingFile", - "displayDependencies": { - "blockMode": ["ask"], - "displayAdvancedSettings": [true] - } - }, - { - "name": "showCompleteCallingStack", - "displayDependencies": [ + name: "misc", + sections: [ { - "displayAdvancedSettings": [true] - } - ] - }, - "lists", - { - "name": "enableStackList", - "displayDependencies": { - "blockMode": ["fake", "block", "ask"], - "displayAdvancedSettings": [true] - } - }, - { - "name": "stackList", - "multiline": true, - "displayDependencies": { - "enableStackList": [true], - "displayAdvancedSettings": [true] - } - - }, - { - "name": "whiteList", - "multiline": true, - "displayDependencies": { - "blockMode": ["fake", "block", "ask"], - "displayAdvancedSettings": [true] - } - }, - { - "name": "sessionWhiteList", - "multiline": true, - "displayDependencies": { - "blockMode": ["fake", "block", "ask"], - "displayAdvancedSettings": [true] - } - }, - { - "name": "blackList", - "multiline": true, - "displayDependencies": { - "blockMode": ["block", "fake", "ask", "allow"], - "displayAdvancedSettings": [true] - } - }, - "Canvas-API", - { - "name": "protectedCanvasPart" - }, - { - "name": "protectedAPIFeatures", - "displayedSection": "Canvas-API", - "displayDependencies": [ - { - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "minFakeSize", - "displayDependencies": [ - { - "blockMode": ["fake"], - "displayAdvancedSettings": [true] + name: "misc", + settings: [ + { + "name": "theme" + }, + { + "name": "blockDataURLs", + "displayDependencies": { + "displayAdvancedSettings": [true] + } + }, + { + "name": "showReleaseNotes" + }, + { + "name": "logLevel", + "displayDependencies": { + "displayAdvancedSettings": [true] + } + }, + ] }, { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "displayAdvancedSettings": [true] + name: "settings", + settings: [ + { + "name": "displayDescriptions" + }, + { + "name": "openSettingSanitation" + }, + { + "name": "exportSettings", + "actions": ["inspectSettings", "inspectWhitelist", "saveSettings", "loadSettings"] + }, + { + "name": "resetSettings" + } + ] } ] - }, - { - "name": "maxFakeSize", - "displayDependencies": [ - { - "blockMode": ["fake"], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "ignoreFrequentColors", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectedCanvasPart": ["readout", "everything"], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "minColors", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectedCanvasPart": ["readout", "everything"], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "fakeAlphaChannel", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectedCanvasPart": ["readout", "everything"], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "useCanvasCache", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectedCanvasPart": ["readout", "everything"], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "storeImageForInspection", - "displayDependencies": [ - { - "showNotifications": [true], - "storeNotificationData": [true], - "displayAdvancedSettings": [true] - } - ] - }, - "Audio-API", - { - "name": "protectAudio" - }, - { - "name": "protectedAPIFeatures", - "displayedSection": "Audio-API", - "displayDependencies": [ - { - "protectAudio": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "audioFakeRate", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "audioNoiseLevel", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "useAudioCache", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "audioUseFixedIndices", - "displayDependencies": [ - { - "blockMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - }, - { - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "audioFixedIndices", - "displayDependencies": [ - { - "audioUseFixedIndices": [true], - "blockMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - }, - { - "audioUseFixedIndices": [true], - "blockMode": ["ask"], - "askDenyMode": ["fake"], - "protectAudio": [true], - "displayAdvancedSettings": [true] - } - ] - }, - "History-API", - { - "name": "protectedAPIFeatures", - "displayedSection": "History-API", - "displayDependencies": [ - { - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "historyLengthThreshold", - "displayDependencies": { - "displayAdvancedSettings": [true] - } - }, - "Window-API", - { - "name": "protectWindow" - }, - { - "name": "protectedAPIFeatures", - "displayedSection": "Window-API", - "displayDependencies": [ - { - "protectWindow": [true], - "displayAdvancedSettings": [true] - } - ] - }, - "DOMRect-API", - { - "name": "protectDOMRect" - }, - { - "name": "protectedAPIFeatures", - "displayedSection": "DOMRect-API", - "displayDependencies": [ - { - "protectDOMRect": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "domRectIntegerFactor", - "displayDependencies": { - "protectDOMRect": [true], - "displayAdvancedSettings": [true] - } - }, - "Navigator-API", - { - "name": "protectNavigator" - }, - { - "name": "protectedAPIFeatures", - "displayedSection": "Navigator-API", - "displayDependencies": [ - { - "protectNavigator": [true], - "displayAdvancedSettings": [true] - } - ] - }, - { - "name": "openNavigatorSettings", - "displayDependencies": [ - { - "protectNavigator": [true] - } - ] - }, - "misc", - { - "name": "theme" - }, - { - "name": "blockDataURLs", - "displayDependencies": { - "displayAdvancedSettings": [true] - } - }, - { - "name": "showReleaseNotes" - }, - { - "name": "logLevel", - "displayDependencies": { - "displayAdvancedSettings": [true] - } - }, - "settings", - { - "name": "openSettingSanitation" - }, - { - "name": "exportSettings", - "actions": ["inspectSettings", "inspectWhitelist", "saveSettings", "loadSettings"] - }, - { - "name": "resetSettings" } ]; settingsDisplay.displayHidden = "displayHiddenSettings"; diff --git a/releaseNotes.txt b/releaseNotes.txt index 4f788ee..0dde297 100644 --- a/releaseNotes.txt +++ b/releaseNotes.txt @@ -4,6 +4,7 @@ Version 0.5.12: new features: - enabled whitelisting of local files + - added tabs in options page fixes: - detect when browser.contextualIdentities.onRemoved is not supported diff --git a/versions/updates.json b/versions/updates.json index 6985f7e..c01a706 100644 --- a/versions/updates.json +++ b/versions/updates.json @@ -37,6 +37,10 @@ { "version": "0.5.12Alpha20190625", "update_link": "https://canvasblocker.kkapsner.de/versions/canvasblocker_beta-0.5.12Alpha20190625-an+fx.xpi" + }, + { + "version": "0.5.12Alpha20190629", + "update_link": "https://canvasblocker.kkapsner.de/versions/canvasblocker_beta-0.5.12Alpha20190629-an+fx.xpi" } ] }