WebExtension as alternative to Chromecast
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
console.log("muffcast client v0.1");
var muffcastUrl = "http://localhost:8128"; browser.storage.local.get("muffcast").then(function(result) { muffcastUrl = result.muffcast && result.muffcast.url || muffcastUrl; })
var sendServer = function(message) { return new Promise(function(resolve, reject) { var xhttp = new XMLHttpRequest(); xhttp.open("POST", muffcastUrl, true); xhttp.addEventListener("load", function() { if (this.readyState == 4) { if (this.status == 200) { var response = this.responseText ? JSON.parse(this.responseText) : false; resolve(response); } else { reject({ status: this.status, error: this.statusText, body: this.responseText }); } } }); xhttp.setRequestHeader("content-type", "application/json"); xhttp.send(JSON.stringify(message)); }) }
var clientUpdate = function() { browser.tabs.query({ currentWindow: true, active: true }).then(function(tabs) { var tab = tabs[0]; browser.tabs.sendMessage( tab.id, { command: "update" } ); }); }
var injectCss = function(tabId) { browser.tabs.insertCSS(tabId, { code: "@font-face { font-family: 'FontAwesome';" + "src: url('" + browser.extension.getURL("fonts/fontawesome.eot") + "?v=4.7.0');" + "src: url('" + browser.extension.getURL("fonts/fontawesome.eot") + "?#iefix&v=4.7.0') format('embedded-opentype')," + "url('" + browser.extension.getURL("fonts/fontawesome.woff2") + "?v=4.7.0') format('woff2')," + "url('" + browser.extension.getURL("fonts/fontawesome.woff") + "?v=4.7.0') format('woff')," + "url('" + browser.extension.getURL("fonts/fontawesome.ttf") + "?v=4.7.0') format('truetype')," + "url('" + browser.extension.getURL("fonts/fontawesome.svg") + "?v=4.7.0#fontawesomeregular') format('svg');" + "font - weight: normal;" + "font - style: normal;}" });
browser.tabs.insertCSS(tabId, { file: "css/font-awesome.css" });
browser.tabs.insertCSS(tabId, { file: "css/overlay.css" }); }
browser.tabs.onActivated.addListener(function(tab) { injectCss(tab.id); clientUpdate(); });
browser.tabs.onUpdated.addListener(function(tabId, changeInfo) { injectCss(tabId); if (changeInfo.status === "complete") { clientUpdate(); } });
browser.runtime.onMessage.addListener(function(message) { console.log("send", message); sendServer(message).then(function(response) { console.log("response", response); if (message.command == "load") { clientUpdate(); } }) })
|