2020-04-02 01:45:32 +00:00
|
|
|
import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, FLASH_ACTIVEX_CLASSID, is_swf_filename, RufflePlayer } from "./ruffle-player.js";
|
2020-03-21 01:27:59 +00:00
|
|
|
import { register_element } from "./register-element";
|
2019-08-22 01:02:43 +00:00
|
|
|
|
|
|
|
export default class RuffleObject extends RufflePlayer {
|
|
|
|
constructor(...args) {
|
|
|
|
return super(...args);
|
|
|
|
}
|
|
|
|
|
|
|
|
connectedCallback() {
|
2019-08-25 19:46:38 +00:00
|
|
|
super.connectedCallback();
|
|
|
|
|
2019-08-22 01:02:43 +00:00
|
|
|
this.params = RuffleObject.params_of(this);
|
2020-03-21 01:27:59 +00:00
|
|
|
|
2019-08-22 01:02:43 +00:00
|
|
|
//Kick off the SWF download.
|
2019-09-14 19:40:19 +00:00
|
|
|
if (this.attributes.data) {
|
|
|
|
this.stream_swf_url(this.attributes.data.value);
|
|
|
|
} else if (this.params.movie) {
|
2019-08-26 04:27:59 +00:00
|
|
|
this.stream_swf_url(this.params.movie);
|
2019-08-22 01:02:43 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-14 19:40:19 +00:00
|
|
|
get data() {
|
|
|
|
return this.attributes.data.value;
|
|
|
|
}
|
|
|
|
|
|
|
|
set data(href) {
|
|
|
|
this.attributes.data = href;
|
|
|
|
}
|
|
|
|
|
2019-08-22 01:02:43 +00:00
|
|
|
static is_interdictable(elem) {
|
2020-04-02 01:45:32 +00:00
|
|
|
if (elem.type === FLASH_MIMETYPE || elem.type === FUTURESPLASH_MIMETYPE || elem.type == FLASH7_AND_8_MIMETYPE || elem.type == FLASH_MOVIE_MIMETYPE) {
|
2020-03-21 01:27:59 +00:00
|
|
|
return true;
|
|
|
|
} else if (elem.attributes && elem.attributes.classid && elem.attributes.classid.value === FLASH_ACTIVEX_CLASSID) {
|
|
|
|
return true;
|
|
|
|
} else if ((elem.type === undefined || elem.type === "") && elem.attributes.classid === undefined) {
|
|
|
|
let params = RuffleObject.params_of(elem);
|
|
|
|
if (params && params.movie) {
|
|
|
|
return is_swf_filename(params.movie);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
2019-08-22 01:02:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static params_of(elem) {
|
|
|
|
let params = {};
|
|
|
|
|
|
|
|
for (let param of elem.children) {
|
|
|
|
if (param.constructor === HTMLParamElement) {
|
|
|
|
params[param.name] = param.value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return params;
|
|
|
|
}
|
|
|
|
|
|
|
|
static from_native_object_element(elem) {
|
2019-10-15 12:55:13 +00:00
|
|
|
let external_name = register_element("ruffle-object", RuffleObject);
|
|
|
|
let ruffle_obj = document.createElement(external_name);
|
2020-03-26 09:54:35 +00:00
|
|
|
ruffle_obj.copy_element(elem);
|
2019-08-22 01:02:43 +00:00
|
|
|
|
|
|
|
return ruffle_obj;
|
|
|
|
}
|
2020-04-02 01:45:32 +00:00
|
|
|
}
|