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.
 
 
 
 

92 lines
1.9 KiB

console.log("muffcast server v0.1");
var port = browser.runtime.connectNative("muffcast");
var waitForLoad = false;
browser.windows.getCurrent().then(function(windowInfo) {
///*
browser.windows.update(windowInfo.id, {
state: "fullscreen"
});
//*/
///*
browser.tabs.query({
currentWindow: true,
active: true
}).then(function(tabs) {
var tab = tabs[0];
browser.tabs.update(tab.id, {
url: browser.extension.getURL("splash/splash.html")
});
});
//*/
})
var sendCommand = function(message) {
browser.tabs.query({
currentWindow: true,
active: true
}).then(function(tabs) {
for (let tab of tabs) {
browser.tabs.sendMessage(
tab.id, message
).catch(function(error) {
port.postMessage(error);
});
}
});
}
/*
Listen for messages from the app.
*/
port.onMessage.addListener(function(message) {
console.log("received", message);
if (message.command) {
if (message.command == "load") {
if (message && message.url) {
browser.tabs.query({
currentWindow: true,
active: true
}).then(function(tabs) {
var tab = tabs[0];
waitForLoad = message;
if (tab.url != decodeURIComponent(message.url)) {
browser.tabs.update(tab.id, {
url: decodeURIComponent(message.url)
});
} else {
sendCommand(message);
waitForLoad = false;
}
});
}
} else
if (message.command == "stop") {
browser.tabs.query({
currentWindow: true,
active: true
}).then(function(tabs) {
var tab = tabs[0];
waitForLoad = false;
browser.tabs.update(tab.id, {
url: browser.extension.getURL("splash/splash.html")
}).then(function() {
port.postMessage("ok");
});
});
} else {
sendCommand(message);
}
}
});
browser.runtime.onMessage.addListener(function(message) {
if (message !== "loaded") {
console.log("response", message);
port.postMessage(message);
} else if (waitForLoad) {
sendCommand(waitForLoad);
waitForLoad = false;
}
})