Default to native receiver selector on macOS

This commit is contained in:
hensm
2019-05-02 01:03:59 +01:00
committed by Matt Hensman
parent a19291f546
commit 95d9d846c5
2 changed files with 39 additions and 13 deletions

View File

@@ -7,10 +7,10 @@ import messageRouter from "./lib/messageRouter";
import { getChromeUserAgent } from "./lib/userAgents"; import { getChromeUserAgent } from "./lib/userAgents";
import { getWindowCenteredProps } from "./lib/utils"; import { getWindowCenteredProps } from "./lib/utils";
import { ReceiverSelectorMediaType import { getReceiverSelectorManager
, ReceiverSelectorSelectedEvent , ReceiverSelectorManagerType
, PopupReceiverSelectorManager , ReceiverSelectorMediaType
, NativeMacReceiverSelectorManager } from "./receiverSelectorManager"; , ReceiverSelectorSelectedEvent } from "./receiverSelectorManager";
import { Message, Receiver } from "./types"; import { Message, Receiver } from "./types";
@@ -441,6 +441,13 @@ async function onConnectShim (port: browser.runtime.Port) {
} }
const { os } = await browser.runtime.getPlatformInfo();
const receiverSelectorManager = getReceiverSelectorManager(os === "mac"
? ReceiverSelectorManagerType.NativeMac
: ReceiverSelectorManagerType.Popup);
const tabId = port.sender.tab.id; const tabId = port.sender.tab.id;
const frameId = port.sender.frameId; const frameId = port.sender.frameId;
const shimId = `${tabId}:${frameId}`; const shimId = `${tabId}:${frameId}`;
@@ -510,16 +517,16 @@ async function onConnectShim (port: browser.runtime.Port) {
} }
case "main:/sessionCreated": { case "main:/sessionCreated": {
PopupReceiverSelectorManager.close(); receiverSelectorManager.close();
break; break;
} }
case "main:/selectReceiverBegin": { case "main:/selectReceiverBegin": {
PopupReceiverSelectorManager.open( receiverSelectorManager.open(
Array.from(statusBridgeReceivers.values()) Array.from(statusBridgeReceivers.values())
, message.data.defaultMediaType); , message.data.defaultMediaType);
PopupReceiverSelectorManager.addEventListener("selected" receiverSelectorManager.addEventListener("selected"
, (ev: ReceiverSelectorSelectedEvent) => { , (ev: ReceiverSelectorSelectedEvent) => {
port.postMessage({ port.postMessage({
@@ -530,13 +537,13 @@ async function onConnectShim (port: browser.runtime.Port) {
}); });
}); });
PopupReceiverSelectorManager.addEventListener("cancelled", () => { receiverSelectorManager.addEventListener("cancelled", () => {
port.postMessage({ port.postMessage({
subject: "shim:/selectReceiverCancelled" subject: "shim:/selectReceiverCancelled"
}); });
}); });
PopupReceiverSelectorManager.addEventListener("error", () => { receiverSelectorManager.addEventListener("error", () => {
// TODO: Report errors properly // TODO: Report errors properly
port.postMessage({ port.postMessage({
subject: "shim:/selectReceiverCancelled" subject: "shim:/selectReceiverCancelled"

View File

@@ -1,13 +1,32 @@
"use strict"; "use strict";
import NativeMacReceiverSelectorManager
from "./selectorManagers/NativeMacReceiverSelectorManager";
import PopupReceiverSelectorManager
from "./selectorManagers/PopupReceiverSelectorManager";
export { ReceiverSelection export { ReceiverSelection
, ReceiverSelectorCancelledEvent , ReceiverSelectorCancelledEvent
, ReceiverSelectorErrorEvent , ReceiverSelectorErrorEvent
, ReceiverSelectorMediaType , ReceiverSelectorMediaType
, ReceiverSelectorSelectedEvent } from "./ReceiverSelectorManager"; , ReceiverSelectorSelectedEvent } from "./ReceiverSelectorManager";
export { default as NativeMacReceiverSelectorManager }
from "./selectorManagers/NativeMacReceiverSelectorManager";
export { default as PopupReceiverSelectorManager } export enum ReceiverSelectorManagerType {
from "./selectorManagers/PopupReceiverSelectorManager"; Popup
, NativeMac
}
export function getReceiverSelectorManager(
type: ReceiverSelectorManagerType) {
switch (type) {
case ReceiverSelectorManagerType.Popup: {
return PopupReceiverSelectorManager;
}
case ReceiverSelectorManagerType.NativeMac: {
return NativeMacReceiverSelectorManager;
}
}
}