[gnome-shell] extensionPrefs: Load D-Bus interface from own resource
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] extensionPrefs: Load D-Bus interface from own resource
- Date: Thu, 19 Mar 2020 14:35:15 +0000 (UTC)
commit 4340260c49b577e81c8b9ef914180ee4e46c5775
Author: Florian Müllner <fmuellner gnome org>
Date: Sat Mar 7 19:26:06 2020 +0100
extensionPrefs: Load D-Bus interface from own resource
Using the "regular" loadInterfaceXML() helper means less code duplication,
but it also ties us to the resource used by gnome-shell.
In order to untangle the extension app from core gnome-shell, change that
to load the interface from the existing data resource instead. While that
does involve reimplementing loadInterfaceXML(), it's not too bad actually
with the resource-loading code stripped (as the data resource is already
loaded by the package module).
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
.../data/dbus-interfaces/org.gnome.Shell.Extensions.xml | 1 +
.../data/org.gnome.Extensions.data.gresource.xml | 2 ++
js/extensionPrefs/js/main.js | 15 ++++++++++++++-
.../js/org.gnome.Extensions.src.gresource.xml | 1 -
4 files changed, 17 insertions(+), 2 deletions(-)
---
diff --git a/js/extensionPrefs/data/dbus-interfaces/org.gnome.Shell.Extensions.xml
b/js/extensionPrefs/data/dbus-interfaces/org.gnome.Shell.Extensions.xml
new file mode 120000
index 0000000000..defde797b4
--- /dev/null
+++ b/js/extensionPrefs/data/dbus-interfaces/org.gnome.Shell.Extensions.xml
@@ -0,0 +1 @@
+../../../../data/dbus-interfaces/org.gnome.Shell.Extensions.xml
\ No newline at end of file
diff --git a/js/extensionPrefs/data/org.gnome.Extensions.data.gresource.xml
b/js/extensionPrefs/data/org.gnome.Extensions.data.gresource.xml
index f6fc66b721..659c03ffc8 100644
--- a/js/extensionPrefs/data/org.gnome.Extensions.data.gresource.xml
+++ b/js/extensionPrefs/data/org.gnome.Extensions.data.gresource.xml
@@ -3,6 +3,8 @@
<gresource prefix="/org/gnome/Extensions">
<file>css/application.css</file>
+ <file>dbus-interfaces/org.gnome.Shell.Extensions.xml</file>
+
<file>ui/extension-row.ui</file>
<file>ui/extensions-window.ui</file>
</gresource>
diff --git a/js/extensionPrefs/js/main.js b/js/extensionPrefs/js/main.js
index 936598c054..e4e2328c61 100644
--- a/js/extensionPrefs/js/main.js
+++ b/js/extensionPrefs/js/main.js
@@ -10,13 +10,26 @@ const { Gdk, GLib, Gio, GObject, Gtk } = imports.gi;
const _ = Gettext.gettext;
const ExtensionUtils = imports.misc.extensionUtils;
-const { loadInterfaceXML } = imports.misc.fileUtils;
const { ExtensionState, ExtensionType } = ExtensionUtils;
const GnomeShellIface = loadInterfaceXML('org.gnome.Shell.Extensions');
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
+function loadInterfaceXML(iface) {
+ const uri = 'resource:///org/gnome/Extensions/dbus-interfaces/%s.xml'.format(iface);
+ const f = Gio.File.new_for_uri(uri);
+
+ try {
+ let [ok_, bytes] = f.load_contents(null);
+ return imports.byteArray.toString(bytes);
+ } catch (e) {
+ log('Failed to load D-Bus interface %s'.format(iface));
+ }
+
+ return null;
+}
+
function stripPrefix(string, prefix) {
if (string.slice(0, prefix.length) == prefix)
return string.slice(prefix.length);
diff --git a/js/extensionPrefs/js/org.gnome.Extensions.src.gresource.xml
b/js/extensionPrefs/js/org.gnome.Extensions.src.gresource.xml
index 9b0fa09ace..8cda0f91ad 100644
--- a/js/extensionPrefs/js/org.gnome.Extensions.src.gresource.xml
+++ b/js/extensionPrefs/js/org.gnome.Extensions.src.gresource.xml
@@ -5,6 +5,5 @@
<file>misc/config.js</file>
<file>misc/extensionUtils.js</file>
- <file>misc/fileUtils.js</file>
</gresource>
</gresources>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]