diff --git a/js/Makefile.am b/js/Makefile.am index 91dc84ca7..37c4a9278 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -17,14 +17,13 @@ jsdir = $(pkgdatadir)/js nobase_dist_js_DATA = \ gdm/batch.js \ - gdm/consoleKit.js \ gdm/fingerprint.js \ gdm/loginDialog.js \ gdm/powerMenu.js \ - gdm/systemd.js \ gdm/util.js \ extensionPrefs/main.js \ misc/config.js \ + misc/consoleKit.js \ misc/extensionUtils.js \ misc/fileUtils.js \ misc/gnomeSession.js \ @@ -32,6 +31,7 @@ nobase_dist_js_DATA = \ misc/jsParse.js \ misc/modemManager.js \ misc/params.js \ + misc/systemd.js \ misc/util.js \ perf/core.js \ ui/altTab.js \ diff --git a/js/gdm/consoleKit.js b/js/gdm/consoleKit.js deleted file mode 100644 index 6445a8c04..000000000 --- a/js/gdm/consoleKit.js +++ /dev/null @@ -1,22 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const Gio = imports.gi.Gio; - -const ConsoleKitManagerIface = - - - - - - - - -; - -const ConsoleKitProxy = Gio.DBusProxy.makeProxyWrapper(ConsoleKitManagerIface); - -function ConsoleKitManager() { - return new ConsoleKitProxy(Gio.DBus.system, - 'org.freedesktop.ConsoleKit', - '/org/freedesktop/ConsoleKit/Manager'); -}; diff --git a/js/gdm/powerMenu.js b/js/gdm/powerMenu.js index 613a89607..e06c7a268 100644 --- a/js/gdm/powerMenu.js +++ b/js/gdm/powerMenu.js @@ -21,8 +21,8 @@ const Lang = imports.lang; const UPowerGlib = imports.gi.UPowerGlib; -const ConsoleKit = imports.gdm.consoleKit; -const Systemd = imports.gdm.systemd; +const ConsoleKit = imports.misc.consoleKit; +const Systemd = imports.misc.systemd; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; diff --git a/js/misc/consoleKit.js b/js/misc/consoleKit.js new file mode 100644 index 000000000..96afd5ac8 --- /dev/null +++ b/js/misc/consoleKit.js @@ -0,0 +1,55 @@ +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- + +const Gio = imports.gi.Gio; + +const ConsoleKitManagerIface = + + + + + + + + + + + +; + +const ConsoleKitSessionIface = + + + + + + + + +; + +const ConsoleKitSessionProxy = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface); + +const ConsoleKitManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ConsoleKitManagerIface); + +function ConsoleKitManager() { + var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system, + g_interface_name: ConsoleKitManagerInfo.name, + g_interface_info: ConsoleKitManagerInfo, + g_name: 'org.freedesktop.ConsoleKit', + g_object_path: '/org/freedesktop/ConsoleKit/Manager', + g_flags: Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES }); + self.init(null); + + self.GetCurrentSessionRemote(function([session]) { + self.ckSession = new ConsoleKitSessionProxy(Gio.DBus.system, 'org.freedesktop.ConsoleKit', session); + + self.ckSession.connectSignal('ActiveChanged', function(object, senderName, [isActive]) { + self.sessionActive = isActive; + }); + self.ckSession.IsActiveRemote(function([isActive]) { + self.sessionActive = isActive; + }); + }); + + return self; +} diff --git a/js/gdm/systemd.js b/js/misc/systemd.js similarity index 65% rename from js/gdm/systemd.js rename to js/misc/systemd.js index 8dd73abee..39ef12933 100644 --- a/js/gdm/systemd.js +++ b/js/misc/systemd.js @@ -18,14 +18,27 @@ const SystemdLoginManagerIface = + + +; + const SystemdLoginManagerProxy = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface); +const SystemdLoginSessionProxy = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface); + function SystemdLoginManager() { return new SystemdLoginManagerProxy(Gio.DBus.system, 'org.freedesktop.login1', '/org/freedesktop/login1'); }; +function SystemdLoginSession(id) { + return new SystemdLoginSessionProxy(Gio.DBus.system, + 'org.freedesktop.login1', + '/org/freedesktop/login1/session/' + id); +} + function haveSystemd() { return GLib.access("/sys/fs/cgroup/systemd", 0) >= 0; } diff --git a/js/ui/automountManager.js b/js/ui/automountManager.js index 69a94cb82..19f2aca66 100644 --- a/js/ui/automountManager.js +++ b/js/ui/automountManager.js @@ -5,11 +5,13 @@ const Mainloop = imports.mainloop; const GLib = imports.gi.GLib; const Gio = imports.gi.Gio; const Params = imports.misc.params; - const Shell = imports.gi.Shell; + +const ConsoleKit = imports.misc.consoleKit; +const GnomeSession = imports.misc.gnomeSession; const Main = imports.ui.main; const ShellMountOperation = imports.ui.shellMountOperation; -const GnomeSession = imports.misc.gnomeSession; +const Systemd = imports.misc.systemd; const GNOME_SESSION_AUTOMOUNT_INHIBIT = 16; @@ -19,62 +21,6 @@ const SETTING_ENABLE_AUTOMOUNT = 'automount'; const AUTORUN_EXPIRE_TIMEOUT_SECS = 10; -const ConsoleKitSessionIface = - - - - - - -; - -const ConsoleKitSessionProxy = Gio.DBusProxy.makeProxyWrapper(ConsoleKitSessionIface); - -const ConsoleKitManagerIface = - - - -; - -const ConsoleKitManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ConsoleKitManagerIface); - -function ConsoleKitManager() { - var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system, - g_interface_name: ConsoleKitManagerInfo.name, - g_interface_info: ConsoleKitManagerInfo, - g_name: 'org.freedesktop.ConsoleKit', - g_object_path: '/org/freedesktop/ConsoleKit/Manager', - g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START | - Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) }); - - self._updateSessionActive = function() { - if (self.g_name_owner) { - self.GetCurrentSessionRemote(function([session]) { - self._ckSession = new ConsoleKitSessionProxy(Gio.DBus.system, 'org.freedesktop.ConsoleKit', session); - - self._ckSession.connectSignal('ActiveChanged', function(object, senderName, [isActive]) { - self.sessionActive = isActive; - }); - self._ckSession.IsActiveRemote(function([isActive]) { - self.sessionActive = isActive; - }); - }); - } else { - self.sessionActive = true; - } - }; - self.connect('notify::g-name-owner', - Lang.bind(self, self._updateSessionActive)); - - self._updateSessionActive(); - self.init(null); - return self; -} - -function haveSystemd() { - return GLib.access("/sys/fs/cgroup/systemd", 0) >= 0; -} - const AutomountManager = new Lang.Class({ Name: 'AutomountManager', @@ -88,8 +34,8 @@ const AutomountManager = new Lang.Class({ Lang.bind(this, this._InhibitorsChanged)); this._inhibited = false; - if (!haveSystemd()) - this.ckListener = new ConsoleKitManager(); + if (!Systemd.haveSystemd()) + this.ckListener = new ConsoleKit.ConsoleKitManager(); Main.screenShield.connect('lock-status-changed', Lang.bind(this, this._lockStatusChanged)); @@ -151,7 +97,7 @@ const AutomountManager = new Lang.Class({ // right mechanism: either systemd if available or ConsoleKit // as fallback. - if (haveSystemd()) + if (Systemd.haveSystemd()) return Shell.session_is_active_for_systemd(); return this.ckListener.sessionActive;