web: Don't polyfill with self-hosted Ruffle while extension is loading

This commit is contained in:
Daniel Jacobs 2023-03-23 16:25:54 -04:00 committed by Mike Welsh
parent f6a139235b
commit 2ced2d2300
3 changed files with 19 additions and 3 deletions

View File

@ -150,6 +150,15 @@ export const FLASH_PLUGIN = new RufflePlugin(
"ruffle.js" "ruffle.js"
); );
/**
* A fake plugin designed to allow early detection of if the Ruffle extension is in use.
*/
export const RUFFLE_EXTENSION = new RufflePlugin(
"Ruffle Extension",
"Ruffle Extension",
"ruffle.js"
);
FLASH_PLUGIN.install({ FLASH_PLUGIN.install({
type: FUTURESPLASH_MIMETYPE, type: FUTURESPLASH_MIMETYPE,
description: "Shockwave Flash", description: "Shockwave Flash",

View File

@ -199,7 +199,12 @@ export function pluginPolyfill(): void {
*/ */
export function polyfill(isExt: boolean): void { export function polyfill(isExt: boolean): void {
isExtension = isExt; isExtension = isExt;
polyfillFlashInstances(); const usingExtension =
polyfillFrames(); navigator.plugins.namedItem("Ruffle Extension")?.filename ===
initMutationObserver(); "ruffle.js";
if (isExtension || !usingExtension) {
polyfillFlashInstances();
polyfillFrames();
initMutationObserver();
}
} }

View File

@ -3,6 +3,8 @@
import { import {
installPlugin, installPlugin,
FLASH_PLUGIN, FLASH_PLUGIN,
RUFFLE_EXTENSION,
} from "ruffle-core/dist/plugin-polyfill.js"; } from "ruffle-core/dist/plugin-polyfill.js";
installPlugin(FLASH_PLUGIN); installPlugin(FLASH_PLUGIN);
installPlugin(RUFFLE_EXTENSION);