Merge pull request #38 from matrix-org/rav/handle_load_exceptions
Better handling of exceptions during loading, and import OLM_OPTIONS
This commit is contained in:
commit
2e04868c46
2 changed files with 34 additions and 16 deletions
|
@ -419,4 +419,22 @@ olm_exports["get_library_version"] = restore_stack(function() {
|
||||||
getValue(buf+2, 'i8'),
|
getValue(buf+2, 'i8'),
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
}();
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
// export the olm functions into the environment.
|
||||||
|
//
|
||||||
|
// make sure that we do this *after* populating olm_exports, so that we don't
|
||||||
|
// get a half-built window.Olm if there is an exception.
|
||||||
|
|
||||||
|
if (typeof module !== 'undefined' && module.exports) {
|
||||||
|
// node / browserify
|
||||||
|
module.exports = olm_exports;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof(window) !== 'undefined') {
|
||||||
|
// We've been imported directly into a browser. Define the global 'Olm' object.
|
||||||
|
// (we do this even if module.exports was defined, because it's useful to have
|
||||||
|
// Olm in the global scope for browserified and webpacked apps.)
|
||||||
|
window["Olm"] = olm_exports;
|
||||||
|
}
|
||||||
|
|
|
@ -2,32 +2,32 @@ var olm_exports = {};
|
||||||
var get_random_values;
|
var get_random_values;
|
||||||
var process; // Shadow the process object so that emscripten won't get
|
var process; // Shadow the process object so that emscripten won't get
|
||||||
// confused by browserify
|
// confused by browserify
|
||||||
if (typeof(global) !== 'undefined' && global["window"]) {
|
|
||||||
// We're running with browserify
|
if (typeof(window) !== 'undefined') {
|
||||||
module["exports"] = olm_exports;
|
// We've in a browser (directly, via browserify, or via webpack).
|
||||||
global["window"]["Olm"] = olm_exports;
|
|
||||||
get_random_values = function(buf) {
|
|
||||||
window.crypto.getRandomValues(buf);
|
|
||||||
};
|
|
||||||
} else if (typeof(window) !== 'undefined') {
|
|
||||||
// We've been imported directly into a browser.
|
|
||||||
window["Olm"] = olm_exports;
|
|
||||||
get_random_values = function(buf) {
|
get_random_values = function(buf) {
|
||||||
window.crypto.getRandomValues(buf);
|
window.crypto.getRandomValues(buf);
|
||||||
};
|
};
|
||||||
} else if (module["exports"]) {
|
} else if (module["exports"]) {
|
||||||
// We're running in node.
|
// We're running in node.
|
||||||
module["exports"] = olm_exports;
|
|
||||||
var nodeCrypto = require("crypto");
|
var nodeCrypto = require("crypto");
|
||||||
get_random_values = function(buf) {
|
get_random_values = function(buf) {
|
||||||
var bytes = nodeCrypto.randomBytes(buf.length);
|
var bytes = nodeCrypto.randomBytes(buf.length);
|
||||||
buf.set(bytes);
|
buf.set(bytes);
|
||||||
}
|
};
|
||||||
process = global["process"];
|
process = global["process"];
|
||||||
} else {
|
} else {
|
||||||
throw new Error("Cannot find global to attach library to");
|
throw new Error("Cannot find global to attach library to");
|
||||||
}
|
}
|
||||||
|
|
||||||
var init = function() {
|
(function() {
|
||||||
var module; // Shadow the Node 'module' object so that emscripten won't try
|
/* applications should define OLM_OPTIONS in the environment to override
|
||||||
// to fiddle with it.
|
* 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];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue