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

7 years ago
  1. console.log("muffcast server v0.1");
  2. var port = browser.runtime.connectNative("muffcast");
  3. var waitForLoad = false;
  4. browser.windows.getCurrent().then(function(windowInfo) {
  5. ///*
  6. browser.windows.update(windowInfo.id, {
  7. state: "fullscreen"
  8. });
  9. //*/
  10. ///*
  11. browser.tabs.query({
  12. currentWindow: true,
  13. active: true
  14. }).then(function(tabs) {
  15. var tab = tabs[0];
  16. browser.tabs.update(tab.id, {
  17. url: browser.extension.getURL("splash/splash.html")
  18. });
  19. });
  20. //*/
  21. })
  22. var sendCommand = function(message) {
  23. browser.tabs.query({
  24. currentWindow: true,
  25. active: true
  26. }).then(function(tabs) {
  27. for (let tab of tabs) {
  28. browser.tabs.sendMessage(
  29. tab.id, message
  30. ).catch(function(error) {
  31. port.postMessage(error);
  32. });
  33. }
  34. });
  35. }
  36. /*
  37. Listen for messages from the app.
  38. */
  39. port.onMessage.addListener(function(message) {
  40. console.log("received", message);
  41. if (message.command) {
  42. if (message.command == "load") {
  43. if (message && message.url) {
  44. browser.tabs.query({
  45. currentWindow: true,
  46. active: true
  47. }).then(function(tabs) {
  48. var tab = tabs[0];
  49. waitForLoad = message;
  50. if (tab.url != decodeURIComponent(message.url)) {
  51. browser.tabs.update(tab.id, {
  52. url: decodeURIComponent(message.url)
  53. });
  54. } else {
  55. sendCommand(message);
  56. waitForLoad = false;
  57. }
  58. });
  59. }
  60. } else
  61. if (message.command == "stop") {
  62. browser.tabs.query({
  63. currentWindow: true,
  64. active: true
  65. }).then(function(tabs) {
  66. var tab = tabs[0];
  67. waitForLoad = false;
  68. browser.tabs.update(tab.id, {
  69. url: browser.extension.getURL("splash/splash.html")
  70. }).then(function() {
  71. port.postMessage("ok");
  72. });
  73. });
  74. } else {
  75. sendCommand(message);
  76. }
  77. }
  78. });
  79. browser.runtime.onMessage.addListener(function(message) {
  80. if (message !== "loaded") {
  81. console.log("response", message);
  82. port.postMessage(message);
  83. } else if (waitForLoad) {
  84. sendCommand(waitForLoad);
  85. waitForLoad = false;
  86. }
  87. })