20
20
#include <telepathy-glib/svc-generic.h>
22
22
static void text_iface_init (gpointer iface, gpointer data);
23
static void password_iface_init (gpointer iface, gpointer data);
24
25
G_DEFINE_TYPE_WITH_CODE (TpTestsTextChannelGroup,
25
26
tp_tests_text_channel_group, TP_TYPE_BASE_CHANNEL,
26
27
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT, text_iface_init);
27
28
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP,
28
29
tp_group_mixin_iface_init);
30
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_PASSWORD,
29
32
G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES,
30
33
tp_dbus_properties_mixin_iface_init))
32
35
static const char *text_channel_group_interfaces[] = {
33
36
TP_IFACE_CHANNEL_INTERFACE_GROUP,
37
TP_IFACE_CHANNEL_INTERFACE_PASSWORD,
216
222
finalize (GObject *object)
224
TpTestsTextChannelGroup *self = TP_TESTS_TEXT_CHANNEL_GROUP (object);
218
226
tp_text_mixin_finalize (object);
219
227
tp_group_mixin_finalize (object);
229
tp_clear_pointer (&self->priv->password, g_free);
221
231
((GObjectClass *) tp_tests_text_channel_group_parent_class)->finalize (object);
321
331
tp_intset_destroy (add);
322
332
tp_intset_destroy (empty);
336
tp_tests_text_channel_set_password (TpTestsTextChannelGroup *self,
337
const gchar *password)
339
gboolean pass_was_needed, pass_needed;
341
pass_was_needed = (self->priv->password != NULL);
343
tp_clear_pointer (&self->priv->password, g_free);
345
self->priv->password = g_strdup (password);
347
pass_needed = (self->priv->password != NULL);
349
if (pass_needed == pass_was_needed)
353
tp_svc_channel_interface_password_emit_password_flags_changed (self,
354
TP_CHANNEL_PASSWORD_FLAG_PROVIDE, 0);
356
tp_svc_channel_interface_password_emit_password_flags_changed (self,
357
0, TP_CHANNEL_PASSWORD_FLAG_PROVIDE);
361
password_get_password_flags (TpSvcChannelInterfacePassword *chan,
362
DBusGMethodInvocation *context)
364
TpTestsTextChannelGroup *self = (TpTestsTextChannelGroup *) chan;
365
TpChannelPasswordFlags flags = 0;
367
if (self->priv->password != NULL)
368
flags |= TP_CHANNEL_PASSWORD_FLAG_PROVIDE;
370
tp_svc_channel_interface_password_return_from_get_password_flags (context,
375
password_provide_password (TpSvcChannelInterfacePassword *chan,
376
const gchar *password,
377
DBusGMethodInvocation *context)
379
TpTestsTextChannelGroup *self = (TpTestsTextChannelGroup *) chan;
381
tp_svc_channel_interface_password_return_from_provide_password (context,
382
!tp_strdiff (password, self->priv->password));
386
password_iface_init (gpointer iface, gpointer data)
388
TpSvcChannelInterfacePasswordClass *klass = iface;
390
#define IMPLEMENT(x) tp_svc_channel_interface_password_implement_##x (klass, password_##x)
391
IMPLEMENT (get_password_flags);
392
IMPLEMENT (provide_password);