Fix the fallback object detection.

This commit is contained in:
David Wendt 2019-10-20 11:04:22 -06:00 committed by Mike Welsh
parent 5b5aaecb83
commit 3b1ab0e987
2 changed files with 37 additions and 6 deletions

View File

@ -3,6 +3,32 @@
*/
var private_registry = {};
/**
* Lookup a previously registered custom element.
*
* @param {string} element_name The internal element name, previously used to
* register the element with the private registry.
*
* @returns {object|null} The element data in the registry, or null if there is
* no such element name registered.
*
* The returned object will have `name`, `class`, and `internal_name`
* properties listing the external name, implementing class, and internal name
* respectively.
*/
export function lookup_element(element_name) {
let data = private_registry[element_name];
if (data !== undefined) {
return {
"internal_name": element_name,
"name": data.name,
"class": data.class
};
} else {
return null;
}
}
/**
* Register a custom element.
*

View File

@ -1,5 +1,6 @@
import load_ruffle from "./load-ruffle";
import ruffle_shadow_template from "./shadow-template";
import { lookup_element } from "./register-element";
export let FLASH_MIMETYPE = "application/x-shockwave-flash";
export let FUTURESPLASH_MIMETYPE = "application/futuresplash";
@ -61,13 +62,17 @@ export class RufflePlayer extends HTMLElement {
*/
is_unused_fallback_object() {
let parent = this.parentNode;
do {
if (parent.nodeName === "RUFFLE-OBJECT") {
return true;
}
let element = lookup_element("ruffle-object");
parent = parent.parentNode;
} while (parent != document);
if (element !== null) {
do {
if (parent.nodeName === element.name) {
return true;
}
parent = parent.parentNode;
} while (parent != document);
}
return false;
}