new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
70 lines
2.9 KiB
JavaScript
70 lines
2.9 KiB
JavaScript
var uauth = {};
|
|
|
|
uauth.url = "https://binbashbanana.github.io/webretro/uauth/"; // url to use for uauth. must have cross-domain support, a trailing slash, and cannot be cross-origin isolated.
|
|
uauth.origins = ["http://localhost:8000", "http://localhost:8001", "https://binbashbanana.github.io"]; // valid origins for the response
|
|
uauth.selfSrc = document.currentScript.src;
|
|
uauth.bc = new BroadcastChannel("uauth");
|
|
uauth.log = function(w, ts) {
|
|
if (w) console.log("uauth:", w.timestamp, w.timestamp == ts, w.message);
|
|
}
|
|
|
|
// uauth modes: frame, popup, coisolated
|
|
|
|
if (!uauth.mode) uauth.mode = crossOriginIsolated ? "coisolated" : "frame";
|
|
|
|
uauth.open = function(type, exts, callback) {
|
|
if (uauth.mode == "frame" || !uauth.mode) {
|
|
// frame picker mode
|
|
|
|
let timestamp = Date.now();
|
|
let pickerFrame = document.createElement("iframe");
|
|
pickerFrame.style.display = "none";
|
|
pickerFrame.crossorigin = "anonymous"; // soon...
|
|
pickerFrame.src = uauth.url + "?timestamp=" + timestamp + "&type=" + type + "&exts=" + exts.join(",");
|
|
document.body.appendChild(pickerFrame);
|
|
|
|
function messageHandler(e) {
|
|
if (uauth.origins.includes(e.origin)) uauth.log(e.data.webretro, timestamp);
|
|
if (uauth.origins.includes(e.origin) && e.data.webretro && e.data.webretro.timestamp == timestamp) {
|
|
window.removeEventListener("message", messageHandler);
|
|
pickerFrame.removeAttribute("src");
|
|
document.body.removeChild(pickerFrame);
|
|
callback(e.data.webretro);
|
|
}
|
|
}
|
|
|
|
window.addEventListener("message", messageHandler, false);
|
|
} else if (uauth.mode == "popup") {
|
|
// popup picker mode
|
|
|
|
let timestamp = Date.now();
|
|
let pickerWindow = window.open(uauth.url + "popuppicker.html?timestamp=" + timestamp + "&type=" + type + "&exts=" + exts.join(","));
|
|
|
|
function messageHandler(e) {
|
|
if (uauth.origins.includes(e.origin)) uauth.log(e.data.webretro, timestamp);
|
|
if (uauth.origins.includes(e.origin) && e.data.webretro && e.data.webretro.timestamp == timestamp) {
|
|
window.removeEventListener("message", messageHandler);
|
|
pickerWindow.close();
|
|
callback(e.data.webretro);
|
|
}
|
|
}
|
|
|
|
window.addEventListener("message", messageHandler, false);
|
|
} else if (uauth.mode == "coisolated") {
|
|
// cross-origin isolated picker mode
|
|
|
|
let timestamp = Date.now();
|
|
let pickerWindow = window.open(uauth.url + "isolatedpicker.html?returnurl=" + encodeURIComponent(new URL("receiver.html", uauth.selfSrc).href) + "×tamp=" + timestamp + "&type=" + type + "&exts=" + exts.join(","));
|
|
|
|
function messageHandler(e) {
|
|
if (uauth.origins.includes(e.data.fwOrigin)) uauth.log(e.data.webretro, timestamp);
|
|
if (uauth.origins.includes(e.data.fwOrigin) && e.data.webretro && e.data.webretro.timestamp == timestamp) {
|
|
uauth.bc.removeEventListener("message", messageHandler);
|
|
callback(e.data.webretro);
|
|
}
|
|
}
|
|
|
|
uauth.bc.addEventListener("message", messageHandler, false);
|
|
}
|
|
};
|