Blame src/tests/ibus-bus.c

Packit Service 1d8f1c
/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
Packit Service 1d8f1c
Packit Service 1d8f1c
#include <string.h>
Packit Service 1d8f1c
#include "ibus.h"
Packit Service 1d8f1c
Packit Service 1d8f1c
static IBusBus *bus;
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
print_engines (const GList *engines)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    for (; engines; engines = g_list_next (engines)) {
Packit Service 1d8f1c
        IBusEngineDesc *engine_desc = IBUS_ENGINE_DESC (engines->data);
Packit Service 1d8f1c
        g_assert (engine_desc);
Packit Service 1d8f1c
#if 0
Packit Service 1d8f1c
        g_debug ("%s (id:%s, icon:%s)",
Packit Service 1d8f1c
                 ibus_engine_desc_get_longname (engine_desc),
Packit Service 1d8f1c
                 ibus_engine_desc_get_name (engine_desc),
Packit Service 1d8f1c
                 ibus_engine_desc_get_icon (engine_desc));
Packit Service 1d8f1c
#endif
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
#ifndef IBUS_DISABLE_DEPRECATED
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_list_active_engines (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GList *engines;
Packit Service 1d8f1c
    IBUS_TYPE_ENGINE_DESC;
Packit Service 1d8f1c
Packit Service 1d8f1c
    engines = ibus_bus_list_active_engines (bus);
Packit Service 1d8f1c
    print_engines (engines);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_list_foreach (engines, (GFunc) g_object_unref, NULL);
Packit Service 1d8f1c
    g_list_free (engines);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
#endif /* IBUS_DISABLE_DEPRECATED */
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_list_engines (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GList *engines;
Packit Service 1d8f1c
    IBUS_TYPE_ENGINE_DESC;
Packit Service 1d8f1c
Packit Service 1d8f1c
    engines = ibus_bus_list_engines (bus);
Packit Service 1d8f1c
    print_engines (engines);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_list_foreach (engines, (GFunc) g_object_unref, NULL);
Packit Service 1d8f1c
    g_list_free (engines);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
name_owner_changed_cb (IBusBus  *bus,
Packit Service 1d8f1c
                       gchar    *name,
Packit Service 1d8f1c
                       gchar    *old,
Packit Service 1d8f1c
                       gchar    *new,
Packit Service 1d8f1c
                       gpointer  data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    g_debug ("%s: bus=%s, old=%s, new=%s", G_STRFUNC, name, old, new);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void call_next_async_function (void);
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_request_name_async (GObject *source_object,
Packit Service 1d8f1c
                           GAsyncResult *res,
Packit Service 1d8f1c
                           gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    guint id = ibus_bus_request_name_async_finish (bus, res, &error);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_assert (id != 0);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_debug ("request name returned %d: ", id);
Packit Service 1d8f1c
Packit Service 1d8f1c
    switch (id) {
Packit Service 1d8f1c
    case IBUS_BUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
Packit Service 1d8f1c
        g_debug ("got ownership");
Packit Service 1d8f1c
        break;
Packit Service 1d8f1c
    case IBUS_BUS_REQUEST_NAME_REPLY_IN_QUEUE:
Packit Service 1d8f1c
        g_debug ("got queued");
Packit Service 1d8f1c
        break;
Packit Service 1d8f1c
    case IBUS_BUS_REQUEST_NAME_REPLY_EXISTS:
Packit Service 1d8f1c
        g_debug ("request already in queue");
Packit Service 1d8f1c
        break;
Packit Service 1d8f1c
    case IBUS_BUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
Packit Service 1d8f1c
        g_debug ("already owner");
Packit Service 1d8f1c
        break;
Packit Service 1d8f1c
    default:
Packit Service 1d8f1c
        g_assert_not_reached ();
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
Packit Service 1d8f1c
    if (error) {
Packit Service 1d8f1c
        g_warning ("Error %s: %s", G_STRFUNC, error->message);
Packit Service 1d8f1c
        g_error_free (error);
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_debug ("ibus_bus_request_name_async_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_request_name_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_set_watch_dbus_signal (bus, TRUE);
Packit Service 1d8f1c
    ibus_bus_set_watch_ibus_signal (bus, TRUE);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_signal_connect (bus, "name-owner-changed",
Packit Service 1d8f1c
                      (GCallback) name_owner_changed_cb, NULL);
Packit Service 1d8f1c
Packit Service 1d8f1c
    ibus_bus_request_name_async (bus,
Packit Service 1d8f1c
                                 "org.freedesktop.IBus.IBusBusTest",
Packit Service 1d8f1c
                                 IBUS_BUS_NAME_FLAG_REPLACE_EXISTING,
Packit Service 1d8f1c
                                 -1, /* timeout */
Packit Service 1d8f1c
                                 NULL, /* cancellable */
Packit Service 1d8f1c
                                 finish_request_name_async,
Packit Service 1d8f1c
                                 NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_name_has_owner_async (GObject *source_object,
Packit Service 1d8f1c
                             GAsyncResult *res,
Packit Service 1d8f1c
                             gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    gboolean has_owner = ibus_bus_name_has_owner_async_finish (bus,
Packit Service 1d8f1c
                                                               res,
Packit Service 1d8f1c
                                                               &error);
Packit Service 1d8f1c
    g_assert (has_owner);
Packit Service 1d8f1c
    g_debug ("ibus_bus_name_has_owner_async_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_name_has_owner_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_name_has_owner_async (bus,
Packit Service 1d8f1c
                                   "org.freedesktop.IBus.IBusBusTest",
Packit Service 1d8f1c
                                   -1, /* timeout */
Packit Service 1d8f1c
                                   NULL, /* cancellable */
Packit Service 1d8f1c
                                   finish_name_has_owner_async,
Packit Service 1d8f1c
                                   NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_name_owner_async (GObject *source_object,
Packit Service 1d8f1c
                             GAsyncResult *res,
Packit Service 1d8f1c
                             gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    gchar *owner = ibus_bus_get_name_owner_async_finish (bus,
Packit Service 1d8f1c
                                                         res,
Packit Service 1d8f1c
                                                         &error);
Packit Service 1d8f1c
    g_assert (owner);
Packit Service 1d8f1c
    g_free (owner);
Packit Service 1d8f1c
    g_debug ("ibus_bus_name_get_name_owner_async_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_name_owner_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_name_owner_async (bus,
Packit Service 1d8f1c
                                   "org.freedesktop.IBus.IBusBusTest",
Packit Service 1d8f1c
                                   -1, /* timeout */
Packit Service 1d8f1c
                                   NULL, /* cancellable */
Packit Service 1d8f1c
                                   finish_get_name_owner_async,
Packit Service 1d8f1c
                                   NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_release_name_async (GObject *source_object,
Packit Service 1d8f1c
                           GAsyncResult *res,
Packit Service 1d8f1c
                           gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    guint id = ibus_bus_release_name_async_finish (bus,
Packit Service 1d8f1c
                                                   res,
Packit Service 1d8f1c
                                                   &error);
Packit Service 1d8f1c
    g_assert (id != 0);
Packit Service 1d8f1c
    g_debug ("ibus_bus_release_name_async_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_release_name_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_release_name_async (bus,
Packit Service 1d8f1c
                                 "org.freedesktop.IBus.IBusBusTest",
Packit Service 1d8f1c
                                 -1, /* timeout */
Packit Service 1d8f1c
                                 NULL, /* cancellable */
Packit Service 1d8f1c
                                 finish_release_name_async,
Packit Service 1d8f1c
                                 NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_add_match_async (GObject *source_object,
Packit Service 1d8f1c
                        GAsyncResult *res,
Packit Service 1d8f1c
                        gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    gboolean result = ibus_bus_add_match_async_finish (bus,
Packit Service 1d8f1c
                                                       res,
Packit Service 1d8f1c
                                                       &error);
Packit Service 1d8f1c
    g_assert (result);
Packit Service 1d8f1c
    g_debug ("ibus_bus_add_match_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_add_match_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_add_match_async (bus,
Packit Service 1d8f1c
                              "type='signal'",
Packit Service 1d8f1c
                              -1, /* timeout */
Packit Service 1d8f1c
                              NULL, /* cancellable */
Packit Service 1d8f1c
                              finish_add_match_async,
Packit Service 1d8f1c
                              NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_remove_match_async (GObject *source_object,
Packit Service 1d8f1c
                           GAsyncResult *res,
Packit Service 1d8f1c
                           gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    gboolean result = ibus_bus_remove_match_async_finish (bus,
Packit Service 1d8f1c
                                                          res,
Packit Service 1d8f1c
                                                          &error);
Packit Service 1d8f1c
    g_assert (result);
Packit Service 1d8f1c
    g_debug ("ibus_bus_remove_match_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_remove_match_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_remove_match_async (bus,
Packit Service 1d8f1c
                                 "type='signal'",
Packit Service 1d8f1c
                                 -1, /* timeout */
Packit Service 1d8f1c
                                 NULL, /* cancellable */
Packit Service 1d8f1c
                                 finish_remove_match_async,
Packit Service 1d8f1c
                                 NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static int create_input_context_count = 0;
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_create_input_context_async_sucess (GObject      *source_object,
Packit Service 1d8f1c
                                          GAsyncResult *res,
Packit Service 1d8f1c
                                          gpointer      user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GMainLoop *loop = (GMainLoop *)user_data;
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    IBusInputContext *context =
Packit Service 1d8f1c
          ibus_bus_create_input_context_async_finish (bus, res, &error);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_assert (IBUS_IS_INPUT_CONTEXT (context));
Packit Service 1d8f1c
    g_object_unref (context);
Packit Service 1d8f1c
    if (--create_input_context_count == 0)
Packit Service 1d8f1c
        g_main_loop_quit (loop);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_create_input_context_async_failed (GObject      *source_object,
Packit Service 1d8f1c
                                          GAsyncResult *res,
Packit Service 1d8f1c
                                          gpointer      user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GMainLoop *loop = (GMainLoop *)user_data;
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    IBusInputContext *context =
Packit Service 1d8f1c
            ibus_bus_create_input_context_async_finish (bus, res, &error);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_assert (context == NULL);
Packit Service 1d8f1c
    g_assert (error != NULL);
Packit Service 1d8f1c
    g_error_free (error);
Packit Service 1d8f1c
    if (--create_input_context_count <= 0)
Packit Service 1d8f1c
        g_main_loop_quit (loop);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_create_input_context_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GMainLoop *loop = NULL;
Packit Service 1d8f1c
    GCancellable *cancellable = NULL;
Packit Service 1d8f1c
Packit Service 1d8f1c
    /* create an IC */
Packit Service 1d8f1c
    create_input_context_count = 1;
Packit Service 1d8f1c
    loop = g_main_loop_new (NULL, TRUE);
Packit Service 1d8f1c
    ibus_bus_create_input_context_async (bus,
Packit Service 1d8f1c
            "test-async",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_create_input_context_async_sucess,
Packit Service 1d8f1c
            loop); /* user_data */
Packit Service 1d8f1c
    g_main_loop_run (loop);
Packit Service 1d8f1c
    g_main_loop_unref (loop);
Packit Service 1d8f1c
Packit Service 1d8f1c
    /* call create, and then cancel */
Packit Service 1d8f1c
    create_input_context_count = 1;
Packit Service 1d8f1c
    loop = g_main_loop_new (NULL, TRUE);
Packit Service 1d8f1c
    cancellable = g_cancellable_new ();
Packit Service 1d8f1c
    ibus_bus_create_input_context_async (bus,
Packit Service 1d8f1c
            "test-async",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            cancellable, /* cancellable */
Packit Service 1d8f1c
            finish_create_input_context_async_failed,
Packit Service 1d8f1c
            loop); /* user_data */
Packit Service 1d8f1c
    g_cancellable_cancel (cancellable);
Packit Service 1d8f1c
    g_object_unref (cancellable);
Packit Service 1d8f1c
    g_main_loop_run (loop);
Packit Service 1d8f1c
    g_main_loop_unref (loop);
Packit Service 1d8f1c
Packit Service 1d8f1c
    /* ceate four IC, and cancel two */
Packit Service 1d8f1c
    create_input_context_count = 4;
Packit Service 1d8f1c
    loop = g_main_loop_new (NULL, TRUE);
Packit Service 1d8f1c
    cancellable = g_cancellable_new ();
Packit Service 1d8f1c
    ibus_bus_create_input_context_async (bus,
Packit Service 1d8f1c
            "test-async",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            cancellable, /* cancellable */
Packit Service 1d8f1c
            finish_create_input_context_async_failed,
Packit Service 1d8f1c
            loop); /* user_data */
Packit Service 1d8f1c
    ibus_bus_create_input_context_async (bus,
Packit Service 1d8f1c
            "test-async",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_create_input_context_async_sucess,
Packit Service 1d8f1c
            loop); /* user_data */
Packit Service 1d8f1c
    ibus_bus_create_input_context_async (bus,
Packit Service 1d8f1c
            "test-async",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_create_input_context_async_sucess,
Packit Service 1d8f1c
            loop); /* user_data */
Packit Service 1d8f1c
    ibus_bus_create_input_context_async (bus,
Packit Service 1d8f1c
            "test-async",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            cancellable, /* cancellable */
Packit Service 1d8f1c
            finish_create_input_context_async_failed,
Packit Service 1d8f1c
            loop); /* user_data */
Packit Service 1d8f1c
    g_cancellable_cancel (cancellable);
Packit Service 1d8f1c
    g_object_unref (cancellable);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_main_loop_run (loop);
Packit Service 1d8f1c
    g_main_loop_unref (loop);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_current_input_context_async (GObject *source_object,
Packit Service 1d8f1c
                                    GAsyncResult *res,
Packit Service 1d8f1c
                                    gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    g_free (ibus_bus_current_input_context_async_finish (bus,
Packit Service 1d8f1c
                                                         res,
Packit Service 1d8f1c
                                                         &error));
Packit Service 1d8f1c
    // no null check.
Packit Service 1d8f1c
    g_debug ("ibus_bus_current_input_context_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_current_input_context_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_current_input_context_async (bus,
Packit Service 1d8f1c
                                          -1, /* timeout */
Packit Service 1d8f1c
                                          NULL, /* cancellable */
Packit Service 1d8f1c
                                          finish_current_input_context_async,
Packit Service 1d8f1c
                                          NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_list_engines_async (GObject *source_object,
Packit Service 1d8f1c
                           GAsyncResult *res,
Packit Service 1d8f1c
                           gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    GList *engines = ibus_bus_list_engines_async_finish (bus,
Packit Service 1d8f1c
                                                         res,
Packit Service 1d8f1c
                                                         &error);
Packit Service 1d8f1c
    // no null check.
Packit Service 1d8f1c
    g_list_foreach (engines, (GFunc) g_object_unref, NULL);
Packit Service 1d8f1c
    g_list_free (engines);
Packit Service 1d8f1c
    g_debug ("ibus_bus_list_engines_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_list_engines_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_list_engines_async (bus,
Packit Service 1d8f1c
                                 -1, /* timeout */
Packit Service 1d8f1c
                                 NULL, /* cancellable */
Packit Service 1d8f1c
                                 finish_list_engines_async,
Packit Service 1d8f1c
                                 NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
#ifndef IBUS_DISABLE_DEPRECATED
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_list_active_engines_async (GObject *source_object,
Packit Service 1d8f1c
                                  GAsyncResult *res,
Packit Service 1d8f1c
                                  gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    GList *engines = ibus_bus_list_active_engines_async_finish (bus,
Packit Service 1d8f1c
                                                                res,
Packit Service 1d8f1c
                                                                &error);
Packit Service 1d8f1c
    // no null check.
Packit Service 1d8f1c
    g_list_foreach (engines, (GFunc) g_object_unref, NULL);
Packit Service 1d8f1c
    g_list_free (engines);
Packit Service 1d8f1c
    g_debug ("ibus_bus_list_active_engines_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_list_active_engines_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_list_active_engines_async (bus,
Packit Service 1d8f1c
                                        -1, /* timeout */
Packit Service 1d8f1c
                                        NULL, /* cancellable */
Packit Service 1d8f1c
                                        finish_list_active_engines_async,
Packit Service 1d8f1c
                                        NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_use_sys_layout_async (GObject *source_object,
Packit Service 1d8f1c
                                 GAsyncResult *res,
Packit Service 1d8f1c
                                 gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    ibus_bus_get_use_sys_layout_async_finish (bus,
Packit Service 1d8f1c
                                              res,
Packit Service 1d8f1c
                                              &error);
Packit Service 1d8f1c
    g_debug ("ibus_bus_get_use_sys_layout_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_use_sys_layout_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_use_sys_layout_async (bus,
Packit Service 1d8f1c
                                       -1, /* timeout */
Packit Service 1d8f1c
                                       NULL, /* cancellable */
Packit Service 1d8f1c
                                       finish_get_use_sys_layout_async,
Packit Service 1d8f1c
                                       NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_use_global_engine_async (GObject *source_object,
Packit Service 1d8f1c
                                    GAsyncResult *res,
Packit Service 1d8f1c
                                    gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    ibus_bus_get_use_global_engine_async_finish (bus,
Packit Service 1d8f1c
                                                 res,
Packit Service 1d8f1c
                                                 &error);
Packit Service 1d8f1c
    g_debug ("ibus_bus_get_use_global_engine_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_use_global_engine_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_use_global_engine_async (bus,
Packit Service 1d8f1c
                                          -1, /* timeout */
Packit Service 1d8f1c
                                          NULL, /* cancellable */
Packit Service 1d8f1c
                                          finish_get_use_global_engine_async,
Packit Service 1d8f1c
                                          NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_is_global_engine_enabled_async (GObject *source_object,
Packit Service 1d8f1c
                                       GAsyncResult *res,
Packit Service 1d8f1c
                                       gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    ibus_bus_is_global_engine_enabled_async_finish (bus,
Packit Service 1d8f1c
                                                    res,
Packit Service 1d8f1c
                                                    &error);
Packit Service 1d8f1c
    g_debug ("ibus_bus_is_global_engine_enabled_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_is_global_engine_enabled_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_is_global_engine_enabled_async (bus,
Packit Service 1d8f1c
                                             -1, /* timeout */
Packit Service 1d8f1c
                                             NULL, /* cancellable */
Packit Service 1d8f1c
                                             finish_is_global_engine_enabled_async,
Packit Service 1d8f1c
                                             NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
#endif /* IBUS_DISABLE_DEPRECATED */
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_global_engine_async (GObject *source_object,
Packit Service 1d8f1c
                                GAsyncResult *res,
Packit Service 1d8f1c
                                gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    IBusEngineDesc *desc = ibus_bus_get_global_engine_async_finish (bus,
Packit Service 1d8f1c
                                                                    res,
Packit Service 1d8f1c
                                                                    &error);
Packit Service 1d8f1c
    if (desc)
Packit Service 1d8f1c
        g_object_unref (desc);
Packit Service 1d8f1c
    g_debug ("ibus_bus_get_global_engine_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_global_engine_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_global_engine_async (bus,
Packit Service 1d8f1c
                                      -1, /* timeout */
Packit Service 1d8f1c
                                      NULL, /* cancellable */
Packit Service 1d8f1c
                                      finish_get_global_engine_async,
Packit Service 1d8f1c
                                      NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_set_global_engine_async (GObject *source_object,
Packit Service 1d8f1c
                                GAsyncResult *res,
Packit Service 1d8f1c
                                gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    ibus_bus_set_global_engine_async_finish (bus,
Packit Service 1d8f1c
                                             res,
Packit Service 1d8f1c
                                             &error);
Packit Service 1d8f1c
    g_debug ("ibus_bus_set_global_engine_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_set_global_engine_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_set_global_engine_async (bus,
Packit Service 1d8f1c
                                      "anthy",
Packit Service 1d8f1c
                                      -1, /* timeout */
Packit Service 1d8f1c
                                      NULL, /* cancellable */
Packit Service 1d8f1c
                                      finish_set_global_engine_async,
Packit Service 1d8f1c
                                      NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_preload_engines_async (GObject      *source_object,
Packit Service 1d8f1c
                              GAsyncResult *res,
Packit Service 1d8f1c
                              gpointer      user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    ibus_bus_preload_engines_async_finish (bus, res, &error);
Packit Service 1d8f1c
    g_debug ("ibus_bus_preload_engines_async_finish: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_preload_engines_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    const gchar *preload_engines[] = { "xkb:us::eng", NULL };
Packit Service 1d8f1c
Packit Service 1d8f1c
    ibus_bus_preload_engines_async (
Packit Service 1d8f1c
            bus,
Packit Service 1d8f1c
            preload_engines,
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_preload_engines_async,
Packit Service 1d8f1c
            NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_get_address (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GVariant *result;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property (bus, "Address");
Packit Service 1d8f1c
    g_variant_get_string (result, NULL);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_get_current_input_context (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GVariant *result;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property (bus, "CurrentInputContext");
Packit Service 1d8f1c
    g_variant_get_string (result, NULL);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_get_engines (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GVariant *result, *var;
Packit Service 1d8f1c
    GVariantIter *iter;
Packit Service 1d8f1c
    GList *engines = NULL;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property (bus, "Engines");
Packit Service 1d8f1c
    iter = g_variant_iter_new (result);
Packit Service 1d8f1c
    while (g_variant_iter_loop (iter, "v", &var)) {
Packit Service 1d8f1c
        IBusSerializable *serializable = ibus_serializable_deserialize (var);
Packit Service 1d8f1c
        g_object_ref_sink (serializable);
Packit Service 1d8f1c
        engines = g_list_append (engines, serializable);
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
    g_variant_iter_free (iter);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
Packit Service 1d8f1c
    print_engines (engines);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_list_foreach (engines, (GFunc) g_object_unref, NULL);
Packit Service 1d8f1c
    g_list_free (engines);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_get_global_engine (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GVariant *result, *obj;
Packit Service 1d8f1c
    IBusEngineDesc *desc = NULL;
Packit Service 1d8f1c
Packit Service 1d8f1c
    if (!ibus_bus_set_global_engine (bus, "xkb:us::eng"))
Packit Service 1d8f1c
        return;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property (bus, "GlobalEngine");
Packit Service 1d8f1c
    g_assert (result);
Packit Service 1d8f1c
Packit Service 1d8f1c
    obj = g_variant_get_variant (result);
Packit Service 1d8f1c
    g_assert (obj);
Packit Service 1d8f1c
Packit Service 1d8f1c
    desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj));
Packit Service 1d8f1c
    g_assert (desc);
Packit Service 1d8f1c
    g_assert_cmpstr (ibus_engine_desc_get_name (desc), ==, "xkb:us::eng");
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_variant_unref (obj);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_object_unref (desc);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_set_preload_engines (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    const gchar *preload_engines[] = { "xkb:us::eng", "xkb:jp::jpn", NULL };
Packit Service 1d8f1c
    GVariant *variant;
Packit Service 1d8f1c
Packit Service 1d8f1c
    variant = g_variant_new_strv (preload_engines, -1);
Packit Service 1d8f1c
    ibus_bus_set_ibus_property (bus, "PreloadEngines", variant);
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_address_async (GObject      *source_object,
Packit Service 1d8f1c
                          GAsyncResult *res,
Packit Service 1d8f1c
                          gpointer      user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    GVariant *result;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property_async_finish (bus, res, &error);
Packit Service 1d8f1c
    g_variant_get_string (result, NULL);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
    g_debug ("finish_get_address_async: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_address_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_ibus_property_async (
Packit Service 1d8f1c
            bus,
Packit Service 1d8f1c
            "Address",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_get_address_async,
Packit Service 1d8f1c
            NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_current_input_context_async (GObject      *source_object,
Packit Service 1d8f1c
                                        GAsyncResult *res,
Packit Service 1d8f1c
                                        gpointer      user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    GVariant *result;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property_async_finish (bus, res, &error);
Packit Service 1d8f1c
    g_variant_get_string (result, NULL);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
    g_debug ("finish_get_current_input_context_async: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_current_input_context_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_ibus_property_async (
Packit Service 1d8f1c
            bus,
Packit Service 1d8f1c
            "CurrentInputContext",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_get_current_input_context_async,
Packit Service 1d8f1c
            NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_engines_async (GObject      *source_object,
Packit Service 1d8f1c
                          GAsyncResult *res,
Packit Service 1d8f1c
                          gpointer      user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    GVariant *result, *var;
Packit Service 1d8f1c
    GVariantIter *iter;
Packit Service 1d8f1c
    GList *engines = NULL;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property_async_finish (bus, res, &error);
Packit Service 1d8f1c
    iter = g_variant_iter_new (result);
Packit Service 1d8f1c
    while (g_variant_iter_loop (iter, "v", &var)) {
Packit Service 1d8f1c
        IBusSerializable *serializable = ibus_serializable_deserialize (var);
Packit Service 1d8f1c
        g_object_ref_sink (serializable);
Packit Service 1d8f1c
        engines = g_list_append (engines, serializable);
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
    g_variant_iter_free (iter);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
Packit Service 1d8f1c
    print_engines (engines);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_list_foreach (engines, (GFunc) g_object_unref, NULL);
Packit Service 1d8f1c
    g_list_free (engines);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_debug ("finish_get_engines_async: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_engines_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_ibus_property_async (
Packit Service 1d8f1c
            bus,
Packit Service 1d8f1c
            "Engines",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_get_engines_async,
Packit Service 1d8f1c
            NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_get_prop_global_engine_async (GObject *source_object,
Packit Service 1d8f1c
                                     GAsyncResult *res,
Packit Service 1d8f1c
                                     gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    GVariant *result, *obj;
Packit Service 1d8f1c
    IBusEngineDesc *desc = NULL;
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = ibus_bus_get_ibus_property_async_finish (bus, res, &error);
Packit Service 1d8f1c
    obj = g_variant_get_variant (result);
Packit Service 1d8f1c
    desc = IBUS_ENGINE_DESC (ibus_serializable_deserialize (obj));
Packit Service 1d8f1c
    g_variant_unref (obj);
Packit Service 1d8f1c
    g_variant_unref (result);
Packit Service 1d8f1c
Packit Service 1d8f1c
    if (desc)
Packit Service 1d8f1c
        g_object_unref (desc);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_debug ("finish_get_prop_global_engine_async: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_get_prop_global_engine_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    ibus_bus_get_ibus_property_async (
Packit Service 1d8f1c
            bus,
Packit Service 1d8f1c
            "GlobalEngine",
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_get_prop_global_engine_async,
Packit Service 1d8f1c
            NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_set_preload_engines_async (GObject      *source_object,
Packit Service 1d8f1c
                                  GAsyncResult *res,
Packit Service 1d8f1c
                                  gpointer      user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
Packit Service 1d8f1c
    ibus_bus_set_ibus_property_async_finish (bus, res, &error);
Packit Service 1d8f1c
    g_debug ("finish_set_preload_engines_async: OK");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_set_preload_engines_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    const gchar *preload_engines[] = { "xkb:us::eng", "xkb:jp::jpn", NULL };
Packit Service 1d8f1c
    GVariant *variant;
Packit Service 1d8f1c
Packit Service 1d8f1c
    variant = g_variant_new_strv (preload_engines, -1);
Packit Service 1d8f1c
    ibus_bus_set_ibus_property_async (
Packit Service 1d8f1c
            bus,
Packit Service 1d8f1c
            "PreloadEngines",
Packit Service 1d8f1c
            variant,
Packit Service 1d8f1c
            -1, /* timeout */
Packit Service 1d8f1c
            NULL, /* cancellable */
Packit Service 1d8f1c
            finish_set_preload_engines_async,
Packit Service 1d8f1c
            NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
finish_exit_async (GObject *source_object,
Packit Service 1d8f1c
                   GAsyncResult *res,
Packit Service 1d8f1c
                   gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    GError *error = NULL;
Packit Service 1d8f1c
    gboolean result = ibus_bus_exit_async_finish (bus,
Packit Service 1d8f1c
                                                  res,
Packit Service 1d8f1c
                                                  &error);
Packit Service 1d8f1c
    g_assert (result);
Packit Service 1d8f1c
    g_debug ("ibus_bus_exit_finish: OK");
Packit Service 1d8f1c
    g_usleep (G_USEC_PER_SEC);
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
start_exit_async (void)
Packit Service 1d8f1c
{
rpm-build 0a7332
    /* When `./runtest ibus-bus` runs, ibus-daemon sometimes failed to
rpm-build 0a7332
     * restart because closing a file descriptor was failed in
rpm-build 0a7332
     * bus/server.c:_restart_server() with a following error:
rpm-build 0a7332
     *     "inotify read(): Bad file descriptor"
rpm-build 0a7332
     * Now g_usleep() is added here to write down the buffer and not to
rpm-build 0a7332
     * fail to restart ibus-daemon.
rpm-build 0a7332
     */
rpm-build 0a7332
    g_usleep (G_USEC_PER_SEC);
Packit Service 1d8f1c
    ibus_bus_exit_async (bus,
Packit Service 1d8f1c
                         TRUE, /* restart */
Packit Service 1d8f1c
                         -1, /* timeout */
Packit Service 1d8f1c
                         NULL, /* cancellable */
Packit Service 1d8f1c
                         finish_exit_async,
Packit Service 1d8f1c
                         NULL); /* user_data */
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static gboolean
Packit Service 1d8f1c
test_async_apis_finish (gpointer user_data)
Packit Service 1d8f1c
{
rpm-build 0a7332
    /* INFO: g_warning() causes SEGV with runtest script */
rpm-build 0a7332
    if (ibus_get_address () == NULL)
rpm-build 0a7332
        g_warning ("ibus-daemon does not restart yet from start_exit_async().");
Packit Service 1d8f1c
    ibus_quit ();
Packit Service 1d8f1c
    return FALSE;
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_get_engines_by_names (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    IBusEngineDesc **engines = NULL;
Packit Service 1d8f1c
    const gchar *names[] = {
Packit Service 1d8f1c
        "xkb:us::eng",
Packit Service 1d8f1c
        "xkb:ca:eng:eng",
Packit Service 1d8f1c
        "xkb:fr::fra",
Packit Service 1d8f1c
        "xkb:jp::jpn",
Packit Service 1d8f1c
        "invalid_engine_name",
Packit Service 1d8f1c
        NULL,
Packit Service 1d8f1c
    };
Packit Service 1d8f1c
Packit Service 1d8f1c
    engines = ibus_bus_get_engines_by_names (bus, names);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_assert(engines != NULL);
Packit Service 1d8f1c
    IBusEngineDesc **p;
Packit Service 1d8f1c
Packit Service 1d8f1c
    gint i = 0;
Packit Service 1d8f1c
    for (p = engines; *p != NULL; p++) {
Packit Service 1d8f1c
        g_assert (IBUS_IS_ENGINE_DESC (*p));
Packit Service 1d8f1c
        g_assert_cmpstr (names[i], ==, ibus_engine_desc_get_name (*p));
Packit Service 1d8f1c
        i++;
Packit Service 1d8f1c
        g_object_unref (*p);
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
Packit Service 1d8f1c
    // The last engine does not exist.
Packit Service 1d8f1c
    g_assert_cmpint (i, ==, G_N_ELEMENTS(names) - 2);
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_free (engines);
Packit Service 1d8f1c
Packit Service 1d8f1c
    engines = NULL;
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_async_apis (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    g_debug ("start");
Packit Service 1d8f1c
    call_next_async_function ();
Packit Service 1d8f1c
    ibus_main ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
call_next_async_function (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    static void (*async_functions[])(void) = {
Packit Service 1d8f1c
        start_request_name_async,
Packit Service 1d8f1c
        start_name_has_owner_async,
Packit Service 1d8f1c
        start_get_name_owner_async,
Packit Service 1d8f1c
        start_release_name_async,
Packit Service 1d8f1c
        start_add_match_async,
Packit Service 1d8f1c
        start_remove_match_async,
Packit Service 1d8f1c
        start_current_input_context_async,
Packit Service 1d8f1c
        // FIXME test ibus_bus_register_component_async.
Packit Service 1d8f1c
        start_list_engines_async,
Packit Service 1d8f1c
        start_list_active_engines_async,
Packit Service 1d8f1c
        start_get_use_sys_layout_async,
Packit Service 1d8f1c
        start_get_use_global_engine_async,
Packit Service 1d8f1c
        start_is_global_engine_enabled_async,
Packit Service 1d8f1c
        start_set_global_engine_async,
Packit Service 1d8f1c
        start_get_global_engine_async,
Packit Service 1d8f1c
        start_preload_engines_async,
Packit Service 1d8f1c
        start_get_address_async,
Packit Service 1d8f1c
        start_get_current_input_context_async,
Packit Service 1d8f1c
        start_get_engines_async,
Packit Service 1d8f1c
        start_get_prop_global_engine_async,
Packit Service 1d8f1c
        start_set_preload_engines_async,
Packit Service 1d8f1c
        start_exit_async,
Packit Service 1d8f1c
    };
Packit Service 1d8f1c
    static guint index = 0;
Packit Service 1d8f1c
rpm-build 0a7332
    /* Use g_timeout_add to make sure test_async_apis finishes even if
rpm-build 0a7332
     * async_functions is empty.
rpm-build 0a7332
     */
Packit Service 1d8f1c
    if (index >= G_N_ELEMENTS (async_functions))
Packit Service 1d8f1c
        g_timeout_add (1, test_async_apis_finish, NULL);
Packit Service 1d8f1c
    else
Packit Service 1d8f1c
        (*async_functions[index++])();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
_bus_connected_cb (IBusBus *bus,
Packit Service 1d8f1c
                   gpointer user_data)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    g_assert (ibus_bus_is_connected (bus));
Packit Service 1d8f1c
    ibus_quit ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
static void
Packit Service 1d8f1c
test_bus_new_async (void)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    g_object_unref (bus);
Packit Service 1d8f1c
    bus = ibus_bus_new_async ();
Packit Service 1d8f1c
    g_signal_connect (bus, "connected", G_CALLBACK (_bus_connected_cb), NULL);
Packit Service 1d8f1c
    ibus_main ();
Packit Service 1d8f1c
}
Packit Service 1d8f1c
Packit Service 1d8f1c
gint
Packit Service 1d8f1c
main (gint    argc,
Packit Service 1d8f1c
      gchar **argv)
Packit Service 1d8f1c
{
Packit Service 1d8f1c
    gint result;
Packit Service 1d8f1c
    ibus_init ();
Packit Service 1d8f1c
    g_test_init (&argc, &argv, NULL);
Packit Service 1d8f1c
    bus = ibus_bus_new ();
Packit Service 1d8f1c
    g_object_unref (bus);
Packit Service 1d8f1c
    bus = ibus_bus_new (); // crosbug.com/17293
Packit Service 1d8f1c
Packit Service 1d8f1c
    if (!ibus_bus_is_connected (bus)) {
Packit Service 1d8f1c
        g_warning ("Not connected to ibus-daemon");
Packit Service 1d8f1c
        g_object_unref (bus);
Packit Service 1d8f1c
        return -1;
Packit Service 1d8f1c
    }
Packit Service 1d8f1c
Packit Service 1d8f1c
    g_test_add_func ("/ibus/list-engines", test_list_engines);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/list-active-engines", test_list_active_engines);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/create-input-context-async",
Packit Service 1d8f1c
                     test_create_input_context_async);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/get-engines-by-names", test_get_engines_by_names);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/get-address", test_get_address);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/get-current-input-context",
Packit Service 1d8f1c
                     test_get_current_input_context);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/get-engines", test_get_engines);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/get-global-engine", test_get_global_engine);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/set-preload-engines", test_set_preload_engines);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/async-apis", test_async_apis);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/bus-new-async", test_bus_new_async);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/bus-new-async/list-engines", test_list_engines);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/bus-new-async/list-active-engines", test_list_active_engines);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/bus-new-async/create-input-context-async",
Packit Service 1d8f1c
                     test_create_input_context_async);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/bus-new-async/get-engines-by-names", test_get_engines_by_names);
Packit Service 1d8f1c
    g_test_add_func ("/ibus/bus-new-async/async-apis", test_async_apis);
Packit Service 1d8f1c
Packit Service 1d8f1c
    result = g_test_run ();
Packit Service 1d8f1c
    g_object_unref (bus);
Packit Service 1d8f1c
Packit Service 1d8f1c
    return result;
Packit Service 1d8f1c
}