Bug 1722782 - Re-enable but deprecate WEBGL_debug_renderer_info. r=lsalzman

Differential Revision: https://phabricator.services.mozilla.com/D121149
This commit is contained in:
Jeff Gilbert 2021-07-29 07:22:09 +00:00
Родитель 0edcc72b48
Коммит 9ce93546e4
5 изменённых файлов: 83 добавлений и 38 удалений

Просмотреть файл

@ -197,8 +197,14 @@ RefPtr<ClientWebGLExtensionBase> ClientWebGLContext::GetExtension(
return new ClientWebGLExtensionCompressedTextureS3TC(*this);
case WebGLExtensionID::WEBGL_compressed_texture_s3tc_srgb:
return new ClientWebGLExtensionCompressedTextureS3TC_SRGB(*this);
case WebGLExtensionID::WEBGL_debug_renderer_info:
case WebGLExtensionID::WEBGL_debug_renderer_info: {
if (callerType != dom::CallerType::System) {
JsWarning(
"WEBGL_debug_renderer_info is deprecated in Firefox and will "
"be removed. Please use RENDERER.");
}
return new ClientWebGLExtensionDebugRendererInfo(*this);
}
case WebGLExtensionID::WEBGL_debug_shaders:
return new ClientWebGLExtensionDebugShaders(*this);
case WebGLExtensionID::WEBGL_depth_texture:

Просмотреть файл

@ -31,7 +31,7 @@ var defaultExts = [
['OES_texture_half_float_linear' , [ENSURE , FORBID ]],
['OES_vertex_array_object' , [ENSURE , FORBID ]],
['WEBGL_compressed_texture_s3tc' , [MACHINE_SPECIFIC, MACHINE_SPECIFIC]],
['WEBGL_debug_renderer_info' , [FORBID , FORBID ]],
['WEBGL_debug_renderer_info' , [ENSURE , ENSURE ]],
['WEBGL_debug_shaders' , [ENSURE , ENSURE ]],
['WEBGL_depth_texture' , [MACHINE_SPECIFIC, FORBID ]],
['WEBGL_draw_buffers' , [MACHINE_SPECIFIC, FORBID ]],

Просмотреть файл

@ -53,9 +53,23 @@ SimpleTest = {
};
SpecialPowers = {
pushPrefEnv: (env, func) => {
console.log('SpecialPowers.pushPrefEnv: ' + JSON.stringify(env));
setTimeout(func, 0);
pushPrefEnv: async (env, callback = null) => {
console.log(`SpecialPowers.pushPrefEnv(${JSON.stringify(env)})`);
await new Promise(res => {
setTimeout(res, 0);
});
if (callback) {
await callback();
}
},
popPrefEnv: async (callback = null) => {
console.log('SpecialPowers.popPrefEnv()');
await new Promise(res => {
setTimeout(res, 0);
});
if (callback) {
await callback();
}
},
};
</script>

Просмотреть файл

@ -60,13 +60,17 @@ SimpleTest.waitForExplicitFinish();
return;
}
await asyncPushPrefEnv({'set': [
await SpecialPowers.pushPrefEnv({'set': [
['webgl.override-unmasked-renderer', RTX3070_R],
['webgl.override-unmasked-vendor', RTX3070_V],
]});
// -
// Initial state
// Test disabled
await SpecialPowers.pushPrefEnv({'set': [
['webgl.enable-debug-renderer-info', false],
]});
ext = gl.getExtension('WEBGL_debug_renderer_info');
ok(!ext,
@ -78,53 +82,56 @@ SimpleTest.waitForExplicitFinish();
vendor: 'Mozilla',
};
const was = getStrings();
expectJsonEqual(was, EXPECTED, 'v92 behavior');
expectJsonEqual(was, EXPECTED, 'v92 behavior w/o ext');
}
// -
// Enable extension
await SpecialPowers.popPrefEnv();
await asyncPushPrefEnv({'set': [
['webgl.enable-debug-renderer-info', true],
// -
// Test RFP
await SpecialPowers.pushPrefEnv({'set': [
['privacy.resistFingerprinting', true],
]});
ext = gl.getExtension('WEBGL_debug_renderer_info');
ok(ext, 'When pref enabled: Should have access to \'WEBGL_debug_renderer_info\'.');
{
const EXPECTED = {
renderer: RTX3070_R_SANITIZED,
vendor: 'Mozilla',
unmasked_renderer: RTX3070_R,
unmasked_vendor: RTX3070_V,
};
const was = getStrings();
expectJsonEqual(was, EXPECTED, 'v92 behavior w/ext');
}
// -
// Disable detailed RENDERER
await asyncPushPrefEnv({'set': [
['webgl.enable-renderer-query', false],
]});
ok(!ext,
'With RFP: Should not have access to \'WEBGL_debug_renderer_info\'.');
{
const EXPECTED = {
renderer: 'Mozilla',
vendor: 'Mozilla',
unmasked_renderer: RTX3070_R,
};
const was = getStrings();
expectJsonEqual(was, EXPECTED, 'RFP behavior');
}
await SpecialPowers.popPrefEnv();
// -
// Test default state (v92+)
ext = gl.getExtension('WEBGL_debug_renderer_info');
ok(ext,
'By default: Should have access to \'WEBGL_debug_renderer_info\'.');
{
const EXPECTED = {
renderer: RTX3070_R_SANITIZED,
vendor: 'Mozilla',
unmasked_renderer: RTX3070_R_SANITIZED,
unmasked_vendor: RTX3070_V,
};
const was = getStrings();
expectJsonEqual(was, EXPECTED, 'v90 behavior');
expectJsonEqual(was, EXPECTED, 'v92 behavior');
}
// -
// Sanitize even UNMASKED_RENDERER
// Test v91 behavior
await asyncPushPrefEnv({'set': [
['webgl.sanitize-unmasked-renderer', true],
await SpecialPowers.pushPrefEnv({'set': [
['webgl.enable-renderer-query', false],
]});
{
@ -138,6 +145,24 @@ SimpleTest.waitForExplicitFinish();
expectJsonEqual(was, EXPECTED, 'v91 behavior');
}
// -
// Test v90 behavior
await SpecialPowers.pushPrefEnv({'set': [
['webgl.sanitize-unmasked-renderer', false],
]});
{
const EXPECTED = {
renderer: 'Mozilla',
vendor: 'Mozilla',
unmasked_renderer: RTX3070_R,
unmasked_vendor: RTX3070_V,
};
const was = getStrings();
expectJsonEqual(was, EXPECTED, 'v90 behavior');
}
// -
ok(true, 'Test complete.');

Просмотреть файл

@ -11371,7 +11371,7 @@
- name: webgl.enable-debug-renderer-info
type: RelaxedAtomicBool
value: false
value: true
mirror: always
- name: webgl.enable-draft-extensions
@ -11495,7 +11495,7 @@
- name: webgl.sanitize-unmasked-renderer
type: RelaxedAtomicBool
value: false
value: true
mirror: always
- name: webgl.allow-immediate-queries