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() {