[gnome-shell] extensionSystem: Require Extensions app for updates
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] extensionSystem: Require Extensions app for updates
- Date: Fri, 27 Mar 2020 13:45:08 +0000 (UTC)
commit 660a2b6e6230844ac29e9f1eab4504131897ecf5
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Mar 11 20:09:11 2020 +0100
extensionSystem: Require Extensions app for updates
While we don't technically need the app to download and apply
updates, we do require it for notifying the user about available
updates and listing extensions with pending updates.
So instead of intransparently applying updates in the background
without the user noticing, disable updates altogether if the
Extensions app is not installed.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/2346
js/ui/extensionDownloader.js | 6 ++++++
js/ui/extensionSystem.js | 8 ++++++++
2 files changed, 14 insertions(+)
---
diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js
index 306aaf14fb..08ebc2fec9 100644
--- a/js/ui/extensionDownloader.js
+++ b/js/ui/extensionDownloader.js
@@ -108,6 +108,9 @@ function gotExtensionZipFile(session, message, uuid, dir, callback, errback) {
}
function downloadExtensionUpdate(uuid) {
+ if (!Main.extensionManager.updatesSupported)
+ return;
+
let dir = Gio.File.new_for_path(
GLib.build_filenamev([global.userdatadir, 'extension-updates', uuid]));
@@ -126,6 +129,9 @@ function downloadExtensionUpdate(uuid) {
}
function checkForUpdates() {
+ if (!Main.extensionManager.updatesSupported)
+ return;
+
let metadatas = {};
Main.extensionManager.getUuids().forEach(uuid => {
let extension = Main.extensionManager.lookup(uuid);
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
index f2e8db79d2..4fab0c334e 100644
--- a/js/ui/extensionSystem.js
+++ b/js/ui/extensionSystem.js
@@ -60,6 +60,11 @@ var ExtensionManager = class {
ExtensionDownloader.checkForUpdates();
}
+ get updatesSupported() {
+ const appSys = Shell.AppSystem.get_default();
+ return appSys.lookup_app('org.gnome.Extensions.desktop') !== null;
+ }
+
lookup(uuid) {
return this._extensions.get(uuid);
}
@@ -481,6 +486,9 @@ var ExtensionManager = class {
}
_installExtensionUpdates() {
+ if (!this.updatesSupported)
+ return;
+
FileUtils.collectFromDatadirs('extension-updates', true, (dir, info) => {
let fileType = info.get_file_type();
if (fileType !== Gio.FileType.DIRECTORY)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]