aboutsummaryrefslogtreecommitdiff
path: root/javascript
diff options
context:
space:
mode:
Diffstat (limited to 'javascript')
-rw-r--r--javascript/externs.js3
-rw-r--r--javascript/olm_post.js30
-rw-r--r--javascript/olm_pre.js1
-rw-r--r--javascript/olm_prefix.js3
-rw-r--r--javascript/olm_suffix.js23
-rw-r--r--javascript/test/megolm.spec.js10
-rw-r--r--javascript/test/olm.spec.js16
-rw-r--r--javascript/test/pk.spec.js10
8 files changed, 56 insertions, 40 deletions
diff --git a/javascript/externs.js b/javascript/externs.js
index 8ec5b02..752e937 100644
--- a/javascript/externs.js
+++ b/javascript/externs.js
@@ -1 +1,4 @@
var OLM_OPTIONS;
+var olm_exports;
+var onInitSuccess;
+var onInitFail;
diff --git a/javascript/olm_post.js b/javascript/olm_post.js
index 071021c..9e0294a 100644
--- a/javascript/olm_post.js
+++ b/javascript/olm_post.js
@@ -464,27 +464,11 @@ olm_exports["get_library_version"] = restore_stack(function() {
];
});
-// 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
- for (var olm_export in olm_exports) {
- if (olm_exports.hasOwnProperty(olm_export)) {
- Module[olm_export] = olm_exports[olm_export];
- }
- }
-}
-
-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;
-}
-
-Module.then(function() {
+Module['onRuntimeInitialized'] = function() {
OLM_ERROR = Module['_olm_error']();
-});
+ if (onInitSuccess) onInitSuccess();
+};
+
+Module['onAbort'] = function(err) {
+ if (onInitFail) onInitFail(err);
+};
diff --git a/javascript/olm_pre.js b/javascript/olm_pre.js
index 673b868..4feff97 100644
--- a/javascript/olm_pre.js
+++ b/javascript/olm_pre.js
@@ -1,4 +1,3 @@
-var olm_exports = {};
var get_random_values;
if (typeof(window) !== 'undefined') {
diff --git a/javascript/olm_prefix.js b/javascript/olm_prefix.js
new file mode 100644
index 0000000..b33dfe9
--- /dev/null
+++ b/javascript/olm_prefix.js
@@ -0,0 +1,3 @@
+var olm_exports = {};
+var onInitSuccess;
+var onInitFail;
diff --git a/javascript/olm_suffix.js b/javascript/olm_suffix.js
new file mode 100644
index 0000000..023c0a5
--- /dev/null
+++ b/javascript/olm_suffix.js
@@ -0,0 +1,23 @@
+olm_exports['init'] = function() {
+ return new Promise(function(resolve, reject) {
+ onInitSuccess = function() {
+ resolve();
+ };
+ onInitFail = function(err) {
+ reject(err);
+ };
+ Module();
+ });
+};
+
+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;
+}
+
+// Emscripten sets the module exports to be its module
+// with wrapped c functions. Clobber it with our higher
+// level wrapper class.
+module.exports = olm_exports;
diff --git a/javascript/test/megolm.spec.js b/javascript/test/megolm.spec.js
index 9d5eb72..241d4bd 100644
--- a/javascript/test/megolm.spec.js
+++ b/javascript/test/megolm.spec.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,17 +17,18 @@ limitations under the License.
"use strict";
-var Olm = require('../olm')();
+var Olm = require('../olm');
describe("megolm", function() {
var aliceSession, bobSession;
beforeEach(function(done) {
- Olm.then(function() {
+ Olm.init().then(function() {
+ aliceSession = new Olm.OutboundGroupSession();
+ bobSession = new Olm.InboundGroupSession();
+
done();
});
- aliceSession = new Olm.OutboundGroupSession();
- bobSession = new Olm.InboundGroupSession();
});
afterEach(function() {
diff --git a/javascript/test/olm.spec.js b/javascript/test/olm.spec.js
index 94fa87b..77dd712 100644
--- a/javascript/test/olm.spec.js
+++ b/javascript/test/olm.spec.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2018 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,7 +17,7 @@ limitations under the License.
"use strict";
-var Olm = require('../olm')();
+var Olm = require('../olm');
if (!Object.keys) {
Object.keys = function(o) {
@@ -33,14 +34,15 @@ describe("olm", function() {
beforeEach(function(done) {
// This should really be in a beforeAll, but jasmine-node
// doesn't support that
- Olm.then(function() {
+ debugger;
+ Olm.init().then(function() {
+ aliceAccount = new Olm.Account();
+ bobAccount = new Olm.Account();
+ aliceSession = new Olm.Session();
+ bobSession = new Olm.Session();
+
done();
});
-
- aliceAccount = new Olm.Account();
- bobAccount = new Olm.Account();
- aliceSession = new Olm.Session();
- bobSession = new Olm.Session();
});
afterEach(function() {
diff --git a/javascript/test/pk.spec.js b/javascript/test/pk.spec.js
index 9f7dbfd..007882f 100644
--- a/javascript/test/pk.spec.js
+++ b/javascript/test/pk.spec.js
@@ -16,7 +16,7 @@ limitations under the License.
"use strict";
-var Olm = require('../olm')();
+var Olm = require('../olm');
if (!Object.keys) {
Object.keys = function(o) {
@@ -30,12 +30,12 @@ describe("pk", function() {
var encryption, decryption;
beforeEach(function(done) {
- Olm.then(function() {
+ Olm.init().then(function() {
+ encryption = new Olm.PkEncryption();
+ decryption = new Olm.PkDecryption();
+
done();
});
-
- encryption = new Olm.PkEncryption();
- decryption = new Olm.PkDecryption();
});
afterEach(function () {