From e2c5dfc06eee6caa0638f7da40bb3b318e19995b Mon Sep 17 00:00:00 2001 From: kkapsner Date: Sun, 3 Jan 2021 21:11:17 +0100 Subject: [PATCH] added {disabled} to UNMASKED_VENDOR_WEBGL and UNMASKED_RENDERER_WEBGL to disabled the WEBGL_debug_renderer_info extension Fixes #508 --- lib/modifiedCanvasAPI.js | 40 +++++++++++++++++++++++++++++++++++++++ lib/settingDefinitions.js | 2 +- lib/webgl.js | 2 ++ releaseNotes.txt | 1 + versions/updates.json | 4 ++++ 5 files changed, 48 insertions(+), 1 deletion(-) diff --git a/lib/modifiedCanvasAPI.js b/lib/modifiedCanvasAPI.js index f78f5da..c4a9b9c 100644 --- a/lib/modifiedCanvasAPI.js +++ b/lib/modifiedCanvasAPI.js @@ -534,6 +534,46 @@ }; } }, + getExtension: { + type: "readout", + getStatus: createGetStatus(["readout", "input"]), + object: ["WebGLRenderingContext", "WebGL2RenderingContext"], + fakeGenerator: function(checker){ + return function getExtension(extensionName){ + return checkerWrapper(checker, this, arguments, function(args, check){ + const {prefs, notify, window, original} = check; + const originalValue = original.call(this, ...args); + if ( + extensionName === "WEBGL_debug_renderer_info" && + originalValue && + webgl.parameterChangeDefinition[originalValue.UNMASKED_VENDOR_WEBGL] && + webgl.parameterChangeDefinition[originalValue.UNMASKED_RENDERER_WEBGL] + ){ + const vendorDef = webgl.parameterChangeDefinition[originalValue.UNMASKED_VENDOR_WEBGL]; + const {vendorValue, vendorFaked} = vendorDef.fake(originalValue, window, prefs); + const rendererDef = webgl.parameterChangeDefinition[originalValue.UNMASKED_RENDERER_WEBGL]; + const {rendererValue, rendererFaked} = vendorDef.fake(originalValue, window, prefs); + if ( + vendorFaked && vendorValue === null && + rendererFaked && rendererValue === null + ){ + const value = null; + if (originalValue !== value){ + notify("fakedReadout"); + } + return value; + } + else { + return originalValue; + } + } + else { + return originalValue; + } + }); + }; + } + }, convertToBlob: { type: "readout", getStatus: createGetStatus("readout"), diff --git a/lib/settingDefinitions.js b/lib/settingDefinitions.js index 398b488..625d6e0 100644 --- a/lib/settingDefinitions.js +++ b/lib/settingDefinitions.js @@ -100,7 +100,7 @@ {message: "input", level: 2}, "fillText @ canvas", "strokeText @ canvas", {name: "webGL", level: 2}, - "readPixels @ canvas", "getParameter @ canvas", + "readPixels @ canvas", "getParameter @ canvas", "getExtension @ canvas", {name: "Audio-API", level: 1}, "getFloatFrequencyData @ audio", "getByteFrequencyData @ audio", "getFloatTimeDomainData @ audio", "getByteTimeDomainData @ audio", diff --git a/lib/webgl.js b/lib/webgl.js index 7caca17..8cf30a8 100644 --- a/lib/webgl.js +++ b/lib/webgl.js @@ -136,6 +136,8 @@ return false; case "{empty}": return ""; + case "{disabled}": + return null; } return settingValue; }, diff --git a/releaseNotes.txt b/releaseNotes.txt index 1487cc0..48b0a80 100644 --- a/releaseNotes.txt +++ b/releaseNotes.txt @@ -4,6 +4,7 @@ Version 1.5: new features: - added {empty}, {false} and {undefined} to webGL preference parameters (i.e. VENDOR, RENDERER, UNMASKED_VENDOR_WEBGL and UNMASKED_RENDERER_WEBGL) + - added {disabled} to UNMASKED_VENDOR_WEBGL and UNMASKED_RENDERER_WEBGL to disabled the WEBGL_debug_renderer_info extension - improved performance for protected canvas part "input" fixes: diff --git a/versions/updates.json b/versions/updates.json index fff32bc..ea04719 100644 --- a/versions/updates.json +++ b/versions/updates.json @@ -153,6 +153,10 @@ { "version": "1.5Alpha20201109", "update_link": "https://canvasblocker.kkapsner.de/versions/canvasblocker_beta-1.5Alpha20201109-an+fx.xpi" + }, + { + "version": "1.5Alpha20210103", + "update_link": "https://canvasblocker.kkapsner.de/versions/canvasblocker_beta-1.5Alpha20210103-an+fx.xpi" } ] }