diff --git a/ext/src/background/menus.ts b/ext/src/background/menus.ts index 5394973..ad5b912 100644 --- a/ext/src/background/menus.ts +++ b/ext/src/background/menus.ts @@ -32,7 +32,6 @@ let menuIdWhitelistRecommended: MenuId; const whitelistChildMenuPatterns = new Map(); - export async function initMenus() { logger.info("init (menus)"); @@ -90,7 +89,6 @@ browser.menus.onClicked.addListener(async (info, tab) => { return; } - if (tab?.id === undefined) { throw logger.error("Menu handler tab ID not found."); } @@ -192,7 +190,6 @@ browser.menus.onShown.addListener(async info => { return; } - /** * If page URL doesn't exist, we're not on a page and have * nothing to whitelist, so disable the menu and return. @@ -206,7 +203,6 @@ browser.menus.onShown.addListener(async info => { return; } - const url = new URL(info.pageUrl); const urlHasOrigin = url.origin !== "null"; @@ -224,13 +220,11 @@ browser.menus.onShown.addListener(async info => { return; } - // Enable the whitelist menu browser.menus.update(menuIdWhitelist, { enabled: true }); - for (const [ menuId ] of whitelistChildMenuPatterns) { // Clear all page-specific temporary menus if (menuId !== menuIdWhitelistRecommended) { @@ -240,7 +234,6 @@ browser.menus.onShown.addListener(async info => { whitelistChildMenuPatterns.delete(menuId); } - // If there is more than one subdomain, get the base domain const baseDomain = (url.hostname.match(/\./g) || []).length > 1 ? url.hostname.substring(url.hostname.indexOf(".") + 1) @@ -254,7 +247,6 @@ browser.menus.onShown.addListener(async info => { const patternWildcardSubdomain = `${url.protocol}//*.${baseDomain}/*`; const patternWildcardProtocolAndSubdomain = `*://*.${baseDomain}/*`; - // Update recommended menu item browser.menus.update(menuIdWhitelistRecommended, { title: _("contextAddToWhitelistRecommended", patternRecommended) @@ -274,7 +266,6 @@ browser.menus.onShown.addListener(async info => { whitelistSearchMenuId, patternSearch); } - /** * Split URL path into segments and add menu items for each * partial path as the segments are removed. @@ -308,7 +299,6 @@ browser.menus.onShown.addListener(async info => { } } - const wildcardProtocolMenuId = browser.menus.create({ title: _("contextAddToWhitelistAdvancedAdd" , patternWildcardProtocol) diff --git a/ext/src/lib/TypedEventTarget.ts b/ext/src/lib/TypedEventTarget.ts index b64ff7a..fc7d2fd 100644 --- a/ext/src/lib/TypedEventTarget.ts +++ b/ext/src/lib/TypedEventTarget.ts @@ -4,6 +4,9 @@ interface TypedEvents { [key: string]: any; } +/** + * Provides a typed interface to EventTarget objects. + */ export class TypedEventTarget extends EventTarget { // @ts-ignore public addEventListener( diff --git a/ext/src/lib/TypedMessagePort.ts b/ext/src/lib/TypedMessagePort.ts index 0d0f0b5..de317ae 100644 --- a/ext/src/lib/TypedMessagePort.ts +++ b/ext/src/lib/TypedMessagePort.ts @@ -1,5 +1,8 @@ "use strict"; +/** + * Provides a typed interface to MessagePort objects. + */ export interface TypedMessagePort extends MessagePort { postMessage(message: T, transfer: Transferable[]): void; postMessage(message: T, options?: PostMessageOptions): void; diff --git a/ext/src/lib/TypedPort.ts b/ext/src/lib/TypedPort.ts index 5b23f3d..ebd96d1 100644 --- a/ext/src/lib/TypedPort.ts +++ b/ext/src/lib/TypedPort.ts @@ -1,7 +1,7 @@ "use strict"; /** - * Allows typed access to a runtime.Port object. + * Provides a typed interface to runtime.Port objects. */ export interface TypedPort extends Omit { const applicationName = await options.get("bridgeApplicationName"); const bridgePort = nativeMessaging.connectNative(applicationName) as @@ -47,6 +44,12 @@ export interface BridgeInfo { export class BridgeConnectionError extends Error {} export class BridgeTimedOutError extends Error {} +/** + * Creates a temporary bridge to query the version info, + * compares the version to the extension version using semver + * rules to determine compatiblity, then returns a + * BridgeInfo object. + */ const getInfo = () => new Promise(async (resolve, reject) => { const applicationName = await options.get("bridgeApplicationName"); if (!applicationName) { diff --git a/ext/src/lib/endpoints.ts b/ext/src/lib/endpoints.ts index 97d0161..ecb2bd7 100644 --- a/ext/src/lib/endpoints.ts +++ b/ext/src/lib/endpoints.ts @@ -1,33 +1,32 @@ "use strict"; /** - * Cast sender API loader script URL. + * Cast Chrome Sender SDK loader script. * - * Since the actual cast sender API script is hosted locally - * within Chrome, this script just acts a loader script for - * the real script whilst also doing some UA string - * checking. + * Since the actual SDK script is hosted locally within Chrome, + * this script just acts a loader script whilst also doing some + * UA string checking. */ export const CAST_LOADER_SCRIPT_URL = "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"; /** - * Framework API loader script URL. + * Cast Chrome Sender Framework API loader script. * * Same URL as the usual loader script, but the additional * search parameter is checked from within the script and * the framework API script is conditionally loaded in - * addition to the regular API script. + * addition to the regular SDK script. */ export const CAST_FRAMEWORK_LOADER_SCRIPT_URL = `${CAST_LOADER_SCRIPT_URL}?loadCastFramework=1`; /** - * Cast API script URLs. + * Cast extension URLs. * * Cast functionality in Chrome was previously provided by - * an extension. The cast API script is still provided via - * chrome-extension URLs for compatibility reasons. + * an extension. The cast SDK scripts are still provided via + * chrome-extension: URLs for compatibility reasons (?). */ export const CAST_SCRIPT_URLS = [ "chrome-extension://pkedcjkdefgpdelpbcmbmeomcjbeemfm/cast_sender.js" @@ -35,11 +34,11 @@ export const CAST_SCRIPT_URLS = [ ]; /** - * Framework API script URL. + * Cast Chrome Sender Framework API script. * - * Unlike the basic cast sender API, the framework API is - * not hosted locally within Chrome and is the only script - * fetched directly from Google servers. + * The Cast Application Framework (CAF) is implemented as a + * wrapper around the base SDK, and ditributed remotely, as + * opposed to within the cast extension. */ export const CAST_FRAMEWORK_SCRIPT_URL = "https://www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js";