[gnome-shell] extensionSystem: Require Extensions app for updates



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]