shellDBus: Return error on invalid app IDs

When passing an invalid or unknown app ID to FocusApp(), we currently
open the app picker and silently fail to select the desired app.
Instead of half-working like that, make it clear that the argument
was invalid by returning an appropriate error. (It's easy to get the
ID wrong, as unlike appstream/flatpak IDs, we include the ".desktop"
suffix).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/337>
This commit is contained in:
Florian Müllner 2019-01-08 22:03:13 +01:00
parent e38a416246
commit 1e2a10f83b

View File

@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported GnomeShell, ScreenSaverDBus */ /* exported GnomeShell, ScreenSaverDBus */
const { Gio, GLib, Meta } = imports.gi; const { Gio, GLib, Meta, Shell } = imports.gi;
const Config = imports.misc.config; const Config = imports.misc.config;
const ExtensionDownloader = imports.ui.extensionDownloader; const ExtensionDownloader = imports.ui.extensionDownloader;
@ -153,6 +153,15 @@ var GnomeShell = class {
return; return;
} }
const appSys = Shell.AppSystem.get_default();
if (appSys.lookup_app(id) === null) {
invocation.return_error_literal(
Gio.DBusError,
Gio.DBusError.FILE_NOT_FOUND,
`No application with ID ${id}`);
return;
}
Main.overview.selectApp(id); Main.overview.selectApp(id);
invocation.return_value(null); invocation.return_value(null);
} }