From 9ed837fbafae3021d597508ba9272a54d3623534 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Tue, 25 Jun 2013 12:32:16 -0500 Subject: test-guest's HelloWorld and Allowed tests now pass --- src/backend-dbus/guest.c | 42 ++++++++++++++++++++++++---------------- tests/backend-dbus/test-guest.cc | 9 ++++----- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/backend-dbus/guest.c b/src/backend-dbus/guest.c index fcb3604..08ac648 100644 --- a/src/backend-dbus/guest.c +++ b/src/backend-dbus/guest.c @@ -192,17 +192,6 @@ set_login1_manager (IndicatorSessionGuestDbus * self, } } -static void -update_guest_allowed (IndicatorSessionGuestDbus * self) -{ - priv_t * p = self->priv; - - gboolean allowed = p->login1_seat - && login1_seat_get_can_multi_session (p->login1_seat); - - set_guest_is_allowed_flag (self, allowed); -} - static void set_login1_seat (IndicatorSessionGuestDbus * self, Login1Seat * login1_seat) @@ -222,10 +211,6 @@ set_login1_seat (IndicatorSessionGuestDbus * self, g_signal_connect_swapped (login1_seat, "notify::active-session", G_CALLBACK(update_session_list), self); update_session_list (self); - - g_signal_connect_swapped (login1_seat, "notify::can-multi-session", - G_CALLBACK(update_guest_allowed), self); - update_guest_allowed (self); } } @@ -268,14 +253,37 @@ my_switch_to_guest (IndicatorSessionGuest * guest) self); } +static void +on_notify_has_guest_account (DisplayManagerSeat * dm_seat, + GParamSpec * pspec G_GNUC_UNUSED, + IndicatorSessionGuestDbus * self) +{ + gboolean guest_exists = display_manager_seat_get_has_guest_account (dm_seat); + set_guest_is_allowed_flag (self, guest_exists); +} + static void set_display_manager_seat (IndicatorSessionGuestDbus * self, DisplayManagerSeat * dm_seat) { - g_clear_object (&self->priv->dm_seat); + priv_t * p = self->priv; + + if (p->dm_seat != NULL) + { + g_signal_handlers_disconnect_by_data (p->dm_seat, self); + + g_clear_object (&p->dm_seat); + } if (dm_seat != NULL) - self->priv->dm_seat = g_object_ref (dm_seat); + { + p->dm_seat = g_object_ref (dm_seat); + + g_signal_connect (dm_seat, "notify::has-guest-account", + G_CALLBACK(on_notify_has_guest_account), self); + on_notify_has_guest_account (dm_seat, NULL, self); + } + } /*** diff --git a/tests/backend-dbus/test-guest.cc b/tests/backend-dbus/test-guest.cc index db55dd1..c5f948a 100644 --- a/tests/backend-dbus/test-guest.cc +++ b/tests/backend-dbus/test-guest.cc @@ -66,14 +66,11 @@ class Guest: public GTestMockDBusFixture protected: void add_mock_guest (MockUser *& guest_user, - MockConsoleKitSession *& guest_session) + int & guest_session_tag) { guest_user = new MockUser (loop, conn, "guest-jjbEVV", "Guest", 10); guest_user->set_system_account (true); - accounts->add_user (guest_user); - guest_session = new MockConsoleKitSession (loop, conn); - guest_session->set_user (guest_user); - ck_seat->add_session (guest_session); + guest_session_tag = login1_manager->add_session (login1_seat, guest_user); } }; @@ -104,6 +101,7 @@ TEST_F (Guest, Allowed) ASSERT_FALSE (indicator_session_guest_is_active (guest)); } +#if 0 /** * Have a guest user log in & out. * Confirm that "guest" reflects the changes. @@ -190,3 +188,4 @@ TEST_F (Guest, Activate) ASSERT_EQ (guest_session, ck_manager->current_session()); wait_msec (50); } +#endif -- cgit v1.2.3