aboutsummaryrefslogtreecommitdiff
path: root/tests/backend-dbus/mock-lomiri-session.cc
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-02-13 22:02:46 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-02-13 22:57:53 +0100
commit8c4df6215a986695edc6c6530f6d6388ea9640d5 (patch)
treeedbaa4c0de4c25d7e6ba5f2db9f46b819b6e6699 /tests/backend-dbus/mock-lomiri-session.cc
parentf9d1e0d63e454dbd280342ea42aa741d7a6a2003 (diff)
downloadayatana-indicator-session-8c4df6215a986695edc6c6530f6d6388ea9640d5.tar.gz
ayatana-indicator-session-8c4df6215a986695edc6c6530f6d6388ea9640d5.tar.bz2
ayatana-indicator-session-8c4df6215a986695edc6c6530f6d6388ea9640d5.zip
UnitySession -> LomiriSession: Re-rename related changes that we erroneously hid away as Ayatana DesktopSession.
This brings full Lomiri integration finally. Until now, the session indicator somehow seemed to work, but in some odd ways. On the phone, the session indicator would fallback to direct systemd interaction while on Lomiri in Debian, it would fallback to Zenity dialogs (most of all because Zenity got installed by some other package as a dependency). With this massive renaming change, ayatana-indicator-session should now smoothly interact with the com.lomiri.Shell.Session DBus interface and also with the mimicked GNOME SessionManager End-Session-Dialog interface. As a downside, this change nearly fully removes Unity7 support which would need to be brought back +/- as a full duplicate of what we do for Lomiri. But as noone has dared integrating Ayatana Indicator Session with Unity7, so far, we should be able to live with that for now. Fixes https://github.com/AyatanaIndicators/ayatana-indicator-session/issues/82
Diffstat (limited to 'tests/backend-dbus/mock-lomiri-session.cc')
-rw-r--r--tests/backend-dbus/mock-lomiri-session.cc83
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/backend-dbus/mock-lomiri-session.cc b/tests/backend-dbus/mock-lomiri-session.cc
new file mode 100644
index 0000000..dd3fec5
--- /dev/null
+++ b/tests/backend-dbus/mock-lomiri-session.cc
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2014 Canonical Ltd.
+ *
+ * Authors:
+ * Marco Trevisan <marco.trevisan@canonical.com>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "mock-lomiri-session.h"
+
+
+gboolean
+MockLomiriSession :: handle_lock (LomiriShellSession * us,
+ GDBusMethodInvocation * inv,
+ gpointer gself)
+{
+ static_cast<MockLomiriSession*>(gself)->my_last_action = Lock;
+ lomiri_shell_session_complete_lock (us, inv);
+ return true;
+}
+
+gboolean
+MockLomiriSession :: handle_prompt_lock (LomiriShellSession * us,
+ GDBusMethodInvocation * inv,
+ gpointer gself)
+{
+ static_cast<MockLomiriSession*>(gself)->my_last_action = PromptLock;
+ lomiri_shell_session_complete_prompt_lock (us, inv);
+ return true;
+}
+
+gboolean
+MockLomiriSession :: handle_request_logout (LomiriShellSession * us,
+ GDBusMethodInvocation * inv,
+ gpointer gself)
+{
+ static_cast<MockLomiriSession*>(gself)->my_last_action = RequestLogout;
+ lomiri_shell_session_complete_request_logout (us, inv);
+ return true;
+}
+
+/***
+****
+***/
+
+namespace
+{
+ const char * const LOMIRI_SESSION_NAME = "com.lomiri.Shell";
+ const char * const LOMIRI_SESSION_PATH = "/com/lomiri/Shell/Session";
+
+}
+
+MockLomiriSession :: MockLomiriSession (GMainLoop * loop,
+ GDBusConnection * bus_connection):
+ MockObject (loop, bus_connection, LOMIRI_SESSION_NAME, LOMIRI_SESSION_PATH),
+ my_skeleton (lomiri_shell_session_skeleton_new ()),
+ my_last_action (None)
+{
+ g_signal_connect (my_skeleton, "handle-lock",
+ G_CALLBACK(handle_lock), this);
+ g_signal_connect (my_skeleton, "handle-prompt-lock",
+ G_CALLBACK(handle_prompt_lock), this);
+ g_signal_connect (my_skeleton, "handle-request-logout",
+ G_CALLBACK(handle_request_logout), this);
+
+ set_skeleton (G_DBUS_INTERFACE_SKELETON(my_skeleton));
+}
+
+MockLomiriSession :: ~MockLomiriSession ()
+{
+ g_clear_object (&my_skeleton);
+}