summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2013-09-27 14:52:36 +0200
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2013-09-30 14:06:47 +0200
commitd0e14a0064e0ff6bee3caa7b034fd8bd44073151 (patch)
treef909ea1e268661db302df528d9449788ddd3e8c0
parent9eddabeae916e360f2b7dbe1f2b2562ae86a86c3 (diff)
downloadtelepathy-logger-d0e14a0064e0ff6bee3caa7b034fd8bd44073151.tar.gz
textchann-null has been replaced by echo-chan in tp-glib next
-rw-r--r--tests/lib/Makefile.am4
-rw-r--r--tests/lib/echo-chan.c223
-rw-r--r--tests/lib/echo-chan.h56
-rw-r--r--tests/lib/textchan-null.c574
-rw-r--r--tests/lib/textchan-null.h135
5 files changed, 281 insertions, 711 deletions
diff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am
index 5a3b35d..1130029 100644
--- a/tests/lib/Makefile.am
+++ b/tests/lib/Makefile.am
@@ -5,6 +5,8 @@ libtp_logger_tests_la_SOURCES = \
contacts-conn.h \
contact-list-manager.c \
contact-list-manager.h \
+ echo-chan.c \
+ echo-chan.h \
room-list-chan.c \
room-list-chan.h \
simple-account.c \
@@ -13,8 +15,6 @@ libtp_logger_tests_la_SOURCES = \
simple-account-manager.h \
simple-conn.c \
simple-conn.h \
- textchan-null.c \
- textchan-null.h \
util.c \
util.h \
logger-test-helper.c \
diff --git a/tests/lib/echo-chan.c b/tests/lib/echo-chan.c
new file mode 100644
index 0000000..868fbcf
--- /dev/null
+++ b/tests/lib/echo-chan.c
@@ -0,0 +1,223 @@
+/*
+ * chan.c - an example text channel talking to a particular
+ * contact. Similar code is used for 1-1 IM channels in many protocols
+ * (IRC private messages ("/query"), XMPP IM etc.)
+ *
+ * Copyright (C) 2007 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2007 Nokia Corporation
+ *
+ * Copying and distribution of this file, with or without modification,
+ * are permitted in any medium without royalty provided the copyright
+ * notice and this notice are preserved.
+ */
+
+#include "config.h"
+
+#include "echo-chan.h"
+
+#include <telepathy-glib/telepathy-glib.h>
+#include <telepathy-glib/telepathy-glib-dbus.h>
+
+static void destroyable_iface_init (gpointer iface, gpointer data);
+
+G_DEFINE_TYPE_WITH_CODE (TpTestsEchoChannel,
+ tp_tests_echo_channel,
+ TP_TYPE_BASE_CHANNEL,
+ G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT,
+ tp_message_mixin_iface_init);
+ G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_DESTROYABLE,
+ destroyable_iface_init);
+ )
+
+/* type definition stuff */
+
+static GPtrArray *
+tp_tests_echo_channel_get_interfaces (TpBaseChannel *self)
+{
+ GPtrArray *interfaces;
+
+ interfaces = TP_BASE_CHANNEL_CLASS (tp_tests_echo_channel_parent_class)->
+ get_interfaces (self);
+
+ g_ptr_array_add (interfaces, TP_IFACE_CHANNEL_INTERFACE_DESTROYABLE);
+ return interfaces;
+};
+
+static void
+tp_tests_echo_channel_init (TpTestsEchoChannel *self)
+{
+}
+
+static void text_send (GObject *object, TpMessage *message,
+ TpMessageSendingFlags flags);
+
+static void
+constructed (GObject *object)
+{
+ TpTestsEchoChannel *self = TP_TESTS_ECHO_CHANNEL (object);
+ TpBaseConnection *conn = tp_base_channel_get_connection (TP_BASE_CHANNEL (self));
+ const TpChannelTextMessageType types[] = {
+ TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL,
+ TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION,
+ TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE,
+ };
+ const gchar * supported_content_types[] = {
+ "text/plain",
+ NULL
+ };
+ g_assert (conn != NULL);
+
+ G_OBJECT_CLASS (tp_tests_echo_channel_parent_class)->constructed (object);
+
+ tp_base_channel_register (TP_BASE_CHANNEL (self));
+
+ tp_message_mixin_init (object,
+ G_STRUCT_OFFSET (TpTestsEchoChannel, message),
+ conn);
+ tp_message_mixin_implement_sending (object,
+ text_send, G_N_ELEMENTS (types), types, 0, 0,
+ supported_content_types);
+}
+
+static void
+finalize (GObject *object)
+{
+ tp_message_mixin_finalize (object);
+
+ ((GObjectClass *) tp_tests_echo_channel_parent_class)->finalize (object);
+}
+
+static void
+tp_tests_echo_channel_close (TpTestsEchoChannel *self)
+{
+ GObject *object = (GObject *) self;
+ gboolean closed = tp_base_channel_is_destroyed (TP_BASE_CHANNEL (self));
+
+ if (!closed)
+ {
+ TpHandle first_sender;
+
+ /* The manager wants to be able to respawn the channel if it has pending
+ * messages. When respawned, the channel must have the initiator set
+ * to the contact who sent us those messages (if it isn't already),
+ * and the messages must be marked as having been rescued so they
+ * don't get logged twice. */
+ if (tp_message_mixin_has_pending_messages (object, &first_sender))
+ {
+ tp_base_channel_reopened (TP_BASE_CHANNEL (self), first_sender);
+ tp_message_mixin_set_rescued (object);
+ }
+ else
+ {
+ tp_base_channel_destroyed (TP_BASE_CHANNEL (self));
+ }
+ }
+}
+
+static void
+channel_close (TpBaseChannel *channel)
+{
+ TpTestsEchoChannel *self = TP_TESTS_ECHO_CHANNEL (channel);
+
+ tp_tests_echo_channel_close (self);
+}
+
+static void
+tp_tests_echo_channel_class_init (TpTestsEchoChannelClass *klass)
+{
+ GObjectClass *object_class = (GObjectClass *) klass;
+ TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass);
+
+ object_class->constructed = constructed;
+ object_class->finalize = finalize;
+
+ base_class->channel_type = TP_IFACE_CHANNEL_TYPE_TEXT;
+ base_class->target_handle_type = TP_HANDLE_TYPE_CONTACT;
+ base_class->get_interfaces = tp_tests_echo_channel_get_interfaces;
+ base_class->close = channel_close;
+
+ tp_message_mixin_init_dbus_properties (object_class);
+}
+
+
+static void
+text_send (GObject *object,
+ TpMessage *message,
+ TpMessageSendingFlags flags)
+{
+ TpTestsEchoChannel *self = TP_TESTS_ECHO_CHANNEL (object);
+ TpChannelTextMessageType type = tp_message_get_message_type (message);
+ TpChannelTextMessageType echo_type = type;
+ TpHandle target = tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self));
+ gchar *echo;
+ gint64 now = time (NULL);
+ const GHashTable *part;
+ const gchar *text;
+ TpMessage *msg;
+
+ /* Pretend that the remote contact has replied. Normally, you'd
+ * call tp_text_mixin_receive or tp_text_mixin_receive_with_flags
+ * in response to network events */
+
+ part = tp_message_peek (message, 1);
+ text = tp_asv_get_string (part, "content");
+
+ switch (type)
+ {
+ case TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL:
+ echo = g_strdup_printf ("You said: %s", text);
+ break;
+ case TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION:
+ echo = g_strdup_printf ("notices that the user %s", text);
+ break;
+ case TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE:
+ echo = g_strdup_printf ("You sent a notice: %s", text);
+ break;
+ default:
+ echo = g_strdup_printf ("You sent some weird message type, %u: \"%s\"",
+ type, text);
+ echo_type = TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL;
+ }
+
+ tp_message_mixin_sent (object, message, 0, "", NULL);
+
+ msg = tp_cm_message_new (
+ tp_base_channel_get_connection (TP_BASE_CHANNEL (self)),
+ 2);
+
+ tp_cm_message_set_sender (msg, target);
+ tp_message_set_uint32 (msg, 0, "message-type", echo_type);
+ tp_message_set_int64 (msg, 0, "message-sent", now);
+ tp_message_set_int64 (msg, 0, "message-received", now);
+
+ tp_message_set_string (msg, 1, "content-type", "text/plain");
+ tp_message_set_string (msg, 1, "content", echo);
+
+ tp_message_mixin_take_received (object, msg);
+
+ g_free (echo);
+}
+
+static void
+destroyable_destroy (TpSvcChannelInterfaceDestroyable *iface,
+ DBusGMethodInvocation *context)
+{
+ TpTestsEchoChannel *self = TP_TESTS_ECHO_CHANNEL (iface);
+
+ tp_message_mixin_clear ((GObject *) self);
+ tp_base_channel_destroyed (TP_BASE_CHANNEL (self));
+
+ tp_svc_channel_interface_destroyable_return_from_destroy (context);
+}
+
+static void
+destroyable_iface_init (gpointer iface,
+ gpointer data)
+{
+ TpSvcChannelInterfaceDestroyableClass *klass = iface;
+
+#define IMPLEMENT(x) \
+ tp_svc_channel_interface_destroyable_implement_##x (klass, destroyable_##x)
+ IMPLEMENT (destroy);
+#undef IMPLEMENT
+}
diff --git a/tests/lib/echo-chan.h b/tests/lib/echo-chan.h
new file mode 100644
index 0000000..5fbe6ee
--- /dev/null
+++ b/tests/lib/echo-chan.h
@@ -0,0 +1,56 @@
+/*
+ * chan.h - header for an example channel
+ *
+ * Copyright (C) 2007 Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (C) 2007 Nokia Corporation
+ *
+ * Copying and distribution of this file, with or without modification,
+ * are permitted in any medium without royalty provided the copyright
+ * notice and this notice are preserved.
+ */
+
+#ifndef __TP_TESTS_CHAN_H__
+#define __TP_TESTS_CHAN_H__
+
+#include <glib-object.h>
+#include <telepathy-glib/telepathy-glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct _TpTestsEchoChannel TpTestsEchoChannel;
+typedef struct _TpTestsEchoChannelClass TpTestsEchoChannelClass;
+typedef struct _TpTestsEchoChannelPrivate TpTestsEchoChannelPrivate;
+
+GType tp_tests_echo_channel_get_type (void);
+
+#define TP_TESTS_TYPE_ECHO_CHANNEL \
+ (tp_tests_echo_channel_get_type ())
+#define TP_TESTS_ECHO_CHANNEL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_ECHO_CHANNEL, \
+ TpTestsEchoChannel))
+#define TP_TESTS_ECHO_CHANNEL_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_ECHO_CHANNEL, \
+ TpTestsEchoChannelClass))
+#define TP_TESTS_IS_ECHO_CHANNEL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_ECHO_CHANNEL))
+#define TP_TESTS_IS_ECHO_CHANNEL_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_ECHO_CHANNEL))
+#define TP_TESTS_ECHO_CHANNEL_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_ECHO_CHANNEL, \
+ TpTestsEchoChannelClass))
+
+struct _TpTestsEchoChannelClass {
+ TpBaseChannelClass parent_class;
+ TpDBusPropertiesMixinClass dbus_properties_class;
+};
+
+struct _TpTestsEchoChannel {
+ TpBaseChannel parent;
+ TpMessageMixin message;
+
+ TpTestsEchoChannelPrivate *priv;
+};
+
+G_END_DECLS
+
+#endif /* #ifndef __TP_TESTS_CHAN_H__ */
diff --git a/tests/lib/textchan-null.c b/tests/lib/textchan-null.c
deleted file mode 100644
index c426acf..0000000
--- a/tests/lib/textchan-null.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- * /dev/null as a text channel
- *
- * Copyright (C) 2008 Collabora Ltd. <http://www.collabora.co.uk/>
- * Copyright (C) 2008 Nokia Corporation
- *
- * Copying and distribution of this file, with or without modification,
- * are permitted in any medium without royalty provided the copyright
- * notice and this notice are preserved.
- */
-
-#include "config.h"
-
-#include "textchan-null.h"
-
-#include <telepathy-glib/telepathy-glib.h>
-#include <telepathy-glib/telepathy-glib-dbus.h>
-
-/* This is for text-mixin unit tests, others should be using ExampleEcho2Channel
- * which uses newer TpMessageMixin */
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-
-static void text_iface_init (gpointer iface, gpointer data);
-static void channel_iface_init (gpointer iface, gpointer data);
-
-G_DEFINE_TYPE_WITH_CODE (TpTestsTextChannelNull,
- tp_tests_text_channel_null,
- G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init);
- G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT, text_iface_init);
- G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL))
-
-G_DEFINE_TYPE_WITH_CODE (TpTestsPropsTextChannel,
- tp_tests_props_text_channel,
- TP_TESTS_TYPE_TEXT_CHANNEL_NULL,
- G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES,
- tp_dbus_properties_mixin_iface_init))
-
-G_DEFINE_TYPE_WITH_CODE (TpTestsPropsGroupTextChannel,
- tp_tests_props_group_text_channel,
- TP_TESTS_TYPE_PROPS_TEXT_CHANNEL,
- G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP,
- tp_group_mixin_iface_init))
-
-static const char *tp_tests_text_channel_null_interfaces[] = { NULL };
-
-/* type definition stuff */
-
-enum
-{
- PROP_OBJECT_PATH = 1,
- PROP_CHANNEL_TYPE,
- PROP_HANDLE_TYPE,
- PROP_HANDLE,
- PROP_TARGET_ID,
- PROP_CONNECTION,
- PROP_INTERFACES,
- PROP_REQUESTED,
- PROP_INITIATOR_HANDLE,
- PROP_INITIATOR_ID,
- N_PROPS
-};
-
-struct _TpTestsTextChannelNullPrivate
-{
- TpBaseConnection *conn;
- gchar *object_path;
- TpHandle handle;
-
- unsigned closed:1;
- unsigned disposed:1;
-};
-
-static void
-tp_tests_text_channel_null_init (TpTestsTextChannelNull *self)
-{
- self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
- TP_TESTS_TYPE_TEXT_CHANNEL_NULL, TpTestsTextChannelNullPrivate);
-}
-
-static void
-tp_tests_props_text_channel_init (TpTestsPropsTextChannel *self)
-{
- self->dbus_property_interfaces_retrieved = g_hash_table_new (NULL, NULL);
-}
-
-static GObject *
-constructor (GType type,
- guint n_props,
- GObjectConstructParam *props)
-{
- GObject *object =
- G_OBJECT_CLASS (tp_tests_text_channel_null_parent_class)->constructor (type,
- n_props, props);
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object);
- TpHandleRepoIface *contact_repo = tp_base_connection_get_handles
- (self->priv->conn, TP_HANDLE_TYPE_CONTACT);
-
- tp_handle_ref (contact_repo, self->priv->handle);
-
- tp_dbus_daemon_register_object (
- tp_base_connection_get_dbus_daemon (self->priv->conn),
- self->priv->object_path, self);
-
- tp_text_mixin_init (object, G_STRUCT_OFFSET (TpTestsTextChannelNull, text),
- contact_repo);
-
- tp_text_mixin_set_message_types (object,
- TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL,
- TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION,
- TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE,
- G_MAXUINT);
-
- return object;
-}
-
-static void
-get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object);
-
- switch (property_id)
- {
- case PROP_OBJECT_PATH:
- g_value_set_string (value, self->priv->object_path);
- break;
- case PROP_CHANNEL_TYPE:
- g_value_set_static_string (value, TP_IFACE_CHANNEL_TYPE_TEXT);
- break;
- case PROP_HANDLE_TYPE:
- g_value_set_uint (value, TP_HANDLE_TYPE_CONTACT);
- break;
- case PROP_HANDLE:
- g_value_set_uint (value, self->priv->handle);
- break;
- case PROP_TARGET_ID:
- {
- TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (
- self->priv->conn, TP_HANDLE_TYPE_CONTACT);
-
- g_value_set_string (value,
- tp_handle_inspect (contact_repo, self->priv->handle));
- }
- break;
- case PROP_REQUESTED:
- g_value_set_boolean (value, TRUE);
- break;
- case PROP_INITIATOR_HANDLE:
- g_value_set_uint (value, tp_base_connection_get_self_handle (
- self->priv->conn));
- break;
- case PROP_INITIATOR_ID:
- {
- TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (
- self->priv->conn, TP_HANDLE_TYPE_CONTACT);
-
- g_value_set_string (value,
- tp_handle_inspect (contact_repo,
- tp_base_connection_get_self_handle (self->priv->conn)));
- }
- break;
- case PROP_INTERFACES:
- g_value_set_boxed (value, tp_tests_text_channel_null_interfaces);
- break;
- case PROP_CONNECTION:
- g_value_set_object (value, self->priv->conn);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object);
-
- switch (property_id)
- {
- case PROP_OBJECT_PATH:
- g_free (self->priv->object_path);
- self->priv->object_path = g_value_dup_string (value);
- break;
- case PROP_HANDLE:
- /* we don't ref it here because we don't necessarily have access to the
- * contact repo yet - instead we ref it in the constructor.
- */
- self->priv->handle = g_value_get_uint (value);
- break;
- case PROP_HANDLE_TYPE:
- case PROP_CHANNEL_TYPE:
- /* these properties are writable in the interface, but not actually
- * meaningfully changable on this channel, so we do nothing */
- break;
- case PROP_CONNECTION:
- self->priv->conn = g_value_get_object (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-void
-tp_tests_text_channel_null_close (TpTestsTextChannelNull *self)
-{
- if (!self->priv->closed)
- {
- self->priv->closed = TRUE;
- tp_svc_channel_emit_closed (self);
- tp_dbus_daemon_unregister_object (
- tp_base_connection_get_dbus_daemon (self->priv->conn), self);
- }
-}
-
-static void
-dispose (GObject *object)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object);
-
- if (self->priv->disposed)
- return;
-
- self->priv->disposed = TRUE;
- tp_tests_text_channel_null_close (self);
-
- ((GObjectClass *) tp_tests_text_channel_null_parent_class)->dispose (object);
-}
-
-static void
-finalize (GObject *object)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (object);
- TpHandleRepoIface *contact_handles = tp_base_connection_get_handles
- (self->priv->conn, TP_HANDLE_TYPE_CONTACT);
-
- tp_handle_unref (contact_handles, self->priv->handle);
- g_free (self->priv->object_path);
-
- tp_text_mixin_finalize (object);
-
- ((GObjectClass *) tp_tests_text_channel_null_parent_class)->finalize (object);
-}
-
-static void
-tp_tests_text_channel_null_class_init (TpTestsTextChannelNullClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- GParamSpec *param_spec;
-
- g_type_class_add_private (klass, sizeof (TpTestsTextChannelNullPrivate));
-
- object_class->constructor = constructor;
- object_class->set_property = set_property;
- object_class->get_property = get_property;
- object_class->dispose = dispose;
- object_class->finalize = finalize;
-
- g_object_class_override_property (object_class, PROP_OBJECT_PATH,
- "object-path");
- g_object_class_override_property (object_class, PROP_CHANNEL_TYPE,
- "channel-type");
- g_object_class_override_property (object_class, PROP_HANDLE_TYPE,
- "handle-type");
- g_object_class_override_property (object_class, PROP_HANDLE, "handle");
-
- param_spec = g_param_spec_object ("connection", "TpBaseConnection object",
- "Connection object that owns this channel",
- TP_TYPE_BASE_CONNECTION,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_CONNECTION, param_spec);
-
- param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces",
- "Additional Channel.Interface.* interfaces",
- G_TYPE_STRV,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_INTERFACES, param_spec);
-
- param_spec = g_param_spec_string ("target-id", "Peer's ID",
- "The string obtained by inspecting the target handle",
- NULL,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec);
-
- param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle",
- "The contact who initiated the channel",
- 0, G_MAXUINT32, 0,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE,
- param_spec);
-
- param_spec = g_param_spec_string ("initiator-id", "Initiator's ID",
- "The string obtained by inspecting the initiator-handle",
- NULL,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_INITIATOR_ID,
- param_spec);
-
- param_spec = g_param_spec_boolean ("requested", "Requested?",
- "True if this channel was requested by the local user",
- FALSE,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_REQUESTED, param_spec);
-
- tp_text_mixin_class_init (object_class,
- G_STRUCT_OFFSET (TpTestsTextChannelNullClass, text_class));
-}
-
-static void
-tp_tests_props_text_channel_getter_gobject_properties (GObject *object,
- GQuark interface,
- GQuark name,
- GValue *value,
- gpointer getter_data)
-{
- TpTestsPropsTextChannel *self = TP_TESTS_PROPS_TEXT_CHANNEL (object);
-
- g_hash_table_insert (self->dbus_property_interfaces_retrieved,
- GUINT_TO_POINTER (interface), GUINT_TO_POINTER (interface));
-
- tp_dbus_properties_mixin_getter_gobject_properties (object, interface, name,
- value, getter_data);
-}
-
-static void
-props_finalize (GObject *object)
-{
- TpTestsPropsTextChannel *self = TP_TESTS_PROPS_TEXT_CHANNEL (object);
-
- g_hash_table_unref (self->dbus_property_interfaces_retrieved);
-
- ((GObjectClass *) tp_tests_props_text_channel_parent_class)->finalize (object);
-}
-
-static void
-tp_tests_props_text_channel_class_init (TpTestsPropsTextChannelClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- static TpDBusPropertiesMixinPropImpl channel_props[] = {
- { "TargetHandleType", "handle-type", NULL },
- { "TargetHandle", "handle", NULL },
- { "ChannelType", "channel-type", NULL },
- { "Interfaces", "interfaces", NULL },
- { "TargetID", "target-id", NULL },
- { "Requested", "requested", NULL },
- { "InitiatorHandle", "initiator-handle", NULL },
- { "InitiatorID", "initiator-id", NULL },
- { NULL }
- };
- static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = {
- { TP_IFACE_CHANNEL,
- tp_tests_props_text_channel_getter_gobject_properties,
- NULL,
- channel_props,
- },
- { NULL }
- };
-
- object_class->finalize = props_finalize;
-
- klass->dbus_properties_class.interfaces = prop_interfaces;
- tp_dbus_properties_mixin_class_init (object_class,
- G_STRUCT_OFFSET (TpTestsPropsTextChannelClass, dbus_properties_class));
-}
-
-static void
-tp_tests_props_group_text_channel_init (TpTestsPropsGroupTextChannel *self)
-{
-}
-
-static void
-group_constructed (GObject *self)
-{
- TpBaseConnection *conn = TP_TESTS_TEXT_CHANNEL_NULL (self)->priv->conn;
- void (*chain_up) (GObject *) =
- ((GObjectClass *) tp_tests_props_group_text_channel_parent_class)->constructed;
-
- if (chain_up != NULL)
- chain_up (self);
-
- tp_group_mixin_init (self,
- G_STRUCT_OFFSET (TpTestsPropsGroupTextChannel, group),
- tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT),
- tp_base_connection_get_self_handle (conn));
- tp_group_mixin_change_flags (self, TP_CHANNEL_GROUP_FLAG_PROPERTIES, 0);
-}
-
-static void
-group_finalize (GObject *self)
-{
- tp_group_mixin_finalize (self);
-
- ((GObjectClass *) tp_tests_props_group_text_channel_parent_class)->finalize (self);
-}
-
-static gboolean
-dummy_add_remove_member (GObject *obj,
- TpHandle handle,
- const gchar *message,
- GError **error)
-{
- return TRUE;
-}
-
-static void
-group_iface_props_getter (GObject *object,
- GQuark interface,
- GQuark name,
- GValue *value,
- gpointer getter_data)
-{
- TpTestsPropsTextChannel *self = TP_TESTS_PROPS_TEXT_CHANNEL (object);
-
- g_hash_table_insert (self->dbus_property_interfaces_retrieved,
- GUINT_TO_POINTER (interface), GUINT_TO_POINTER (interface));
-
- tp_group_mixin_get_dbus_property (object, interface, name, value, getter_data);
-}
-
-static void
-tp_tests_props_group_text_channel_class_init (TpTestsPropsGroupTextChannelClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- static TpDBusPropertiesMixinPropImpl group_props[] = {
- { "GroupFlags", NULL, NULL },
- { "HandleOwners", NULL, NULL },
- { "LocalPendingMembers", NULL, NULL },
- { "Members", NULL, NULL },
- { "RemotePendingMembers", NULL, NULL },
- { "SelfHandle", NULL, NULL },
- { NULL }
- };
-
- object_class->constructed = group_constructed;
- object_class->finalize = group_finalize;
-
- tp_group_mixin_class_init (object_class,
- G_STRUCT_OFFSET (TpTestsPropsGroupTextChannelClass, group_class),
- dummy_add_remove_member,
- dummy_add_remove_member);
- tp_dbus_properties_mixin_implement_interface (object_class,
- TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP, group_iface_props_getter, NULL,
- group_props);
-}
-
-static void
-channel_close (TpSvcChannel *iface,
- DBusGMethodInvocation *context)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface);
-
- tp_tests_text_channel_null_close (self);
- tp_svc_channel_return_from_close (context);
-}
-
-static void
-channel_get_channel_type (TpSvcChannel *iface,
- DBusGMethodInvocation *context)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface);
-
- self->get_channel_type_called++;
-
- tp_svc_channel_return_from_get_channel_type (context,
- TP_IFACE_CHANNEL_TYPE_TEXT);
-}
-
-static void
-channel_get_handle (TpSvcChannel *iface,
- DBusGMethodInvocation *context)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface);
-
- self->get_handle_called++;
-
- tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT,
- self->priv->handle);
-}
-
-static void
-channel_get_interfaces (TpSvcChannel *iface,
- DBusGMethodInvocation *context)
-{
- TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface);
-
- self->get_interfaces_called++;
-
- tp_svc_channel_return_from_get_interfaces (context,
- tp_tests_text_channel_null_interfaces);
-}
-
-static void
-channel_iface_init (gpointer iface,
- gpointer data)
-{
- TpSvcChannelClass *klass = iface;
-
-#define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x)
- IMPLEMENT (close);
- IMPLEMENT (get_channel_type);
- IMPLEMENT (get_handle);
- IMPLEMENT (get_interfaces);
-#undef IMPLEMENT
-}
-
-static void
-text_send (TpSvcChannelTypeText *iface,
- guint type,
- const gchar *text,
- DBusGMethodInvocation *context)
-{
- /* silently swallow the message */
- tp_svc_channel_type_text_return_from_send (context);
-}
-
-static void
-text_iface_init (gpointer iface,
- gpointer data)
-{
- TpSvcChannelTypeTextClass *klass = iface;
-
- tp_text_mixin_iface_init (iface, data);
-#define IMPLEMENT(x) tp_svc_channel_type_text_implement_##x (klass, text_##x)
- IMPLEMENT (send);
-#undef IMPLEMENT
-}
-
-GHashTable *
-tp_tests_text_channel_get_props (TpTestsTextChannelNull *self)
-{
- GHashTable *props;
- TpHandleType handle_type;
- TpHandle handle;
- gchar *target_id;
- gboolean requested;
- TpHandle initiator_handle;
- gchar *initiator_id;
- GStrv interfaces;
-
- g_object_get (self,
- "handle-type", &handle_type,
- "handle", &handle,
- "target-id", &target_id,
- "requested", &requested,
- "initiator-handle", &initiator_handle,
- "initiator-id", &initiator_id,
- "interfaces", &interfaces,
- NULL);
-
- props = tp_asv_new (
- TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT,
- TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, handle_type,
- TP_PROP_CHANNEL_TARGET_HANDLE, G_TYPE_UINT, handle,
- TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, target_id,
- TP_PROP_CHANNEL_REQUESTED, G_TYPE_BOOLEAN, requested,
- TP_PROP_CHANNEL_INITIATOR_HANDLE, G_TYPE_UINT, initiator_handle,
- TP_PROP_CHANNEL_INITIATOR_ID, G_TYPE_STRING, initiator_id,
- TP_PROP_CHANNEL_INTERFACES, G_TYPE_STRV, interfaces,
- NULL);
-
- g_free (target_id);
- g_free (initiator_id);
- g_strfreev (interfaces);
- return props;
-}
-
-G_GNUC_END_IGNORE_DEPRECATIONS
diff --git a/tests/lib/textchan-null.h b/tests/lib/textchan-null.h
deleted file mode 100644
index 076defb..0000000
--- a/tests/lib/textchan-null.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * /dev/null as a text channel
- *
- * Copyright (C) 2008 Collabora Ltd. <http://www.collabora.co.uk/>
- * Copyright (C) 2008 Nokia Corporation
- *
- * Copying and distribution of this file, with or without modification,
- * are permitted in any medium without royalty provided the copyright
- * notice and this notice are preserved.
- */
-
-#ifndef __TP_TESTS_TEXT_CHANNEL_NULL_H__
-#define __TP_TESTS_TEXT_CHANNEL_NULL_H__
-
-#include <glib-object.h>
-#include <telepathy-glib/telepathy-glib.h>
-
-G_BEGIN_DECLS
-
-typedef struct _TpTestsTextChannelNull TpTestsTextChannelNull;
-typedef struct _TpTestsTextChannelNullClass TpTestsTextChannelNullClass;
-typedef struct _TpTestsTextChannelNullPrivate TpTestsTextChannelNullPrivate;
-
-GType tp_tests_text_channel_null_get_type (void);
-
-#define TP_TESTS_TYPE_TEXT_CHANNEL_NULL \
- (tp_tests_text_channel_null_get_type ())
-#define TP_TESTS_TEXT_CHANNEL_NULL(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_NULL, \
- TpTestsTextChannelNull))
-#define TP_TESTS_TEXT_CHANNEL_NULL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_TEXT_CHANNEL_NULL, \
- TpTestsTextChannelNullClass))
-#define TP_TESTS_IS_TEXT_CHANNEL_NULL(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_NULL))
-#define TP_TESTS_IS_TEXT_CHANNEL_NULL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_TEXT_CHANNEL_NULL))
-#define TP_TESTS_TEXT_CHANNEL_NULL_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_TEXT_CHANNEL_NULL, \
- TpTestsTextChannelNullClass))
-
-struct _TpTestsTextChannelNullClass {
- GObjectClass parent_class;
-
- TpTextMixinClass text_class;
-};
-
-struct _TpTestsTextChannelNull {
- GObject parent;
- TpTextMixin text;
-
- guint get_handle_called;
- guint get_interfaces_called;
- guint get_channel_type_called;
-
- TpTestsTextChannelNullPrivate *priv;
-};
-
-/* Subclass with D-Bus properties */
-
-typedef struct _TestPropsTextChannel TpTestsPropsTextChannel;
-typedef struct _TestPropsTextChannelClass TpTestsPropsTextChannelClass;
-
-struct _TestPropsTextChannel {
- TpTestsTextChannelNull parent;
-
- GHashTable *dbus_property_interfaces_retrieved;
-};
-
-struct _TestPropsTextChannelClass {
- TpTestsTextChannelNullClass parent;
-
- TpDBusPropertiesMixinClass dbus_properties_class;
-};
-
-GType tp_tests_props_text_channel_get_type (void);
-
-#define TP_TESTS_TYPE_PROPS_TEXT_CHANNEL \
- (tp_tests_props_text_channel_get_type ())
-#define TP_TESTS_PROPS_TEXT_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, \
- TpTestsPropsTextChannel))
-#define TP_TESTS_PROPS_TEXT_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, \
- TpTestsPropsTextChannelClass))
-#define TP_TESTS_IS_PROPS_TEXT_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL))
-#define TP_TESTS_IS_PROPS_TEXT_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL))
-#define TP_TESTS_PROPS_TEXT_CHANNEL_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, \
- TpTestsPropsTextChannelClass))
-
-/* Subclass with D-Bus properties and Group */
-
-typedef struct _TestPropsGroupTextChannel TpTestsPropsGroupTextChannel;
-typedef struct _TestPropsGroupTextChannelClass TpTestsPropsGroupTextChannelClass;
-
-struct _TestPropsGroupTextChannel {
- TpTestsPropsTextChannel parent;
-
- TpGroupMixin group;
-};
-
-struct _TestPropsGroupTextChannelClass {
- TpTestsPropsTextChannelClass parent;
-
- TpGroupMixinClass group_class;
-};
-
-GType tp_tests_props_group_text_channel_get_type (void);
-
-#define TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL \
- (tp_tests_props_group_text_channel_get_type ())
-#define TP_TESTS_PROPS_GROUP_TEXT_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL, \
- TpTestsPropsGroupTextChannel))
-#define TP_TESTS_PROPS_GROUP_TEXT_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL, \
- TpTestsPropsGroupTextChannelClass))
-#define TP_TESTS_IS_PROPS_GROUP_TEXT_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL))
-#define TP_TESTS_IS_PROPS_GROUP_TEXT_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL))
-#define TP_TESTS_PROPS_GROUP_TEXT_CHANNEL_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_PROPS_GROUP_TEXT_CHANNEL, \
- TpTestsPropsGroupTextChannelClass))
-
-void tp_tests_text_channel_null_close (TpTestsTextChannelNull *self);
-
-GHashTable * tp_tests_text_channel_get_props (TpTestsTextChannelNull *self);
-
-G_END_DECLS
-
-#endif /* #ifndef __TP_TESTS_TEXT_CHANNEL_NULL_H__ */