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"
);
/**
* 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({
type: FUTURESPLASH_MIMETYPE,
description: "Shockwave Flash",

View File

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

View File

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