wasm: Document (and rename) config.qt.module
This property can take a either a WebAssembly.Module or a promise to a module, and we don't have to specify the exact type in the property name. Pick-to: 6.6 Change-Id: Iebaf52178253afe8c93cf78bbe0853461bf48b67 Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
This commit is contained in:
parent
c2988de88d
commit
bc340abe87
@ -21,6 +21,9 @@
|
|||||||
* Called when the module has loaded.
|
* Called when the module has loaded.
|
||||||
* - entryFunction: (emscriptenConfig: object) => Promise<EmscriptenModule>
|
* - entryFunction: (emscriptenConfig: object) => Promise<EmscriptenModule>
|
||||||
* Qt always uses emscripten's MODULARIZE option. This is the MODULARIZE entry function.
|
* Qt always uses emscripten's MODULARIZE option. This is the MODULARIZE entry function.
|
||||||
|
* - module: Promise<WebAssembly.Module>
|
||||||
|
* The module to create the instance from (optional). Specifying the module allows optimizing
|
||||||
|
* use cases where several instances are created from a single WebAssembly source.
|
||||||
*
|
*
|
||||||
* @return Promise<instance: EmscriptenModule>
|
* @return Promise<instance: EmscriptenModule>
|
||||||
* The promise is resolved when the module has been instantiated and its main function has been
|
* The promise is resolved when the module has been instantiated and its main function has been
|
||||||
@ -60,11 +63,11 @@ async function qtLoad(config)
|
|||||||
const circuitBreaker = new Promise((_, reject) => { circuitBreakerReject = reject; });
|
const circuitBreaker = new Promise((_, reject) => { circuitBreakerReject = reject; });
|
||||||
|
|
||||||
// If module async getter is present, use it so that module reuse is possible.
|
// If module async getter is present, use it so that module reuse is possible.
|
||||||
if (config.qt.modulePromise) {
|
if (config.qt.module) {
|
||||||
config.instantiateWasm = async (imports, successCallback) =>
|
config.instantiateWasm = async (imports, successCallback) =>
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
const module = await config.qt.modulePromise;
|
const module = await config.qt.module;
|
||||||
successCallback(
|
successCallback(
|
||||||
await WebAssembly.instantiate(module, imports), module);
|
await WebAssembly.instantiate(module, imports), module);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -177,7 +177,7 @@ export class QtLoaderIntegrationTests
|
|||||||
// Fetch/Compile the module once; reuse for each instance. This is also if the page wants to
|
// Fetch/Compile the module once; reuse for each instance. This is also if the page wants to
|
||||||
// initiate the .wasm file download fetch as early as possible, before the browser has
|
// initiate the .wasm file download fetch as early as possible, before the browser has
|
||||||
// finished fetching and parsing testapp.js and qtloader.js
|
// finished fetching and parsing testapp.js and qtloader.js
|
||||||
const modulePromise = WebAssembly.compileStreaming(fetch('tst_qtloader_integration.wasm'));
|
const module = WebAssembly.compileStreaming(fetch('tst_qtloader_integration.wasm'));
|
||||||
|
|
||||||
const instances = await Promise.all([1, 2, 3].map(i => qtLoad({
|
const instances = await Promise.all([1, 2, 3].map(i => qtLoad({
|
||||||
qt: {
|
qt: {
|
||||||
@ -186,7 +186,7 @@ export class QtLoaderIntegrationTests
|
|||||||
width: `${i * 10}px`,
|
width: `${i * 10}px`,
|
||||||
height: `${i * 10}px`,
|
height: `${i * 10}px`,
|
||||||
})],
|
})],
|
||||||
modulePromise,
|
module,
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
// Confirm the identity of instances by querying their screen widths and heights
|
// Confirm the identity of instances by querying their screen widths and heights
|
||||||
@ -230,14 +230,26 @@ export class QtLoaderIntegrationTests
|
|||||||
assert.equal('Sample output!', accumulatedStdout);
|
assert.equal('Sample output!', accumulatedStdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async modulePromiseProvided()
|
||||||
|
{
|
||||||
|
await qtLoad({
|
||||||
|
qt: {
|
||||||
|
entryFunction: createQtAppInstance,
|
||||||
|
containerElements: [this.#testScreenContainers[0]],
|
||||||
|
module: WebAssembly.compileStreaming(
|
||||||
|
fetch('tst_qtloader_integration.wasm'))
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async moduleProvided()
|
async moduleProvided()
|
||||||
{
|
{
|
||||||
await qtLoad({
|
await qtLoad({
|
||||||
qt: {
|
qt: {
|
||||||
entryFunction: createQtAppInstance,
|
entryFunction: createQtAppInstance,
|
||||||
containerElements: [this.#testScreenContainers[0]],
|
containerElements: [this.#testScreenContainers[0]],
|
||||||
modulePromise: WebAssembly.compileStreaming(
|
module: await WebAssembly.compileStreaming(
|
||||||
await fetch('tst_qtloader_integration.wasm'))
|
fetch('tst_qtloader_integration.wasm'))
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -265,7 +277,7 @@ export class QtLoaderIntegrationTests
|
|||||||
qt: {
|
qt: {
|
||||||
entryFunction: createQtAppInstance,
|
entryFunction: createQtAppInstance,
|
||||||
containerElements: [this.#testScreenContainers[0]],
|
containerElements: [this.#testScreenContainers[0]],
|
||||||
modulePromise: Promise.reject(new Error('Failed to load')),
|
module: Promise.reject(new Error('Failed to load')),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
Loading…
Reference in New Issue
Block a user