diff options
Diffstat (limited to 'dom/indexedDB/test/unit/test_wasm_get_values.js')
-rw-r--r-- | dom/indexedDB/test/unit/test_wasm_get_values.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/dom/indexedDB/test/unit/test_wasm_get_values.js b/dom/indexedDB/test/unit/test_wasm_get_values.js new file mode 100644 index 0000000000..676cb1662b --- /dev/null +++ b/dom/indexedDB/test/unit/test_wasm_get_values.js @@ -0,0 +1,59 @@ +/** + * 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; +} |