diff --git a/gulpfile.js b/gulpfile.js index 541d4def69..5428873f59 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -65,6 +65,7 @@ function dist(browserName, manifest) { function distFirefox() { return dist('firefox', (manifest) => { delete manifest.content_security_policy; + delete manifest.optional_permissions; removeShortcuts(manifest); return manifest; }); @@ -75,7 +76,6 @@ function distOpera() { delete manifest.applications; delete manifest.content_security_policy; removeShortcuts(manifest); - moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -86,7 +86,6 @@ function distChrome() { delete manifest.content_security_policy; delete manifest.sidebar_action; delete manifest.commands._execute_sidebar_action; - moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -97,7 +96,6 @@ function distEdge() { delete manifest.content_security_policy; delete manifest.sidebar_action; delete manifest.commands._execute_sidebar_action; - moveNativeMessagingToOptional(manifest); return manifest; }); } @@ -111,14 +109,6 @@ function removeShortcuts(manifest) { } } -function moveNativeMessagingToOptional(manifest) { - const index = manifest.permissions.indexOf("nativeMessaging"); - index > -1 ? manifest.permissions.splice(index, 1) : false - manifest.optional_permissions = [ - "nativeMessaging" - ]; -} - function distSafariMas(cb) { return distSafariApp(cb, 'mas'); } diff --git a/src/manifest.json b/src/manifest.json index 42670dda10..3e50886648 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -89,7 +89,9 @@ "http://*/*", "https://*/*", "webRequest", - "webRequestBlocking", + "webRequestBlocking" + ], + "optional_permissions": [ "nativeMessaging" ], "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", diff --git a/src/popup/settings/settings.component.html b/src/popup/settings/settings.component.html index 7b1f81c162..ba69adeddd 100644 --- a/src/popup/settings/settings.component.html +++ b/src/popup/settings/settings.component.html @@ -46,7 +46,7 @@ -
+
diff --git a/src/popup/settings/settings.component.ts b/src/popup/settings/settings.component.ts index b61dedd9b2..6d5d473315 100644 --- a/src/popup/settings/settings.component.ts +++ b/src/popup/settings/settings.component.ts @@ -23,7 +23,6 @@ import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; import { StorageService } from 'jslib/abstractions/storage.service'; import { UserService } from 'jslib/abstractions/user.service'; import { VaultTimeoutService } from 'jslib/abstractions/vaultTimeout.service'; -import { resolve } from '@angular/compiler-cli/src/ngtsc/file_system'; const RateUrls = { [DeviceType.ChromeExtension]: @@ -52,6 +51,7 @@ export class SettingsComponent implements OnInit { vaultTimeoutActions: any[]; vaultTimeoutAction: string; pin: boolean = null; + supportsBiometric: boolean; biometric: boolean = false; previousVaultTimeout: number = null; @@ -102,6 +102,8 @@ export class SettingsComponent implements OnInit { const pinSet = await this.vaultTimeoutService.isPinLockSet(); this.pin = pinSet[0] || pinSet[1]; + + this.supportsBiometric = await this.platformUtilsService.supportsBiometric(); this.biometric = await this.vaultTimeoutService.isBiometricLockSet(); } @@ -208,16 +210,14 @@ export class SettingsComponent implements OnInit { } async updateBiometric() { - if (this.biometric) { + if (this.biometric && this.supportsBiometric) { // Request permission to use the optional permission for nativeMessaging if (!this.platformUtilsService.isFirefox()) { const granted = await new Promise((resolve, reject) => { - chrome.permissions.request({permissions: ['nativeMessaging']}, function(granted) { - resolve(granted); - }); + chrome.permissions.request({permissions: ['nativeMessaging']}, resolve); }); - + if (!granted) { await this.platformUtilsService.showDialog( this.i18nService.t('nativeMessaginPermissionErrorDesc'), this.i18nService.t('nativeMessaginPermissionErrorTitle'), diff --git a/src/services/browserPlatformUtils.service.ts b/src/services/browserPlatformUtils.service.ts index 38bab53b43..7f9835cd1e 100644 --- a/src/services/browserPlatformUtils.service.ts +++ b/src/services/browserPlatformUtils.service.ts @@ -290,7 +290,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService } supportsBiometric() { - return Promise.resolve(true); + return Promise.resolve(!this.isFirefox() && !this.isSafari()); } authenticateBiometric() {