fune/devtools/server/tests/unit/test_frameactor_wasm-01.js
Michael Brennan 8229796378 Bug 1325989 - Resolve ESLint issues in devtools/server/tests/unit. r=jryans
--HG--
extra : rebase_source : 855f1da9fc88af46e8be78c94762a90df29cb75f
2017-03-18 12:26:05 +01:00

70 lines
2.1 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/* eslint-disable no-shadow */
"use strict";
/**
* Verify that wasm frame(s) can be requested from the client.
*/
var gDebuggee;
var gClient;
var gThreadClient;
function run_test() {
if (typeof WebAssembly == "undefined") {
// wasm is not enabled for this platform
return;
}
initTestDebuggerServer();
gDebuggee = addTestGlobal("test-stack");
gClient = new DebuggerClient(DebuggerServer.connectPipe());
gClient.connect().then(function () {
attachTestTabAndResume(
gClient, "test-stack",
function (response, tabClient, threadClient) {
gThreadClient = threadClient;
gThreadClient.reconfigure({ observeAsmJS: true }, function (response) {
do_check_eq(!!response.error, false);
test_pause_frame();
});
});
});
do_test_pending();
}
function test_pause_frame() {
gThreadClient.addOneTimeListener("paused", function (event, packet) {
gThreadClient.getFrames(0, null, function (frameResponse) {
do_check_eq(frameResponse.frames.length, 4);
let wasmFrame = frameResponse.frames[1];
do_check_eq(wasmFrame.type, "wasmcall");
do_check_eq(wasmFrame.this, undefined);
let location = wasmFrame.where;
do_check_eq(location.line > 0, true);
do_check_eq(location.column > 0, true);
do_check_eq(location.source.url.endsWith(" > wasm"), true);
finishClient(gClient);
});
});
/* eslint-disable comma-spacing, max-len */
gDebuggee.eval("(" + function () {
// WebAssembly bytecode was generated by running:
// js -e 'print(wasmTextToBinary("(module(import \"a\" \"b\")(func(export \"c\")call 0))"))'
let m = new WebAssembly.Module(new Uint8Array([
0,97,115,109,1,0,0,0,1,132,128,128,128,0,1,96,0,0,2,135,128,128,128,0,1,1,97,1,
98,0,0,3,130,128,128,128,0,1,0,6,129,128,128,128,0,0,7,133,128,128,128,0,1,1,99,
0,1,10,138,128,128,128,0,1,132,128,128,128,0,0,16,0,11
]));
let i = new WebAssembly.Instance(m, {a: {b: () => {
debugger;
}}});
i.exports.c();
} + ")()");
}