shellDBus: Add new 'ExtensionStateChanged' signal
The existing 'ExtensionStatusChanged' signal has a fixed set of parameters, which means we cannot add additional state without an API break. Deprecate it in favor of a new 'ExtensionStateChanged' signal which addresses this issue by taking the full serialized extension as parameter. https://bugzilla.gnome.org/show_bug.cgi?id=789852
This commit is contained in:
parent
58806359ee
commit
32e0b895a4
@ -213,6 +213,15 @@
|
||||
-->
|
||||
<method name="CheckForUpdates"/>
|
||||
|
||||
<signal name="ExtensionStateChanged">
|
||||
<arg type="s" name="uuid"/>
|
||||
<arg type="a{sv}" name="state"/>
|
||||
</signal>
|
||||
|
||||
<!--
|
||||
ExtensionStatusChanged:
|
||||
Deprecated for ExtensionStateChanged
|
||||
-->
|
||||
<signal name="ExtensionStatusChanged">
|
||||
<arg type="s" name="uuid"/>
|
||||
<arg type="i" name="state"/>
|
||||
|
@ -246,7 +246,7 @@ var Application = GObject.registerClass({
|
||||
this._mainStack.add_named(new EmptyPlaceholder(), 'placeholder');
|
||||
|
||||
this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell');
|
||||
this._shellProxy.connectSignal('ExtensionStatusChanged', (proxy, senderName, [uuid, state, error]) => {
|
||||
this._shellProxy.connectSignal('ExtensionStateChanged', (proxy, senderName, [uuid, state]) => {
|
||||
if (ExtensionUtils.extensions[uuid] !== undefined)
|
||||
this._scanExtensions();
|
||||
});
|
||||
|
@ -159,15 +159,14 @@ var ExtensionManager = class {
|
||||
|
||||
let message = `${error}`;
|
||||
|
||||
extension.error = message;
|
||||
extension.state = ExtensionState.ERROR;
|
||||
if (!extension.errors)
|
||||
extension.errors = [];
|
||||
extension.errors.push(message);
|
||||
|
||||
log('Extension "%s" had error: %s'.format(uuid, message));
|
||||
this.emit('extension-state-changed', { uuid: uuid,
|
||||
error: message,
|
||||
state: extension.state });
|
||||
this.emit('extension-state-changed', extension);
|
||||
}
|
||||
|
||||
loadExtension(extension) {
|
||||
|
@ -320,6 +320,10 @@ var GnomeShellExtensions = class {
|
||||
}
|
||||
|
||||
_extensionStateChanged(_, newState) {
|
||||
let state = ExtensionUtils.serializeExtension(newState);
|
||||
this._dbusImpl.emit_signal('ExtensionStateChanged',
|
||||
new GLib.Variant('(sa{sv})', [newState.uuid, state]));
|
||||
|
||||
this._dbusImpl.emit_signal('ExtensionStatusChanged',
|
||||
GLib.Variant.new('(sis)', [newState.uuid, newState.state, newState.error]));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user