endSessionDialog: Use registered D-Bus error

Instead of returning ad-hoc errors, register a custom error domain
and return appropriate GLib.Errors.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3159>
This commit is contained in:
Florian Müllner 2024-01-31 17:44:05 +01:00
parent 9e96e8495b
commit 8f03eec3a3
2 changed files with 14 additions and 5 deletions

View File

@ -1,4 +1,3 @@
/* eslint-disable no-unused-vars */
import GLib from 'gi://GLib';
import Gio from 'gi://Gio';
@ -27,3 +26,11 @@ function createErrorEnum(errorNames) {
}
return obj;
}
const modalDialogErrorNames = [
'UnknownType',
'GrabFailed',
];
export const ModalDialogErrors =
registerErrorDomain('ModalDialog', modalDialogErrorNames);
export const ModalDialogError = createErrorEnum(modalDialogErrorNames);

View File

@ -34,6 +34,8 @@ import * as LoginManager from '../misc/loginManager.js';
import * as ModalDialog from './modalDialog.js';
import * as UserWidget from './userWidget.js';
import {ModalDialogErrors, ModalDialogError} from '../misc/dbusErrors.js';
import {loadInterfaceXML} from '../misc/fileUtils.js';
const _ITEM_ICON_SIZE = 64;
@ -739,8 +741,8 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
this._sessionSection.list.destroy_all_children();
if (!(this._type in DialogContent)) {
invocation.return_dbus_error(
'org.gnome.Shell.ModalDialog.TypeError',
invocation.return_error_literal(ModalDialogErrors,
ModalDialogError.UNKNOWN_TYPE,
'Unknown dialog type requested');
return;
}
@ -773,8 +775,8 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
this._updateButtons();
if (!this.open(timestamp)) {
invocation.return_dbus_error(
'org.gnome.Shell.ModalDialog.GrabError',
invocation.return_error_literal(
ModalDialogError.GRAB_FAILED,
'Cannot grab pointer and keyboard');
return;
}