"use strict"; import defaultOptions from "../defaultOptions"; import loadSender from "../lib/loadSender"; import logger from "../lib/logger"; import messaging from "../lib/messaging"; import options from "../lib/options"; import bridge from "../lib/bridge"; 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 { ReceiverSelectionActionType , 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; } } }); async function initBrowserAction () { logger.info("init (browser action)"); /** * 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 => { if (tab.id === undefined) { throw logger.error("Tab ID not found in browser action handler."); } const selection = await ReceiverSelectorManager.getSelection(tab.id); if (selection) { loadSender({ tabId: tab.id , frameId: 0 , selection }); } }); } async function initMenus () { logger.info("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 = browser.menus.create({ contexts: [ "browser_action", "page", "tools_menu" ] , title: _("contextCast") }); //