From 54060d44446cea023842e2a70ea3aec4857272b7 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 14:57:49 -0600 Subject: Initial proxy files, copying from the properties test. --- tests/test-glib-proxy-server.c | 109 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 tests/test-glib-proxy-server.c (limited to 'tests/test-glib-proxy-server.c') diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c new file mode 100644 index 0000000..091e550 --- /dev/null +++ b/tests/test-glib-proxy-server.c @@ -0,0 +1,109 @@ +/* +A test for libdbusmenu to ensure its quality. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould + +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 . +*/ + +#include + +#include +#include +#include + +#include +#include + +#include "test-glib-properties.h" + +static void +set_props (DbusmenuMenuitem * mi, gchar ** props) +{ + if (props == NULL) return; + + guint i; + for (i = 0; props[i] != NULL; i += 2) { + dbusmenu_menuitem_property_set(mi, props[i], props[i+1]); + } + + return; +} + +static DbusmenuMenuitem * +layout2menuitem (proplayout_t * layout) +{ + if (layout == NULL || layout->id == -1) return NULL; + + DbusmenuMenuitem * local = dbusmenu_menuitem_new_with_id(layout->id); + set_props(local, layout->properties); + + if (layout->submenu != NULL) { + guint count; + for (count = 0; layout->submenu[count].id != -1; count++) { + DbusmenuMenuitem * child = layout2menuitem(&layout->submenu[count]); + if (child != NULL) { + dbusmenu_menuitem_child_append(local, child); + } + } + } + + /* g_debug("Layout to menu return: 0x%X", (unsigned int)local); */ + return local; +} + +static guint layouton = 0; +static DbusmenuServer * server = NULL; +static GMainLoop * mainloop = NULL; + +static gboolean +timer_func (gpointer data) +{ + if (layouts[layouton].id == -1) { + g_main_loop_quit(mainloop); + return FALSE; + } + g_debug("Updating to Layout %d", layouton); + + DbusmenuMenuitem * mi = layout2menuitem(&layouts[layouton]); + dbusmenu_server_set_root(server, mi); + g_object_unref(G_OBJECT(mi)); + layouton++; + + return TRUE; +} + +int +main (int argc, char ** argv) +{ + g_type_init(); + + g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL)))); + + server = dbusmenu_server_new("/org/test"); + + timer_func(NULL); + g_timeout_add(2500, timer_func, NULL); + + mainloop = g_main_loop_new(NULL, FALSE); + g_main_loop_run(mainloop); + + g_object_unref(G_OBJECT(server)); + g_debug("Quiting"); + + return 0; +} + -- cgit v1.2.3 From f8f935ea451c7b102a6b83b72c90d73255dac139 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 15:15:45 -0600 Subject: Setting this stuff up. Woot. --- tests/test-glib-proxy-client.c | 5 +---- tests/test-glib-proxy-server.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'tests/test-glib-proxy-server.c') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index 434465a..7e3541a 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -154,10 +154,7 @@ main (int argc, char ** argv) { g_type_init(); - /* Make sure the server starts up and all that */ - g_usleep(500000); - - DbusmenuClient * client = dbusmenu_client_new(":1.0", "/org/test"); + DbusmenuClient * client = dbusmenu_client_new("test.proxy.first_proxy", "/org/test"); g_signal_connect(G_OBJECT(client), DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED, G_CALLBACK(layout_updated), NULL); death_timer = g_timeout_add_seconds(10, timer_func, client); diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c index 091e550..2869bfe 100644 --- a/tests/test-glib-proxy-server.c +++ b/tests/test-glib-proxy-server.c @@ -93,6 +93,19 @@ main (int argc, char ** argv) g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL)))); + DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); + guint nameret = 0; + + if (!org_freedesktop_DBus_request_name(bus_proxy, "test.proxy.server", 0, &nameret, &error)) { + g_error("Unable to call to request name"); + return 1; + } + + if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { + g_error("Unable to get name"); + return 1; + } + server = dbusmenu_server_new("/org/test"); timer_func(NULL); -- cgit v1.2.3 From a52f4ea9d88394aca3992f4c9ca8093d7f07993f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 9 Feb 2010 15:26:06 -0600 Subject: Fixing build --- tests/test-glib-proxy-client.c | 2 +- tests/test-glib-proxy-server.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'tests/test-glib-proxy-server.c') diff --git a/tests/test-glib-proxy-client.c b/tests/test-glib-proxy-client.c index 7e3541a..b1caaad 100644 --- a/tests/test-glib-proxy-client.c +++ b/tests/test-glib-proxy-client.c @@ -24,7 +24,7 @@ with this program. If not, see . #include #include -#include "test-glib-properties.h" +#include "test-glib-proxy.h" static guint layouton = 0; static GMainLoop * mainloop = NULL; diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c index 2869bfe..4458acf 100644 --- a/tests/test-glib-proxy-server.c +++ b/tests/test-glib-proxy-server.c @@ -24,11 +24,12 @@ with this program. If not, see . #include #include #include +#include #include #include -#include "test-glib-properties.h" +#include "test-glib-proxy.h" static void set_props (DbusmenuMenuitem * mi, gchar ** props) @@ -91,7 +92,10 @@ main (int argc, char ** argv) { g_type_init(); - g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL)))); + GError * error = NULL; + DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + + g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(connection))); DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); guint nameret = 0; -- cgit v1.2.3 From bdbd32b98a1742878aaa26416c11f88a0f09c627 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 12 Feb 2010 16:45:52 -0600 Subject: not setting the IDs as we're not using them on the other side anyway --- tests/test-glib-proxy-server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/test-glib-proxy-server.c') diff --git a/tests/test-glib-proxy-server.c b/tests/test-glib-proxy-server.c index 4458acf..cba8ec7 100644 --- a/tests/test-glib-proxy-server.c +++ b/tests/test-glib-proxy-server.c @@ -49,7 +49,7 @@ layout2menuitem (proplayout_t * layout) { if (layout == NULL || layout->id == -1) return NULL; - DbusmenuMenuitem * local = dbusmenu_menuitem_new_with_id(layout->id); + DbusmenuMenuitem * local = dbusmenu_menuitem_new(); set_props(local, layout->properties); if (layout->submenu != NULL) { -- cgit v1.2.3