51 lines
1.9 KiB
HTML
51 lines
1.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function load() {
|
|
window.context = document.body.appendChild(document.createElement("canvas")).getContext("webgl");
|
|
|
|
runTest();
|
|
}
|
|
|
|
function enableExtension(name) {
|
|
window.context.getExtension(name);
|
|
}
|
|
|
|
function test() {
|
|
let suite = InspectorTest.createAsyncSuite("Canvas.extensions");
|
|
|
|
suite.addTestCase({
|
|
name: "Canvas.extensions.enable",
|
|
description: "Check that enabling an extension notifies the frontend.",
|
|
test(resolve, reject) {
|
|
let canvases = Array.from(WI.canvasManager.canvasCollection).filter((canvas) => canvas.contextType === WI.Canvas.ContextType.WebGL);
|
|
if (!canvases.length) {
|
|
reject("Missing WebGL canvas.");
|
|
return;
|
|
}
|
|
|
|
InspectorTest.assert(canvases.length === 1, "There should only be one WebGL canvas.");
|
|
InspectorTest.assert(canvases[0].extensions.size === 0, "The canvas should have no extensions enabled after being created");
|
|
|
|
const extensionName = "WEBGL_lose_context";
|
|
canvases[0].awaitEvent(WI.Canvas.Event.ExtensionEnabled).then((event) => {
|
|
InspectorTest.expectEqual(event.data.extension, extensionName, `The newly enabled extension should be "${extensionName}".`);
|
|
InspectorTest.assert(canvases[0].extensions.size === 1, "The canvas should now have one extension.");
|
|
InspectorTest.assert(canvases[0].extensions.has(event.data.extension), `The one extension should be "${extensionName}".`);
|
|
}).then(resolve, reject);
|
|
|
|
InspectorTest.evaluateInPage(`enableExtension("${extensionName}")`);
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="load()">
|
|
<p>Test that CanvasManager is notified whenever a WebGL extension is enabled for a given canvas context.</p>
|
|
</body>
|
|
</html>
|