aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/api/browser.ts
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-01-16 17:54:48 -0300
committerSebastian <sebasjm@gmail.com>2022-01-16 17:55:01 -0300
commitbc817a638d4ddfff0d5f05b51453c6ca790b24ec (patch)
treeef6d62b503a163f7738ce37785b3c38ff48abb76 /packages/taler-wallet-webextension/src/api/browser.ts
parentf8ae2671c176e293843525c4fc5dd4a33653fd10 (diff)
#7120 manifest v3: first iteration working
new permission needed: scripting chrome.browserAction -> chrome.action webRequestBlocking is not possible anymore chrome.extension.getUrl -> chrome.runtime.getUrl new serviceWorkerHttpLib: using fetch new serviceWorkerCryptoWorkerFactory: using syncCryptoImpl few other minor changes still missing some other changes like migrating setTimeout to chrome.alarms api
Diffstat (limited to 'packages/taler-wallet-webextension/src/api/browser.ts')
-rw-r--r--packages/taler-wallet-webextension/src/api/browser.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/packages/taler-wallet-webextension/src/api/browser.ts b/packages/taler-wallet-webextension/src/api/browser.ts
index bc50853fb..b69a49680 100644
--- a/packages/taler-wallet-webextension/src/api/browser.ts
+++ b/packages/taler-wallet-webextension/src/api/browser.ts
@@ -1,6 +1,36 @@
+function searchForTalerLinks(): string | undefined {
+ let found;
+ found = document.querySelector("a[href^='taler://'")
+ if (found) return found.toString()
+ found = document.querySelector("a[href^='taler+http://'")
+ if (found) return found.toString()
+ return undefined
+}
+
+async function getCurrentTab() {
+ let queryOptions = { active: true, currentWindow: true };
+ let [tab] = await chrome.tabs.query(queryOptions);
+ return tab;
+}
+
+
export async function findTalerUriInActiveTab(): Promise<string | undefined> {
+ if (chrome.runtime.getManifest().manifest_version === 3) {
+ // manifest v3
+ const tab = await getCurrentTab();
+ const res = await chrome.scripting.executeScript({
+ target: {
+ tabId: tab.id!,
+ allFrames: true,
+ } as any,
+ func: searchForTalerLinks,
+ args: []
+ })
+ return res[0].result
+ }
return new Promise((resolve, reject) => {
+ //manifest v2
chrome.tabs.executeScript(
{
code: `