mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 19:45:12 +00:00
LibWeb: Add OffscreenCanvas tests
The tests cover working in Worker and some basic functionality
This commit is contained in:
parent
23b003f729
commit
fb264f120b
8 changed files with 109 additions and 0 deletions
|
@ -0,0 +1,3 @@
|
|||
Message received from worker: "{\"w\":10,\"h\":10}"
|
||||
Message received from worker: "normal normal 20px SerenitySans"
|
||||
Message received from worker: "normal normal 20px SerenitySans"
|
|
@ -0,0 +1 @@
|
|||
FAIL: NotSupportedError: (STUBBED) OffscreenCanvasRenderingContext2D::create_image_data(int, int)
|
|
@ -0,0 +1,2 @@
|
|||
1.Success: {"size":119,"type":"image/png"}
|
||||
2.Success: {"size":823,"type":"image/jpeg"}
|
|
@ -0,0 +1,3 @@
|
|||
{"w":10,"h":10}
|
||||
normal normal 20px SerenitySans
|
||||
normal normal 20px SerenitySans
|
36
Tests/LibWeb/Text/input/Worker/Worker-offscreencanvas.html
Normal file
36
Tests/LibWeb/Text/input/Worker/Worker-offscreencanvas.html
Normal file
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
asyncTest(done => {
|
||||
const workerScript = `
|
||||
self.onmessage = function(evt) {
|
||||
try{
|
||||
let canvas = new OffscreenCanvas(10, 10);
|
||||
self.postMessage(JSON.stringify({ w: canvas.width, h: canvas.height }));
|
||||
let context = canvas.getContext("2d");
|
||||
context.font = "20px SerenitySans";
|
||||
self.postMessage(context.font);
|
||||
context.font = "!!!"; // Invalid value, should be ignored.
|
||||
self.postMessage(context.font);
|
||||
self.postMessage(null);
|
||||
}catch(err){
|
||||
self.postMessage("Error: " + err);
|
||||
self.postMessage(null);
|
||||
}
|
||||
};
|
||||
`;
|
||||
const blob = new Blob([workerScript], { type: "application/javascript" });
|
||||
const workerScriptURL = URL.createObjectURL(blob);
|
||||
const worker = new Worker(workerScriptURL);
|
||||
|
||||
worker.onmessage = function (evt) {
|
||||
if (evt.data === null) {
|
||||
done();
|
||||
}
|
||||
println("Message received from worker: " + JSON.stringify(evt.data));
|
||||
};
|
||||
|
||||
// Send a message to the worker
|
||||
worker.postMessage("Hello from main script");
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
try {
|
||||
const canvas = new OffscreenCanvas(75, 75);
|
||||
const context = canvas.getContext("2d");
|
||||
const existing_image_data = context.createImageData(75, 75);
|
||||
const image_data = context.createImageData(existing_image_data);
|
||||
if (image_data.width === 75 && image_data.height === 75) {
|
||||
println("PASS");
|
||||
} else {
|
||||
println("FAIL");
|
||||
}
|
||||
} catch (err) {
|
||||
println(`FAIL: ${err}`);
|
||||
}
|
||||
});
|
||||
</script>
|
32
Tests/LibWeb/Text/input/canvas/export-offscreencanvas.html
Normal file
32
Tests/LibWeb/Text/input/canvas/export-offscreencanvas.html
Normal file
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
asyncTest(async done => {
|
||||
let testCounter = 1;
|
||||
async function testPart(part) {
|
||||
const currentTest = testCounter++;
|
||||
try {
|
||||
const result = await part();
|
||||
println(`${currentTest}.Success: ${JSON.stringify(result)}`);
|
||||
} catch (err) {
|
||||
println(`${currentTest}.Error: ${err}`);
|
||||
}
|
||||
}
|
||||
|
||||
// 1. Export a OffscreenCanvas to a PNG blob
|
||||
await testPart(async () => {
|
||||
const offscreenCanvas = new OffscreenCanvas(100, 100);
|
||||
const result = await offscreenCanvas.convertToBlob({ type: "image/png" });
|
||||
return { size: result.size, type: result.type };
|
||||
});
|
||||
|
||||
// 2. Export a OffscreenCanvas to a JPEG blob
|
||||
await testPart(async () => {
|
||||
const offscreenCanvas = new OffscreenCanvas(100, 100);
|
||||
const result = await offscreenCanvas.convertToBlob({ type: "image/jpeg" });
|
||||
return { size: result.size, type: result.type };
|
||||
});
|
||||
|
||||
done();
|
||||
});
|
||||
</script>
|
13
Tests/LibWeb/Text/input/canvas/offscreencanvas-basic.html
Normal file
13
Tests/LibWeb/Text/input/canvas/offscreencanvas-basic.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
let canvas = new OffscreenCanvas(10, 10);
|
||||
println(JSON.stringify({ w: canvas.width, h: canvas.height }));
|
||||
let context = canvas.getContext("2d");
|
||||
context.font = "20px SerenitySans";
|
||||
println(context.font);
|
||||
context.font = "!!!"; // Invalid value, should be ignored.
|
||||
println(context.font);
|
||||
});
|
||||
</script>
|
Loading…
Add table
Reference in a new issue