diff --git a/js/gdm/util.js b/js/gdm/util.js index 67255bc9e..f1c3c9149 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -281,6 +281,9 @@ var ShellUserVerifier = class { } _getIntervalForMessage(message) { + if (!message) + return 0; + // We probably could be smarter here return message.length * USER_READ_TIME; } @@ -299,6 +302,18 @@ var ShellUserVerifier = class { this._currentMessageExtraInterval = interval; } + _serviceHasPendingMessages(serviceName) { + return this._messageQueue.some(m => m.serviceName === serviceName); + } + + _filterServiceMessages(serviceName, messageType) { + // This function allows to remove queued messages for the @serviceName + // whose type has lower priority than @messageType, replacing them + // with a null message that will lead to clearing the prompt once done. + if (this._serviceHasPendingMessages(serviceName)) + this._queuePriorityMessage(serviceName, null, messageType); + } + _queueMessageTimeout() { if (this._messageQueueTimeoutId != 0) return; @@ -678,6 +693,7 @@ var ShellUserVerifier = class { const canRetry = retry && this._canRetry(); this._disconnectSignals(); + this._filterServiceMessages(serviceName, MessageType.ERROR); if (canRetry) { if (!this.hasPendingMessages) { @@ -730,6 +746,8 @@ var ShellUserVerifier = class { return; } + this._filterServiceMessages(serviceName, MessageType.ERROR); + if (this._unavailableServices.has(serviceName)) return;