mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-14 03:20:00 +00:00
Refactor extension whitelist module
This commit is contained in:
@@ -9,9 +9,6 @@ import { CAST_FRAMEWORK_LOADER_SCRIPT_URL
|
||||
, CAST_LOADER_SCRIPT_URL } from "../lib/endpoints";
|
||||
|
||||
|
||||
export async function initWhitelist () {
|
||||
logger.info("init (whitelist)");
|
||||
|
||||
// Missing on @types/firefox-webext-browser
|
||||
type OnBeforeSendHeadersDetails = Parameters<Parameters<
|
||||
typeof browser.webRequest.onBeforeSendHeaders.addListener>[0]>[0] & {
|
||||
@@ -25,9 +22,43 @@ export async function initWhitelist () {
|
||||
|
||||
const originUrlCache: string[] = [];
|
||||
|
||||
let platform: string;
|
||||
let chromeUserAgent: string | undefined;
|
||||
let chromeUserAgentHybrid: string | undefined;
|
||||
|
||||
export async function initWhitelist () {
|
||||
logger.info("init (whitelist)");
|
||||
|
||||
if (!platform) {
|
||||
// TODO: Allow hybrid UA to be configurable
|
||||
const platform = (await browser.runtime.getPlatformInfo()).os;
|
||||
const chromeUserAgent = getChromeUserAgent(platform);
|
||||
platform = (await browser.runtime.getPlatformInfo()).os;
|
||||
chromeUserAgent = getChromeUserAgent(platform);
|
||||
chromeUserAgentHybrid = getChromeUserAgent(platform, true);
|
||||
|
||||
/**
|
||||
* If a UA string can't be obtained, don't bother continuing
|
||||
* extension initialization
|
||||
*/
|
||||
if (!chromeUserAgent) {
|
||||
throw logger.error("Failed to get Chrome UA string");
|
||||
}
|
||||
}
|
||||
|
||||
// Register on first run
|
||||
await registerUserAgentWhitelist();
|
||||
|
||||
// Re-register when options change
|
||||
options.addEventListener("changed", ev => {
|
||||
const alteredOpts = ev.detail;
|
||||
|
||||
if (alteredOpts.includes("userAgentWhitelist")
|
||||
|| alteredOpts.includes("userAgentWhitelistEnabled")) {
|
||||
unregisterUserAgentWhitelist();
|
||||
registerUserAgentWhitelist();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Web apps usually only load the sender library and
|
||||
@@ -52,7 +83,7 @@ export async function initWhitelist () {
|
||||
for (const header of details.requestHeaders) {
|
||||
if (header.name === "User-Agent") {
|
||||
header.value = host?.value === "www.youtube.com"
|
||||
? getChromeUserAgent(platform, true)
|
||||
? chromeUserAgentHybrid
|
||||
: chromeUserAgent;
|
||||
break;
|
||||
}
|
||||
@@ -84,7 +115,7 @@ export async function initWhitelist () {
|
||||
for (const header of details.requestHeaders) {
|
||||
if (header.name === "User-Agent") {
|
||||
header.value = host?.value === "www.youtube.com"
|
||||
? getChromeUserAgent(platform, true)
|
||||
? chromeUserAgentHybrid
|
||||
: chromeUserAgent;
|
||||
break;
|
||||
}
|
||||
@@ -188,18 +219,3 @@ export async function initWhitelist () {
|
||||
browser.webRequest.onBeforeRequest
|
||||
.removeListener(onBeforeCastSDKRequest);
|
||||
}
|
||||
|
||||
// Register on first run
|
||||
await registerUserAgentWhitelist();
|
||||
|
||||
// Re-register when options change
|
||||
options.addEventListener("changed", ev => {
|
||||
const alteredOpts = ev.detail;
|
||||
|
||||
if (alteredOpts.includes("userAgentWhitelist")
|
||||
|| alteredOpts.includes("userAgentWhitelistEnabled")) {
|
||||
unregisterUserAgentWhitelist();
|
||||
registerUserAgentWhitelist();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user