"use strict"; import defaultOptions from "../defaultOptions"; import loadSender from "../lib/loadSender"; import options from "../lib/options"; import { getChromeUserAgent } from "../lib/userAgents"; import { getMediaTypesForPageUrl, stringify } from "../lib/utils"; import { CAST_FRAMEWORK_LOADER_SCRIPT_URL , CAST_LOADER_SCRIPT_URL } from "../lib/endpoints"; import { ReceiverSelectorMediaType } from "./receiverSelector"; import ReceiverSelectorManager from "./receiverSelector/ReceiverSelectorManager"; import ShimManager from "./ShimManager"; import StatusManager from "./StatusManager"; const _ = browser.i18n.getMessage; browser.runtime.onInstalled.addListener(async details => { switch (details.reason) { // Set default options case "install": { await options.setAll(defaultOptions); // Call after default options have been set init(); break; } // Set newly added options case "update": { await options.update(defaultOptions); break; } } }); function initBrowserAction () { console.info("fx_cast (Debug): init (browser action)"); /*browser.browserAction.disable(); function onServiceChange () { if (StatusManager.getReceivers().length) { browser.browserAction.enable(); } else { browser.browserAction.disable(); } } StatusManager.addEventListener("serviceUp", onServiceChange); StatusManager.addEventListener("serviceDown", onServiceChange);*/ /** * When the browser action is clicked, open a receiver * selector and load a sender for the response. The * mirroring sender is loaded into the current tab at the * top-level frame. */ browser.browserAction.onClicked.addListener(async tab => { const selection = await ReceiverSelectorManager.getSelection(tab.id); if (selection) { loadSender({ tabId: tab.id , frameId: 0 , selection }); } }); } async function initMenus () { console.info("fx_cast (Debug): init (menus)"); const URL_PATTERN_HTTP = "http://*/*"; const URL_PATTERN_HTTPS = "https://*/*"; const URL_PATTERN_FILE = "file://*/*"; const URL_PATTERNS_REMOTE = [ URL_PATTERN_HTTP, URL_PATTERN_HTTPS ]; const URL_PATTERNS_ALL = [ ...URL_PATTERNS_REMOTE, URL_PATTERN_FILE ]; type MenuId = string | number; let menuIdCast: MenuId; let menuIdMediaCast: MenuId; let menuIdWhitelist: MenuId; let menuIdWhitelistRecommended: MenuId; const whitelistChildMenuPatterns = new Map(); const opts = await options.getAll(); // Global "Cast..." menu item menuIdCast = await browser.menus.create({ contexts: [ "browser_action", "page", "tools_menu" ] , title: _("contextCast") }); //