mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-10 09:39:58 +00:00
Switch to eslint and fix issues
This commit is contained in:
@@ -26,15 +26,14 @@ export interface Shim {
|
||||
}
|
||||
|
||||
|
||||
// tslint:disable-next-line:new-parens
|
||||
export default new class ShimManager {
|
||||
private activeShims = new Set<Shim>();
|
||||
|
||||
public async init () {
|
||||
public async init() {
|
||||
await this.initStatusListeners();
|
||||
}
|
||||
|
||||
public getShim (tabId: number, frameId?: number) {
|
||||
public getShim(tabId: number, frameId?: number) {
|
||||
for (const activeShim of this.activeShims) {
|
||||
if (activeShim.contentTabId === tabId) {
|
||||
if (frameId && activeShim.contentFrameId !== frameId) {
|
||||
@@ -46,7 +45,7 @@ export default new class ShimManager {
|
||||
}
|
||||
}
|
||||
|
||||
public async createShim (port: AnyPort) {
|
||||
public async createShim(port: AnyPort) {
|
||||
const shim = await (port instanceof MessagePort
|
||||
? this.createShimFromBackground(port)
|
||||
: this.createShimFromContent(port));
|
||||
@@ -59,7 +58,7 @@ export default new class ShimManager {
|
||||
this.activeShims.add(shim);
|
||||
}
|
||||
|
||||
private async createShimFromBackground (
|
||||
private async createShimFromBackground(
|
||||
contentPort: MessagePort): Promise<Shim> {
|
||||
|
||||
const shim: Shim = {
|
||||
@@ -83,7 +82,7 @@ export default new class ShimManager {
|
||||
return shim;
|
||||
}
|
||||
|
||||
private async createShimFromContent (
|
||||
private async createShimFromContent(
|
||||
contentPort: Port): Promise<Shim> {
|
||||
|
||||
if (contentPort.sender?.tab?.id === undefined
|
||||
@@ -138,7 +137,7 @@ export default new class ShimManager {
|
||||
return shim;
|
||||
}
|
||||
|
||||
private async handleContentMessage (shim: Shim, message: Message) {
|
||||
private async handleContentMessage(shim: Shim, message: Message) {
|
||||
const [ destination ] = message.subject.split(":");
|
||||
if (destination === "bridge") {
|
||||
shim.bridgePort.postMessage(message);
|
||||
@@ -164,8 +163,6 @@ export default new class ShimManager {
|
||||
throw logger.error("Shim associated with content sender missing tab/frame ID");
|
||||
}
|
||||
|
||||
const contentTab = await browser.tabs.get(shim.contentTabId);
|
||||
|
||||
try {
|
||||
const selection =
|
||||
await ReceiverSelectorManager.getSelection(
|
||||
@@ -231,8 +228,8 @@ export default new class ShimManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: If we're closing a selector, make sure it's the
|
||||
* same one that caused the session creation.
|
||||
* TODO: If we're closing a selector, make sure it's the same
|
||||
* one that caused the session creation.
|
||||
*/
|
||||
case "main:sessionCreated": {
|
||||
const selector = await ReceiverSelectorManager.getSelector();
|
||||
@@ -248,7 +245,7 @@ export default new class ShimManager {
|
||||
}
|
||||
}
|
||||
|
||||
private async initStatusListeners () {
|
||||
private async initStatusListeners() {
|
||||
StatusManager.addEventListener("serviceUp", ev => {
|
||||
for (const shim of this.activeShims) {
|
||||
shim.contentPort.postMessage({
|
||||
|
||||
@@ -14,14 +14,13 @@ interface EventMap {
|
||||
"statusUpdate": { id: string, status: ReceiverStatus };
|
||||
}
|
||||
|
||||
// tslint:disable-next-line:new-parens
|
||||
export default new class StatusManager
|
||||
extends TypedEventTarget<EventMap> {
|
||||
|
||||
private bridgePort: (Port | null) = null;
|
||||
private receivers = new Map<string, Receiver>();
|
||||
|
||||
constructor () {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
// Bind listeners
|
||||
@@ -29,13 +28,13 @@ export default new class StatusManager
|
||||
this.onBridgePortDisconnect = this.onBridgePortDisconnect.bind(this);
|
||||
}
|
||||
|
||||
public async init () {
|
||||
public async init() {
|
||||
if (!this.bridgePort) {
|
||||
this.bridgePort = await this.createBridgePort();
|
||||
}
|
||||
}
|
||||
|
||||
public *getReceivers () {
|
||||
public *getReceivers() {
|
||||
for (const [, receiver ] of this.receivers) {
|
||||
if (receiver.status && receiver.status.application
|
||||
&& receiver.status.volume) {
|
||||
@@ -44,7 +43,7 @@ export default new class StatusManager
|
||||
}
|
||||
}
|
||||
|
||||
public async stopReceiverApp (receiver: Receiver) {
|
||||
public async stopReceiverApp(receiver: Receiver) {
|
||||
if (!this.bridgePort) {
|
||||
return;
|
||||
}
|
||||
@@ -55,7 +54,7 @@ export default new class StatusManager
|
||||
});
|
||||
}
|
||||
|
||||
private async createBridgePort () {
|
||||
private async createBridgePort() {
|
||||
const bridgePort = await bridge.connect();
|
||||
bridgePort.onMessage.addListener(this.onBridgePortMessage);
|
||||
bridgePort.onDisconnect.addListener(this.onBridgePortDisconnect);
|
||||
@@ -74,7 +73,7 @@ export default new class StatusManager
|
||||
* Handles incoming bridge status messages, manages the
|
||||
* receiver list, and dispatches events.
|
||||
*/
|
||||
private onBridgePortMessage (message: Message) {
|
||||
private onBridgePortMessage(message: Message) {
|
||||
switch (message.subject) {
|
||||
case "main:serviceUp": {
|
||||
const { data: receiver } = message;
|
||||
@@ -136,7 +135,7 @@ export default new class StatusManager
|
||||
* triggered again and the timer is reset for another 10
|
||||
* seconds.
|
||||
*/
|
||||
private onBridgePortDisconnect () {
|
||||
private onBridgePortDisconnect() {
|
||||
for (const [, receiver] of this.receivers) {
|
||||
const serviceDownEvent = new CustomEvent("serviceDown", {
|
||||
detail: { id: receiver.id }
|
||||
|
||||
@@ -49,12 +49,12 @@ browser.runtime.onInstalled.addListener(async details => {
|
||||
* Sets up media overlay content script and handles toggling
|
||||
* on options change.
|
||||
*/
|
||||
async function initMediaOverlay () {
|
||||
async function initMediaOverlay() {
|
||||
logger.info("init (media overlay)");
|
||||
|
||||
let contentScript: browser.contentScripts.RegisteredContentScript;
|
||||
|
||||
async function registerMediaOverlayContentScript () {
|
||||
async function registerMediaOverlayContentScript() {
|
||||
if (!(await options.get("mediaOverlayEnabled"))) {
|
||||
return;
|
||||
}
|
||||
@@ -71,7 +71,7 @@ async function initMediaOverlay () {
|
||||
}
|
||||
}
|
||||
|
||||
async function unregisterMediaOverlayContentScript () {
|
||||
async function unregisterMediaOverlayContentScript() {
|
||||
await contentScript?.unregister();
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ async function initMediaOverlay () {
|
||||
* with the current version of the extension. If not, triggers
|
||||
* a notification with the appropriate info.
|
||||
*/
|
||||
async function notifyBridgeCompat () {
|
||||
async function notifyBridgeCompat() {
|
||||
logger.info("checking for bridge...");
|
||||
|
||||
let info: BridgeInfo;
|
||||
@@ -136,7 +136,7 @@ async function notifyBridgeCompat () {
|
||||
|
||||
let isInitialized = false;
|
||||
|
||||
async function init () {
|
||||
async function init() {
|
||||
if (isInitialized) {
|
||||
return;
|
||||
}
|
||||
@@ -193,7 +193,7 @@ async function init () {
|
||||
*/
|
||||
messaging.onConnect.addListener(async port => {
|
||||
if (port.name === "shim") {
|
||||
ShimManager.createShim(port as any);
|
||||
ShimManager.createShim(port);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import loadSender from "../lib/loadSender";
|
||||
import logger from "../lib/logger";
|
||||
import options from "../lib/options";
|
||||
|
||||
import { getMediaTypesForPageUrl, stringify } from "../lib/utils";
|
||||
import { stringify } from "../lib/utils";
|
||||
|
||||
import { ReceiverSelectionActionType
|
||||
, ReceiverSelectorMediaType } from "./receiverSelector";
|
||||
@@ -33,7 +33,7 @@ let menuIdWhitelistRecommended: MenuId;
|
||||
const whitelistChildMenuPatterns = new Map<MenuId, string>();
|
||||
|
||||
|
||||
export async function initMenus () {
|
||||
export async function initMenus() {
|
||||
logger.info("init (menus)");
|
||||
|
||||
const opts = await options.getAll();
|
||||
@@ -98,9 +98,6 @@ browser.menus.onClicked.addListener(async (info, tab) => {
|
||||
throw logger.error("Menu handler page URL not found.");
|
||||
}
|
||||
|
||||
|
||||
const availableMediaTypes = getMediaTypesForPageUrl(info.pageUrl);
|
||||
|
||||
switch (info.menuItemId) {
|
||||
case menuIdCast: {
|
||||
const selection = await ReceiverSelectorManager.getSelection(
|
||||
|
||||
@@ -20,20 +20,20 @@ const _ = browser.i18n.getMessage;
|
||||
// TODO: Figure out lifetime properly
|
||||
export default class NativeReceiverSelector extends ReceiverSelector {
|
||||
private bridgePort: (Port | null) = null;
|
||||
private wasReceiverSelected: boolean = false;
|
||||
private wasReceiverSelected = false;
|
||||
|
||||
#isOpen = false;
|
||||
|
||||
constructor () {
|
||||
constructor() {
|
||||
super();
|
||||
this.onBridgePortMessage = this.onBridgePortMessage.bind(this);
|
||||
}
|
||||
|
||||
get isOpen () {
|
||||
get isOpen() {
|
||||
return this.#isOpen;
|
||||
}
|
||||
|
||||
public async open (
|
||||
public async open(
|
||||
receivers: Receiver[]
|
||||
, defaultMediaType: ReceiverSelectorMediaType
|
||||
, availableMediaTypes: ReceiverSelectorMediaType
|
||||
@@ -86,11 +86,11 @@ export default class NativeReceiverSelector extends ReceiverSelector {
|
||||
this.#isOpen = true;
|
||||
}
|
||||
|
||||
public update (): void {
|
||||
public update(): void {
|
||||
// TODO: Implement this
|
||||
}
|
||||
|
||||
public close (): void {
|
||||
public close(): void {
|
||||
if (this.bridgePort) {
|
||||
this.bridgePort.postMessage({
|
||||
subject: "bridge:closeReceiverSelector"
|
||||
@@ -100,7 +100,7 @@ export default class NativeReceiverSelector extends ReceiverSelector {
|
||||
this.#isOpen = false;
|
||||
}
|
||||
|
||||
private async onBridgePortMessage (message: Message) {
|
||||
private async onBridgePortMessage(message: Message) {
|
||||
switch (message.subject) {
|
||||
case "main:receiverSelector/selected": {
|
||||
this.wasReceiverSelected = true;
|
||||
|
||||
@@ -24,13 +24,13 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
private defaultMediaType?: ReceiverSelectorMediaType;
|
||||
private availableMediaTypes?: ReceiverSelectorMediaType;
|
||||
|
||||
private wasReceiverSelected: boolean = false;
|
||||
private wasReceiverSelected = false;
|
||||
|
||||
private appId?: string;
|
||||
|
||||
#isOpen = false;
|
||||
|
||||
constructor () {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
// Bind methods to pass to addListener
|
||||
@@ -48,11 +48,11 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
messaging.onConnect.addListener(this.onConnect);
|
||||
}
|
||||
|
||||
get isOpen () {
|
||||
get isOpen() {
|
||||
return this.#isOpen;
|
||||
}
|
||||
|
||||
public async open (
|
||||
public async open(
|
||||
receivers: Receiver[]
|
||||
, defaultMediaType: ReceiverSelectorMediaType
|
||||
, availableMediaTypes: ReceiverSelectorMediaType
|
||||
@@ -115,7 +115,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
}
|
||||
}
|
||||
|
||||
public update (receivers: Receiver[]) {
|
||||
public update(receivers: Receiver[]) {
|
||||
this.receivers = receivers;
|
||||
this.messagePort?.postMessage({
|
||||
subject: "popup:update"
|
||||
@@ -125,7 +125,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
});
|
||||
}
|
||||
|
||||
public async close (): Promise<void> {
|
||||
public async close(): Promise<void> {
|
||||
if (this.windowId) {
|
||||
await browser.windows.remove(this.windowId);
|
||||
}
|
||||
@@ -138,7 +138,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
}
|
||||
}
|
||||
|
||||
private onConnect (port: Port) {
|
||||
private onConnect(port: Port) {
|
||||
browser.history.deleteUrl({ url: POPUP_URL });
|
||||
|
||||
if (port.name !== "popup") {
|
||||
@@ -181,7 +181,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
/**
|
||||
* Handles popup messages.
|
||||
*/
|
||||
private onPopupMessage (message: Message) {
|
||||
private onPopupMessage(message: Message) {
|
||||
switch (message.subject) {
|
||||
case "receiverSelector:selected": {
|
||||
this.wasReceiverSelected = true;
|
||||
@@ -206,7 +206,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
* Handles cancellation state where the popup window is closed
|
||||
* before a receiver is selected.
|
||||
*/
|
||||
private onWindowsRemoved (windowId: number) {
|
||||
private onWindowsRemoved(windowId: number) {
|
||||
// Only care about popup window
|
||||
if (windowId !== this.windowId) {
|
||||
return;
|
||||
@@ -234,7 +234,7 @@ export default class PopupReceiverSelector extends ReceiverSelector {
|
||||
* into focus. Doesn't apply if no window is focused
|
||||
* `WINDOW_ID_NONE` or if the popup window is re-focused.
|
||||
*/
|
||||
private onWindowsFocusChanged (windowId: number) {
|
||||
private onWindowsFocusChanged(windowId: number) {
|
||||
if (windowId !== browser.windows.WINDOW_ID_NONE
|
||||
&& windowId !== this.windowId) {
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ import NativeReceiverSelector from "./NativeReceiverSelector";
|
||||
import PopupReceiverSelector from "./PopupReceiverSelector";
|
||||
|
||||
|
||||
async function createSelector () {
|
||||
async function createSelector() {
|
||||
const type = await options.get("receiverSelectorType");
|
||||
const platformInfo = await browser.runtime.getPlatformInfo();
|
||||
|
||||
@@ -33,7 +33,7 @@ async function createSelector () {
|
||||
|
||||
let sharedSelector: ReceiverSelector;
|
||||
|
||||
async function getSelector () {
|
||||
async function getSelector() {
|
||||
if (!sharedSelector) {
|
||||
try {
|
||||
sharedSelector = await createSelector();
|
||||
@@ -56,7 +56,7 @@ async function getSelector () {
|
||||
* - Resolves to null if the selection is cancelled.
|
||||
* - Rejects if the selection fails.
|
||||
*/
|
||||
async function getSelection (
|
||||
async function getSelection(
|
||||
contextTabId: number
|
||||
, contextFrameId = 0
|
||||
, withMediaSender = false)
|
||||
@@ -119,7 +119,7 @@ async function getSelection (
|
||||
sharedSelector = await createSelector();
|
||||
|
||||
|
||||
function onReceiverChange () {
|
||||
function onReceiverChange() {
|
||||
sharedSelector.update(Array.from(StatusManager.getReceivers()));
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ async function getSelection (
|
||||
type EvParamsType =
|
||||
Parameters<typeof sharedSelector.addEventListener>[0];
|
||||
|
||||
function storeListener<T> (type: EvParamsType, fn: T) {
|
||||
function storeListener<T>(type: EvParamsType, fn: T) {
|
||||
if (type === "selected") {
|
||||
onSelected = fn;
|
||||
} else if (type === "cancelled") {
|
||||
@@ -150,7 +150,7 @@ async function getSelection (
|
||||
return fn;
|
||||
}
|
||||
|
||||
function removeListeners () {
|
||||
function removeListeners() {
|
||||
sharedSelector.removeEventListener("selected", onSelected);
|
||||
sharedSelector.removeEventListener("cancelled", onCancelled);
|
||||
sharedSelector.removeEventListener("error", onError);
|
||||
|
||||
@@ -26,7 +26,7 @@ let platform: string;
|
||||
let chromeUserAgent: string | undefined;
|
||||
let chromeUserAgentHybrid: string | undefined;
|
||||
|
||||
export async function initWhitelist () {
|
||||
export async function initWhitelist() {
|
||||
logger.info("init (whitelist)");
|
||||
|
||||
if (!platform) {
|
||||
@@ -66,7 +66,7 @@ export async function initWhitelist () {
|
||||
* as Chrome, so we should rewrite the User-Agent header
|
||||
* to reflect this on whitelisted sites.
|
||||
*/
|
||||
async function onWhitelistedBeforeSendHeaders (
|
||||
async function onWhitelistedBeforeSendHeaders(
|
||||
details: OnBeforeSendHeadersDetails) {
|
||||
|
||||
if (!details.requestHeaders) {
|
||||
@@ -100,7 +100,7 @@ export async function initWhitelist () {
|
||||
* players on other origins (like CDN domains) when the
|
||||
* main site is whitelisted.
|
||||
*/
|
||||
function onWhitelistedChildBeforeSendHeaders (
|
||||
function onWhitelistedChildBeforeSendHeaders(
|
||||
details: OnBeforeSendHeadersDetails) {
|
||||
|
||||
if (!details.requestHeaders || !details.frameAncestors) {
|
||||
@@ -137,7 +137,7 @@ function onWhitelistedChildBeforeSendHeaders (
|
||||
* We can redirect this and inject our own script to setup
|
||||
* the API shim.
|
||||
*/
|
||||
async function onBeforeCastSDKRequest (details: OnBeforeRequestDetails) {
|
||||
async function onBeforeCastSDKRequest(details: OnBeforeRequestDetails) {
|
||||
if (!details.originUrl) {
|
||||
return {};
|
||||
}
|
||||
@@ -183,7 +183,7 @@ async function onBeforeCastSDKRequest (details: OnBeforeRequestDetails) {
|
||||
}
|
||||
|
||||
|
||||
async function registerUserAgentWhitelist () {
|
||||
async function registerUserAgentWhitelist() {
|
||||
const { userAgentWhitelist
|
||||
, userAgentWhitelistEnabled } = await options.getAll();
|
||||
|
||||
@@ -209,7 +209,7 @@ async function registerUserAgentWhitelist () {
|
||||
, [ "blocking", "requestHeaders" ]);
|
||||
}
|
||||
|
||||
function unregisterUserAgentWhitelist () {
|
||||
function unregisterUserAgentWhitelist() {
|
||||
originUrlCache.length = 0;
|
||||
|
||||
browser.webRequest.onBeforeSendHeaders
|
||||
|
||||
Reference in New Issue
Block a user