test_wasm_put_get_values.js (1748B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 /* exported testGenerator */ 7 var testGenerator = testSteps(); 8 9 function* testSteps() { 10 const name = this.window 11 ? window.location.pathname 12 : "test_wasm_put_get_values.js"; 13 14 const objectStoreName = "Wasm"; 15 16 const wasmData = { key: 1, value: null }; 17 18 if (!isWasmSupported()) { 19 finishTest(); 20 return; 21 } 22 23 // js -e 'print(wasmTextToBinary(`(module (func (export "run") (result i32) (i32.const 13)))`))' 24 // prettier-ignore 25 let binary = new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,127,3,2,1,0,7,7,1,3,114,117,110,0,0,10,6,1,4,0,65,13,11]); 26 27 wasmData.value = getWasmModule(binary); 28 29 info("Opening database"); 30 31 let request = indexedDB.open(name); 32 request.onerror = errorHandler; 33 request.onupgradeneeded = continueToNextStepSync; 34 request.onsuccess = unexpectedSuccessHandler; 35 yield undefined; 36 37 // upgradeneeded 38 request.onupgradeneeded = unexpectedSuccessHandler; 39 request.onsuccess = continueToNextStepSync; 40 41 info("Creating objectStore"); 42 43 request.result.createObjectStore(objectStoreName); 44 45 yield undefined; 46 47 // success 48 let db = request.result; 49 db.onerror = errorHandler; 50 51 info("Testing failure to store wasm"); 52 53 let objectStore = db 54 .transaction([objectStoreName], "readwrite") 55 .objectStore(objectStoreName); 56 57 // storing a wasm module in IDB should now fail 58 let failed = false; 59 try { 60 objectStore.add(wasmData.value, wasmData.key); 61 } catch (err) { 62 failed = true; 63 ok(err instanceof DOMException, "caught right error type"); 64 is(err.name, "DataCloneError", "caught right error name"); 65 } 66 ok(failed, "error was thrown"); 67 68 finishTest(); 69 }