keyring: Don't unregister the prompt when disabled
gnome-keyring provides a fallback in case our builtin prompt fails to register, so keyring dialogs may still pop up even when they are supposed to be disabled. Instead, keep the prompt registered but cancel requests immediately while disabled. https://bugzilla.gnome.org/show_bug.cgi?id=708187
This commit is contained in:
parent
a89fd17b8e
commit
1242a16265
@ -223,27 +223,50 @@ const KeyringDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const KeyringDummyDialog = new Lang.Class({
|
||||||
|
Name: 'KeyringDummyDialog',
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.prompt = new Shell.KeyringPrompt();
|
||||||
|
this.prompt.connect('show-password',
|
||||||
|
Lang.bind(this, this._cancelPrompt));
|
||||||
|
this.prompt.connect('show-confirm', Lang.bind(this,
|
||||||
|
this._cancelPrompt));
|
||||||
|
},
|
||||||
|
|
||||||
|
_cancelPrompt: function() {
|
||||||
|
this.prompt.cancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const KeyringPrompter = new Lang.Class({
|
const KeyringPrompter = new Lang.Class({
|
||||||
Name: 'KeyringPrompter',
|
Name: 'KeyringPrompter',
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this._prompter = new Gcr.SystemPrompter();
|
this._prompter = new Gcr.SystemPrompter();
|
||||||
this._prompter.connect('new-prompt', function(prompter) {
|
this._prompter.connect('new-prompt', Lang.bind(this,
|
||||||
let dialog = new KeyringDialog();
|
function() {
|
||||||
|
let dialog = this._enabled ? new KeyringDialog()
|
||||||
|
: new KeyringDummyDialog();
|
||||||
return dialog.prompt;
|
return dialog.prompt;
|
||||||
});
|
}));
|
||||||
this._dbusId = null;
|
this._dbusId = null;
|
||||||
|
this._registered = false;
|
||||||
|
this._enabled = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
enable: function() {
|
enable: function() {
|
||||||
|
if (!this._registered) {
|
||||||
this._prompter.register(Gio.DBus.session);
|
this._prompter.register(Gio.DBus.session);
|
||||||
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
|
this._dbusId = Gio.DBus.session.own_name('org.gnome.keyring.SystemPrompter',
|
||||||
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
|
Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null);
|
||||||
|
this._registered = true;
|
||||||
|
}
|
||||||
|
this._enabled = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
disable: function() {
|
disable: function() {
|
||||||
this._prompter.unregister(false);
|
this._enabled = false;
|
||||||
Gio.DBus.session.unown_name(this._dbusId);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user