extensionUtils: Slightly optimize current extension lookup

When looking for a directory name that matches the extension UUID,
we can just as well use GLib's dirname()/basename() functions
instead of wrapping the path in a GFile.

We also know that the original path corresponds to a regular file
and not a directory, so rearrange the loop to avoid a lookup that
is guaranteed to fail.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2832>
This commit is contained in:
Florian Müllner 2023-07-10 01:20:53 +02:00 committed by Marge Bot
parent 3289b79433
commit 3451c5a182

View File

@ -98,17 +98,18 @@ function getCurrentExtension() {
//
// We don't have to care about the exact composition, all we need
// is a string that can be traversed as path and contains the UUID
const path = extensionLine.slice(extensionLine.indexOf(basePath));
let file = Gio.File.new_for_path(path);
let path = extensionLine.slice(extensionLine.indexOf(basePath));
// Walk up the directory tree, looking for an extension with
// the same UUID as a directory name.
while (file != null) {
let extension = extensionManager.lookup(file.get_basename());
do {
path = GLib.path_get_dirname(path);
const dirName = GLib.path_get_basename(path);
const extension = extensionManager.lookup(dirName);
if (extension !== undefined)
return extension;
file = file.get_parent();
}
} while (path !== '/');
return null;
}