taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 848f44733e1e1a1b9215811e3949fca6b6e93968
parent 609397d95a73bdae55de41c47b19932e810d0320
Author: Florian Dold <florian.dold@gmail.com>
Date:   Fri,  1 May 2020 15:04:12 +0530

handle changing permissions better

Diffstat:
Msrc/webex/wxBackend.ts | 37++++++++++++++++++++++++++++++++-----
Mwebextension/manifest.json | 4++--
2 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/src/webex/wxBackend.ts b/src/webex/wxBackend.ts @@ -498,6 +498,7 @@ try { function headerListener( details: chrome.webRequest.WebResponseHeadersDetails, ): chrome.webRequest.BlockingResponse | undefined { + console.log("header listener"); if (chrome.runtime.lastError) { console.error(chrome.runtime.lastError); return; @@ -507,6 +508,7 @@ function headerListener( console.warn("wallet not available while handling header"); return; } + console.log("in header listener"); if (details.statusCode === 402 || details.statusCode === 202) { console.log(`got 402/202 from ${details.url}`); for (const header of details.responseHeaders || []) { @@ -572,12 +574,29 @@ function headerListener( } function setupHeaderListener(): void { + console.log("setting up header listener"); // Handlers for catching HTTP requests - chrome.webRequest.onHeadersReceived.addListener( - headerListener, - { urls: ["https://*/*", "http://*/*"] }, - ["responseHeaders", "blocking"], - ); + chrome.permissions.contains(extendedPermissions, (result: boolean) => { + if ( + chrome.webRequest.onHeadersReceived && + chrome.webRequest.onHeadersReceived.hasListener(headerListener) + ) { + chrome.webRequest.onHeadersReceived.removeListener(headerListener); + } + if (result) { + console.log("actually adding listener"); + chrome.webRequest.onHeadersReceived.addListener( + headerListener, + { urls: ["<all_urls>"] }, + ["responseHeaders", "blocking"], + ); + } + chrome.webRequest.handlerBehaviorChanged(() => { + if (chrome.runtime.lastError) { + console.error(chrome.runtime.lastError); + } + }); + }); } /** @@ -602,4 +621,12 @@ export async function wxMain(): Promise<void> { }); setupHeaderListener(); + + chrome.permissions.onAdded.addListener((perm) => { + if (chrome.runtime.lastError) { + console.error(chrome.runtime.lastError); + return; + } + setupHeaderListener(); + }); } diff --git a/webextension/manifest.json b/webextension/manifest.json @@ -4,8 +4,8 @@ "name": "GNU Taler Wallet (git)", "description": "Privacy preserving and transparent payments", "author": "GNU Taler Developers", - "version": "0.6.75", - "version_name": "0.6.0pre10", + "version": "0.6.77.1", + "version_name": "0.7.0.dev.1", "minimum_chrome_version": "51", "minimum_opera_version": "36",