Files
openserp/core/browser/profile_surface_test.js

67 lines
2.7 KiB
JavaScript

async () => {
const workerData = await new Promise((resolve) => {
try {
const source = [
"self.onmessage = () => {",
"let webGLVendor = '';",
"let webGLRenderer = '';",
"try {",
"const canvas = typeof OffscreenCanvas !== 'undefined' ? new OffscreenCanvas(1, 1) : null;",
"const gl = canvas ? (canvas.getContext('webgl') || canvas.getContext('experimental-webgl') || canvas.getContext('webgl2')) : null;",
"const debugInfo = gl && gl.getExtension('WEBGL_debug_renderer_info');",
"if (gl && debugInfo) {",
"webGLVendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL) || '';",
"webGLRenderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) || '';",
"}",
"} catch (_) {}",
"self.postMessage({",
"userAgent: self.navigator.userAgent || '',",
"platform: self.navigator.platform || '',",
"navigatorLanguages: Array.from(self.navigator.languages || []),",
"timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || '',",
"webGLVendor,",
"webGLRenderer,",
"});",
"};",
].join("\n");
const blob = new Blob([source], { type: "application/javascript" });
const url = URL.createObjectURL(blob);
const worker = new Worker(url);
worker.onmessage = (event) => {
resolve(event.data || {});
worker.terminate();
URL.revokeObjectURL(url);
};
worker.onerror = () => {
resolve({});
worker.terminate();
URL.revokeObjectURL(url);
};
worker.postMessage("run");
} catch (_) {
resolve({});
}
});
return {
userAgent: navigator.userAgent || "",
platform: navigator.userAgentData ? (navigator.userAgentData.platform || "") : "",
navigatorPlatform: navigator.platform || "",
navigatorLanguages: Array.from(navigator.languages || []),
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || "",
locale: Intl.DateTimeFormat().resolvedOptions().locale || "",
webdriverType: typeof navigator.webdriver,
webdriverOwnPropPresent: Object.getOwnPropertyNames(navigator).includes("webdriver"),
workerUserAgent: workerData.userAgent || "",
workerPlatform: workerData.platform || "",
workerNavigatorLangs: Array.from(workerData.navigatorLanguages || []),
workerTimezone: workerData.timezone || "",
workerWebGLVendor: workerData.webGLVendor || "",
workerWebGLRenderer: workerData.webGLRenderer || "",
innerHeight: window.innerHeight || 0,
outerHeight: window.outerHeight || 0,
screenHeight: window.screen ? (window.screen.height || 0) : 0,
screenAvailHeight: window.screen ? (window.screen.availHeight || 0) : 0,
};
}