59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
/**
|
|
* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
/* exported testGenerator */
|
|
var testGenerator = testSteps();
|
|
|
|
function* testSteps() {
|
|
const name = "test_wasm_recompile.js";
|
|
|
|
const objectStoreName = "Wasm";
|
|
|
|
const wasmData = { key: 1 };
|
|
|
|
// The goal of this test is to prove that stored wasm is never deserialized.
|
|
|
|
info("Installing profile");
|
|
|
|
clearAllDatabases(continueToNextStepSync);
|
|
yield undefined;
|
|
|
|
// The profile was created with a mythical build (buildId: 20180309213541,
|
|
// cpuId: X64=0x2). It contains one stored wasm module (file id 1 - bytecode
|
|
// and file id 2 - compiled/machine code). The file create_db.js in the
|
|
// package was run locally (specifically it was temporarily added to
|
|
// xpcshell-parent-process.ini and then executed:
|
|
// mach xpcshell-test dom/indexedDB/test/unit/create_db.js
|
|
installPackagedProfile("wasm_get_values_profile");
|
|
|
|
info("Opening database");
|
|
|
|
let request = indexedDB.open(name);
|
|
request.onerror = errorHandler;
|
|
request.onupgradeneeded = unexpectedSuccessHandler;
|
|
request.onsuccess = continueToNextStepSync;
|
|
yield undefined;
|
|
|
|
// success
|
|
let db = request.result;
|
|
db.onerror = errorHandler;
|
|
|
|
info("Getting wasm");
|
|
|
|
request = db
|
|
.transaction([objectStoreName])
|
|
.objectStore(objectStoreName)
|
|
.get(wasmData.key);
|
|
request.onsuccess = continueToNextStepSync;
|
|
yield undefined;
|
|
|
|
info("Verifying wasm");
|
|
|
|
let isWasmModule = request.result instanceof WebAssembly.Module;
|
|
ok(!isWasmModule, "Object is not wasm module");
|
|
|
|
finishTest();
|
|
yield undefined;
|
|
}
|