tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }