gdm/util: Start fingerprint verification once it's available

If fingerprint service is not replying fast enough to our async request,
authentication is started but the fingerprint service is never started.

So, in case the fingerprint type information is received after that the
authentication has been started, let's start the service.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2267>
This commit is contained in:
Marco Trevisan (Treviño) 2022-04-12 16:38:40 +02:00
parent 0d24563296
commit d5ca108a65

View File

@ -366,6 +366,13 @@ export class ShellUserVerifier extends Signals.EventEmitter {
? FingerprintReaderType.SWIPE
: FingerprintReaderType.PRESS;
this._updateDefaultService();
if (this._userVerifier &&
!this._activeServices.has(FINGERPRINT_SERVICE_NAME)) {
if (!this._hold?.isAcquired())
this._hold = new Batch.Hold();
await this._maybeStartFingerprintVerification();
}
}
_onCredentialManagerAuthenticated(credentialManager, _token) {
@ -617,11 +624,14 @@ export class ShellUserVerifier extends Signals.EventEmitter {
_beginVerification() {
this._startService(this._getForegroundService());
this._maybeStartFingerprintVerification().catch(logError);
}
async _maybeStartFingerprintVerification() {
if (this._userName &&
this._fingerprintReaderType !== FingerprintReaderType.NONE &&
!this.serviceIsForeground(FINGERPRINT_SERVICE_NAME))
this._startService(FINGERPRINT_SERVICE_NAME);
await this._startService(FINGERPRINT_SERVICE_NAME);
}
_onChoiceListQuery(client, serviceName, promptMessage, list) {