summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeon Krause <lk@leonkrause.com>2018-05-10 13:30:29 +0200
committerLeon Krause <lk@leonkrause.com>2018-05-10 14:50:34 +0200
commit32eb3e1b7d2aa6010f154d8b4850357f5a11662a (patch)
tree523402c348c4bdf53cd224cb5a053bf1a3805600
parent0f930f831410bc57d0e975b4ab73715d0d034735 (diff)
Add Engine.setWebAssemblyFilenameExtension()
Some web game hosts only allow certain filename extensions. If .wasm is not allowed, this function allows overriding the WebAssembly filename extension to work around that restriction.
-rw-r--r--platform/javascript/engine.js11
1 files changed, 10 insertions, 1 deletions
diff --git a/platform/javascript/engine.js b/platform/javascript/engine.js
index e4839af433..0c1337cc3b 100644
--- a/platform/javascript/engine.js
+++ b/platform/javascript/engine.js
@@ -10,6 +10,7 @@
var DOWNLOAD_ATTEMPTS_MAX = 4;
var basePath = null;
+ var wasmFilenameExtensionOverride = null;
var engineLoadPromise = null;
var loadingFiles = {};
@@ -299,6 +300,14 @@
return !!testContext;
};
+ Engine.setWebAssemblyFilenameExtension = function(override) {
+
+ if (String(override).length === 0) {
+ throw new Error('Invalid WebAssembly filename extension override');
+ }
+ wasmFilenameExtensionOverride = String(override);
+ }
+
Engine.load = function(newBasePath) {
if (newBasePath !== undefined) basePath = getBasePath(newBasePath);
@@ -306,7 +315,7 @@
if (typeof WebAssembly !== 'object')
return Promise.reject(new Error("Browser doesn't support WebAssembly"));
// TODO cache/retrieve module to/from idb
- engineLoadPromise = loadPromise(basePath + '.wasm').then(function(xhr) {
+ engineLoadPromise = loadPromise(basePath + '.' + (wasmFilenameExtensionOverride || 'wasm')).then(function(xhr) {
return xhr.response;
});
engineLoadPromise = engineLoadPromise.catch(function(err) {