mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 10:39:57 +00:00
Use connection-based messaging for popup
This commit is contained in:
@@ -363,7 +363,6 @@ function initBridge (tabId, frameId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let popupTabId;
|
|
||||||
let popupWinId;
|
let popupWinId;
|
||||||
let popupOpenerTabId;
|
let popupOpenerTabId;
|
||||||
let popupOpenerFrameId;
|
let popupOpenerFrameId;
|
||||||
@@ -397,7 +396,6 @@ async function openPopup (tabId, frameId) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Store popup details for message forwarding
|
// Store popup details for message forwarding
|
||||||
popupTabId = popup.tabs[0].id;
|
|
||||||
popupWinId = popup.id;
|
popupWinId = popup.id;
|
||||||
popupOpenerTabId = tabId;
|
popupOpenerTabId = tabId;
|
||||||
popupOpenerFrameId = frameId;
|
popupOpenerFrameId = frameId;
|
||||||
@@ -427,7 +425,6 @@ browser.windows.onRemoved.addListener(id => {
|
|||||||
subject: "shim:popupClosed"
|
subject: "shim:popupClosed"
|
||||||
});
|
});
|
||||||
|
|
||||||
popupTabId = null;
|
|
||||||
popupWinId = null;
|
popupWinId = null;
|
||||||
popupOpenerTabId = null;
|
popupOpenerTabId = null;
|
||||||
|
|
||||||
@@ -435,6 +432,19 @@ browser.windows.onRemoved.addListener(id => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extension scripts make a connection to the background script
|
||||||
|
* with a destination name to be registered as message route.
|
||||||
|
*/
|
||||||
|
browser.runtime.onConnect.addListener(port => {
|
||||||
|
messageRouter.register(port.name, message => {
|
||||||
|
port.postMessage(message);
|
||||||
|
});
|
||||||
|
port.onMessage.addListener(message => {
|
||||||
|
messageRouter.handleMessage(message);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
messageRouter.register("main", async (message, sender) => {
|
messageRouter.register("main", async (message, sender) => {
|
||||||
const tabId = sender && sender.tab.id;
|
const tabId = sender && sender.tab.id;
|
||||||
|
|
||||||
@@ -487,16 +497,6 @@ messageRouter.register("shim", (message, sender) => {
|
|||||||
, { frameId: popupOpenerFrameId })
|
, { frameId: popupOpenerFrameId })
|
||||||
});
|
});
|
||||||
|
|
||||||
messageRouter.register("popup", (message, sender) => {
|
|
||||||
if (!popupTabId) return;
|
|
||||||
|
|
||||||
try {
|
|
||||||
browser.tabs.sendMessage(popupTabId, message);
|
|
||||||
} catch (err) {
|
|
||||||
// Popup is closed
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
messageRouter.register("mirrorCast", message => {
|
messageRouter.register("mirrorCast", message => {
|
||||||
browser.tabs.sendMessage(mirrorCastTabId, message
|
browser.tabs.sendMessage(mirrorCastTabId, message
|
||||||
, { frameId: mirrorCastFrameId });
|
, { frameId: mirrorCastFrameId });
|
||||||
|
|||||||
@@ -43,29 +43,37 @@ class App extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount () {
|
componentDidMount () {
|
||||||
browser.runtime.sendMessage({
|
this.port = browser.runtime.connect({
|
||||||
|
name: "popup"
|
||||||
|
});
|
||||||
|
|
||||||
|
this.port.postMessage({
|
||||||
subject: "shim:popupReady"
|
subject: "shim:popupReady"
|
||||||
});
|
});
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener(message => {
|
this.port.onMessage.addListener(message => {
|
||||||
switch (message.subject) {
|
switch (message.subject) {
|
||||||
case "popup:populate":
|
case "popup:populate": {
|
||||||
this.setState({
|
this.setState({
|
||||||
receivers: message.data.receivers
|
receivers: message.data.receivers
|
||||||
, selectedMedia: message.data.selectedMedia
|
, selectedMedia: message.data.selectedMedia
|
||||||
});
|
}, () => {
|
||||||
|
// Get height of content without window decoration
|
||||||
|
winHeight = document.body.clientHeight + frameHeight;
|
||||||
|
|
||||||
winHeight = document.body.clientHeight + frameHeight;
|
// Adjust height to fit content
|
||||||
|
browser.windows.update(this.win.id, {
|
||||||
browser.windows.update(this.win.id, {
|
height: winHeight
|
||||||
height: winHeight
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case "popup:close":
|
case "popup:close": {
|
||||||
window.close();
|
window.close();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -75,7 +83,7 @@ class App extends Component {
|
|||||||
isLoading: true
|
isLoading: true
|
||||||
});
|
});
|
||||||
|
|
||||||
browser.runtime.sendMessage({
|
this.port.postMessage({
|
||||||
subject: "shim:selectReceiver"
|
subject: "shim:selectReceiver"
|
||||||
, data: {
|
, data: {
|
||||||
receiver
|
receiver
|
||||||
|
|||||||
Reference in New Issue
Block a user