diff options
author | David Baker <dbkr@users.noreply.github.com> | 2018-10-10 20:07:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-10 20:07:19 +0100 |
commit | 3cfcf1615dfe434e1aa10d5c904d537b159e1566 (patch) | |
tree | dc1271227d8cef2bf6a687e0b31e288c99d274d6 /javascript/olm_pre.js | |
parent | 713e9aeb4d63732f7671f9c7ac3d9c4897449583 (diff) | |
parent | 1dbb060c44423048d9782b9a9977e51cc8f43b8d (diff) |
Merge pull request #57 from matrix-org/dbkr/wasm
WebAssembly support
Diffstat (limited to 'javascript/olm_pre.js')
-rw-r--r-- | javascript/olm_pre.js | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/javascript/olm_pre.js b/javascript/olm_pre.js index ae7aba5..18d836d 100644 --- a/javascript/olm_pre.js +++ b/javascript/olm_pre.js @@ -1,10 +1,7 @@ -var olm_exports = {}; var get_random_values; -var process; // Shadow the process object so that emscripten won't get - // confused by browserify if (typeof(window) !== 'undefined') { - // We've in a browser (directly, via browserify, or via webpack). + // We're in a browser (directly, via browserify, or via webpack). get_random_values = function(buf) { window.crypto.getRandomValues(buf); }; @@ -12,7 +9,9 @@ if (typeof(window) !== 'undefined') { // We're running in node. var nodeCrypto = require("crypto"); get_random_values = function(buf) { - var bytes = nodeCrypto.randomBytes(buf.length); + // [''] syntax needed here rather than '.' to prevent + // closure compiler from mangling the import(!) + var bytes = nodeCrypto['randomBytes'](buf.length); buf.set(bytes); }; process = global["process"]; @@ -20,14 +19,30 @@ if (typeof(window) !== 'undefined') { throw new Error("Cannot find global to attach library to"); } -(function() { - /* applications should define OLM_OPTIONS in the environment to override - * emscripten module settings */ - var Module = {}; - if (typeof(OLM_OPTIONS) !== 'undefined') { - for (var key in OLM_OPTIONS) { - if (OLM_OPTIONS.hasOwnProperty(key)) { - Module[key] = OLM_OPTIONS[key]; - } +/* applications should define OLM_OPTIONS in the environment to override + * emscripten module settings + */ +if (typeof(OLM_OPTIONS) !== 'undefined') { + for (var olm_option_key in OLM_OPTIONS) { + if (OLM_OPTIONS.hasOwnProperty(olm_option_key)) { + Module[olm_option_key] = OLM_OPTIONS[olm_option_key]; } } +} + +/* The 'length' argument to Pointer_stringify doesn't work if the input + * includes characters >= 128, which makes Pointer_stringify unreliable. We + * could use it on strings which are known to be ascii, but that seems + * dangerous. Instead we add a NULL character to all of our strings and just + * use UTF8ToString. + */ +var NULL_BYTE_PADDING_LENGTH = 1; + +Module['onRuntimeInitialized'] = function() { + OLM_ERROR = Module['_olm_error'](); + if (onInitSuccess) onInitSuccess(); +}; + +Module['onAbort'] = function(err) { + if (onInitFail) onInitFail(err); +}; |