From 51023145c8e9e42af6a809712ee3257d500f141a Mon Sep 17 00:00:00 2001 From: David Wendt Date: Fri, 10 Jan 2020 22:10:43 -0500 Subject: [PATCH] Build the extension using webpack, the same as the local version. --- web/extension/webpack.config.js | 20 ++++------------ web/js-src/load-ruffle.js | 41 +++++---------------------------- 2 files changed, 11 insertions(+), 50 deletions(-) diff --git a/web/extension/webpack.config.js b/web/extension/webpack.config.js index bb2c2d1ec..7b847425e 100644 --- a/web/extension/webpack.config.js +++ b/web/extension/webpack.config.js @@ -13,31 +13,21 @@ module.exports = (env, argv) => { console.log(`Building ${mode}...`); return { - externals: /^(ruffle_web)$/i, - entry: path.resolve(__dirname, "js/index.js"), output: { path: path.resolve(__dirname, "build/dist"), filename: "ruffle.js", + chunkFilename: "core.ruffle.js", + jsonpFunction: "RufflePlayerExtensionLoader", }, mode: mode, plugins: [ - new webpack.IgnorePlugin({ - resourceRegExp: /..\/pkg\/ruffle/ - }), - new CleanWebpackPlugin({ - protectWebpackAssets: false, - cleanAfterEveryBuildPatterns: ["*.module.wasm"], - }), + new CleanWebpackPlugin(), new WasmPackPlugin({ crateDirectory: path.resolve(__dirname, ".."), - extraArgs: "--target=no-modules", + extraArgs: "--out-name=ruffle", forceMode: mode, - }), - new CopyPlugin([ - { from: "../pkg/ruffle_web.js", to: "ruffle_web.js" }, - { from: "../pkg/ruffle_web_bg.wasm", to: "ruffle_web_bg.wasm" }, - ]) + }) ] } }; diff --git a/web/js-src/load-ruffle.js b/web/js-src/load-ruffle.js index e5e834672..1e42745d3 100644 --- a/web/js-src/load-ruffle.js +++ b/web/js-src/load-ruffle.js @@ -14,8 +14,8 @@ async function fetch_ruffle() { try { //If runtime_path is defined then we are executing inside the extension - //closure and we can manually fetch the inner chunks of Ruffle here. - is_extension_running = runtime_path !== undefined; + //closure. In that case, we configure our local Webpack instance + __webpack_public_path__ = runtime_path + "dist/"; } catch (e) { //Checking an undefined closure variable usually throws ReferencError, //so we need to catch it here and continue onward. @@ -25,40 +25,11 @@ async function fetch_ruffle() { throw e; } } - - if (is_extension_running) { - //Download Ruffle from the URL the browser gives us. - let ruffle_bindings_url = runtime_path + "dist/ruffle_web.js"; - let ruffle_wasm_url = runtime_path + "dist/ruffle_web_bg.wasm"; - //We load the wasm package early so that both requests are parallelized. - //This won't be awaited by us at all. - let ruffle_wasm_request = fetch(ruffle_wasm_url); - - //One point of admin: `wasm-pack`, in no-modules mode, stores it's bindings - //straight in `window`, which we don't want. We grab whatever was in Window - //before loading in the module so we can replace what was there. - let ruffle_bindings_request = await fetch(ruffle_bindings_url); - let ruffle_bindings_src = await ruffle_bindings_request.text(); - let noconflict_wasm_bindgen = window.wasm_bindgen; - (new Function(ruffle_bindings_src))(); - let ruffle_wasm_bindgen = window.wasm_bindgen; - window.wasm_bindgen = noconflict_wasm_bindgen; - - //Next step: Actually initialize our bindings. - let ruffle_wasm_response = await ruffle_wasm_request; - let ruffle_wasm_data = await ruffle_wasm_response.arrayBuffer(); - let ruffle_bindings = await ruffle_wasm_bindgen(ruffle_wasm_data).catch(function (e) { - console.error(e); - }); - - return ruffle_wasm_bindgen.Ruffle; - } else { - //We currently assume that if we are not executing inside the extension, - //then we can use webpack to get Ruffle. - let ruffle_module = await import("../pkg/ruffle"); - return ruffle_module.Ruffle; - } + //We currently assume that if we are not executing inside the extension, + //then we can use webpack to get Ruffle. + let ruffle_module = await import("../pkg/ruffle"); + return ruffle_module.Ruffle; } let last_loaded_ruffle = null;