diff --git a/ext/src/main.ts b/ext/src/main.ts index f9c8172..078a39a 100755 --- a/ext/src/main.ts +++ b/ext/src/main.ts @@ -257,6 +257,15 @@ browser.menus.onShown.addListener(info => { */ browser.webRequest.onBeforeRequest.addListener( async details => { + await browser.tabs.executeScript(details.tabId, { + code: ` + window.isFramework = ${ + details.url === CAST_FRAMEWORK_LOADER_SCRIPT_URL}; + ` + , frameId: details.frameId + , runAt: "document_start" + }); + await browser.tabs.executeScript(details.tabId, { file: "shim/contentBridge.js" , frameId: details.frameId diff --git a/ext/src/shim/content.ts b/ext/src/shim/content.ts index 2de200f..d630174 100644 --- a/ext/src/shim/content.ts +++ b/ext/src/shim/content.ts @@ -4,10 +4,7 @@ import { CAST_LOADER_SCRIPT_URL , CAST_SCRIPT_URLS } from "../endpoints"; -const _window = (window.wrappedJSObject as any); - -_window.chrome = cloneInto({}, window); -_window.navigator.presentation = cloneInto({}, window); +(window.wrappedJSObject as any).chrome = cloneInto({}, window); /** diff --git a/ext/src/shim/contentBridge.ts b/ext/src/shim/contentBridge.ts index fc1ea08..50c7bc1 100644 --- a/ext/src/shim/contentBridge.ts +++ b/ext/src/shim/contentBridge.ts @@ -1,6 +1,19 @@ "use strict"; import { onMessageResponse, sendMessage } from "./eventMessageChannel"; +import { loadScript } from "../lib/utils"; + + +const { isFramework } + : { isFramework: boolean } = (window as any); + +/** + * Framework API library requires webcomponents for the cast + * button custom element (). + */ +if (isFramework) { + loadScript(browser.runtime.getURL("vendor/webcomponents-lite.js")); +} // Message port to background script diff --git a/ext/src/shim/index.ts b/ext/src/shim/index.ts index 9ce90d1..c7aab2c 100755 --- a/ext/src/shim/index.ts +++ b/ext/src/shim/index.ts @@ -47,12 +47,6 @@ if (document.currentScript) { isFramework = true; - /** - * Framework API library requires webcomponents for the cast - * button custom element (). - */ - loadScript(browser.runtime.getURL("vendor/webcomponents-lite.js")); - const script = loadScript(CAST_FRAMEWORK_SCRIPT_URL); script.addEventListener("load", ev => { callPageReadyFunction();