summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/canvas/canvas-longlived-context.js
blob: 4f059b45c28be3bf5de06001092ce6ce9a5006a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
description("This test ensures that Canvas and CanvasRenderingContext2D work correctly if the rendering context outlives the canvas element");

function dataToArray(data) {
    var result = new Array(data.length)
    for (var i = 0; i < data.length; i++)
        result[i] = data[i];
    return result;
}

function getPixel(x, y) {
    var data = context.getImageData(x,y,1,1);
    if (!data) // getImageData failed, which should never happen
        return [-1,-1,-1,-1];
    return dataToArray(data.data);
}

function pixelShouldBe(x, y, colour) {
    shouldBe("getPixel(" + [x, y] +")", "["+colour+"]");
}

function prepareCanvas() {
    var context = document.createElement("canvas").getContext("2d");
    context.fillStyle = "green";
    context.fillRect(0,0,100,100);
    return context;
}

function clobberGC(count) {
    for (var i = 0; i < 5000; ++i)
        ({a: i*i*i*0.5+"str", b: i/Math.sqrt(i)});
    if (count > 0)
        clobberGC(count-1);
}

function test() {
    context = prepareCanvas();
    clobberGC(40);
    pixelShouldBe(50, 50, [0, 128, 0, 255]);
}
test();

var successfullyParsed = true;