зеркало из https://github.com/mozilla/gecko-dev.git
79 строки
2.7 KiB
JavaScript
79 строки
2.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests if functions calls are recorded and stored for a canvas context,
|
|
* and that their stack is successfully retrieved.
|
|
*/
|
|
|
|
function* ifTestingSupported() {
|
|
let { target, front } = yield initCallWatcherBackend(SIMPLE_CANVAS_URL);
|
|
|
|
let navigated = once(target, "navigate");
|
|
|
|
yield front.setup({
|
|
tracedGlobals: ["CanvasRenderingContext2D", "WebGLRenderingContext"],
|
|
startRecording: true,
|
|
performReload: true,
|
|
storeCalls: true
|
|
});
|
|
ok(true, "The front was setup up successfully.");
|
|
|
|
yield navigated;
|
|
ok(true, "Target automatically navigated when the front was set up.");
|
|
|
|
// Allow the content to execute some functions.
|
|
yield waitForTick();
|
|
|
|
let functionCalls = yield front.pauseRecording();
|
|
ok(functionCalls,
|
|
"An array of function call actors was sent after reloading.");
|
|
ok(functionCalls.length > 0,
|
|
"There's at least one function call actor available.");
|
|
|
|
is(functionCalls[0].type, CallWatcherFront.METHOD_FUNCTION,
|
|
"The called function is correctly identified as a method.");
|
|
is(functionCalls[0].name, "clearRect",
|
|
"The called function's name is correct.");
|
|
is(functionCalls[0].file, SIMPLE_CANVAS_URL,
|
|
"The called function's file is correct.");
|
|
is(functionCalls[0].line, 25,
|
|
"The called function's line is correct.");
|
|
|
|
is(functionCalls[0].callerPreview, "Object",
|
|
"The called function's caller preview is correct.");
|
|
is(functionCalls[0].argsPreview, "0, 0, 128, 128",
|
|
"The called function's args preview is correct.");
|
|
|
|
let details = yield functionCalls[1].getDetails();
|
|
ok(details,
|
|
"The first called function has some details available.");
|
|
|
|
is(details.stack.length, 3,
|
|
"The called function's stack depth is correct.");
|
|
|
|
is(details.stack[0].name, "fillStyle",
|
|
"The called function's stack is correct (1.1).");
|
|
is(details.stack[0].file, SIMPLE_CANVAS_URL,
|
|
"The called function's stack is correct (1.2).");
|
|
is(details.stack[0].line, 20,
|
|
"The called function's stack is correct (1.3).");
|
|
|
|
is(details.stack[1].name, "drawRect",
|
|
"The called function's stack is correct (2.1).");
|
|
is(details.stack[1].file, SIMPLE_CANVAS_URL,
|
|
"The called function's stack is correct (2.2).");
|
|
is(details.stack[1].line, 26,
|
|
"The called function's stack is correct (2.3).");
|
|
|
|
is(details.stack[2].name, "drawScene",
|
|
"The called function's stack is correct (3.1).");
|
|
is(details.stack[2].file, SIMPLE_CANVAS_URL,
|
|
"The called function's stack is correct (3.2).");
|
|
is(details.stack[2].line, 33,
|
|
"The called function's stack is correct (3.3).");
|
|
|
|
yield removeTab(target.tab);
|
|
finish();
|
|
}
|