Iframe transparency verification doesn't work, so we don't do it

This commit is contained in:
Tamius Han 2025-01-22 11:25:04 +01:00
parent aa35dac108
commit 0af32d6892
2 changed files with 37 additions and 38 deletions

View File

@ -36,51 +36,51 @@ export class IframeTransparencyVerifier {
async verifyUiTransparency(windowId: number, tabDimensions: IframeVerificationData): Promise<{result: TransparencyVerificationResult, dataUrl?: string}> { console.info('Verifying UI transparency:', tabDimensions); async verifyUiTransparency(windowId: number, tabDimensions: IframeVerificationData): Promise<{result: TransparencyVerificationResult, dataUrl?: string}> { console.info('Verifying UI transparency:', tabDimensions);
const {visibleX, visibleY} = this.getVisibleMarkers(tabDimensions); // const {visibleX, visibleY} = this.getVisibleMarkers(tabDimensions);
if (!visibleX.length || !visibleY.length) { // if (!visibleX.length || !visibleY.length) {
console.warn('[transparency check] No visible elements.'); // console.warn('[transparency check] No visible elements.');
return {result: TransparencyVerificationResult.NoVisibleElements}; return {result: TransparencyVerificationResult.NoVisibleElements};
} // }
const checkPositions = this.processMarkers(visibleX, visibleY); // const checkPositions = this.processMarkers(visibleX, visibleY);
const dataUrl = await chrome.tabs.captureVisibleTab( // const dataUrl = await chrome.tabs.captureVisibleTab(
undefined, // windowId, // undefined, // windowId,
{ // {
format: "png" // format: "png"
} // }
); // );
try { // try {
const canvas = new OffscreenCanvas(tabDimensions.tab.width, tabDimensions.tab.height); // const canvas = new OffscreenCanvas(tabDimensions.tab.width, tabDimensions.tab.height);
const ctx = canvas.getContext('2d')!; // const ctx = canvas.getContext('2d')!;
const res = await fetch(dataUrl); // const res = await fetch(dataUrl);
const blob = await res.blob(); // const blob = await res.blob();
const bitmap = createImageBitmap(blob); // const bitmap = createImageBitmap(blob);
(ctx as any).drawImage(bitmap, 0, 0); // (ctx as any).drawImage(bitmap, 0, 0);
const imageData = (ctx as any).getImageData(0, 0, tabDimensions.tab.width, tabDimensions.tab.height).data; // const imageData = (ctx as any).getImageData(0, 0, tabDimensions.tab.width, tabDimensions.tab.height).data;
if (this.detectMarkers(checkPositions, tabDimensions.tab.width, imageData)) { // if (this.detectMarkers(checkPositions, tabDimensions.tab.width, imageData)) {
console.info('Verified transparency'); // console.info('Verified transparency');
return { // return {
result: TransparencyVerificationResult.Ok, // result: TransparencyVerificationResult.Ok,
dataUrl: dataUrl // dataUrl: dataUrl
}; // };
} else { // } else {
console.info('Transparency checks came back negative'); // console.info('Transparency checks came back negative');
return { // return {
result: TransparencyVerificationResult.Fail, // result: TransparencyVerificationResult.Fail,
dataUrl: dataUrl // dataUrl: dataUrl
}; // };
} // }
} catch (e) { // } catch (e) {
console.error('[transparency check] Error while checking for transparency:', e); // console.error('[transparency check] Error while checking for transparency:', e);
return {result: TransparencyVerificationResult.Error}; // return {result: TransparencyVerificationResult.Error};
} // }
} }
private getVisibleMarkers({tab, player}: IframeVerificationData) { private getVisibleMarkers({tab, player}: IframeVerificationData) {

View File

@ -50,8 +50,7 @@
], ],
"permissions": [ "permissions": [
"storage", "storage",
"scripting", "scripting"
"<all_urls>"
], ],
"host_permissions": [ "host_permissions": [
"*://*/*" "*://*/*"