summaryrefslogtreecommitdiff
path: root/tests/test-browser-service.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-browser-service.c')
-rw-r--r--tests/test-browser-service.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/tests/test-browser-service.c b/tests/test-browser-service.c
new file mode 100644
index 0000000..76a1f2c
--- /dev/null
+++ b/tests/test-browser-service.c
@@ -0,0 +1,98 @@
+#include "config.h"
+#include <dbus/dbus-glib.h>
+
+#include "browser-service/browser-service.h"
+#include "browser-service/channel-proxy.h"
+
+static void
+request_started_cb (DBusGProxy *channel,
+ const char *request)
+{
+ g_print ("%s: %s\n", G_STRFUNC, request);
+}
+
+static void
+request_stopped_cb (DBusGProxy *channel,
+ const char *request,
+ guint status,
+ gpointer user_data)
+{
+ GMainLoop *loop = user_data;
+ g_print ("%s: %s: status=%d\n", G_STRFUNC, request, status);
+ g_main_loop_quit (loop);
+}
+
+static void
+data_available_cb (DBusGProxy *channel,
+ const char *request,
+ GArray *data)
+{
+ g_print ("%s: %s: count=%d\n", G_STRFUNC, request, data->len);
+ g_print ("%s...\n", g_strndup(data->data, MIN (data->len, 60)));
+}
+
+int
+main (int argc,
+ char **argv)
+{
+ DBusGConnection *session = NULL;
+ DBusGProxy *service = NULL;
+ DBusGProxy *channel = NULL;
+ GMainLoop *loop = NULL;
+ GError *error = NULL;
+ char *path = NULL;
+
+ g_type_init ();
+
+ loop = g_main_loop_new (NULL, FALSE);
+ session = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+
+ if (!session)
+ goto OUT;
+
+ service = gruschler_browser_service_new (session, &error);
+
+ if (!service)
+ goto OUT;
+
+ g_print ("service name: %s\n", dbus_g_proxy_get_bus_name (service));
+
+ channel = gruschler_browser_service_new_channel (service,
+ "http://www.facebook.com/home.php",
+ &error);
+
+ g_print ("channel path: %s\n", dbus_g_proxy_get_path (channel));
+
+ dbus_g_proxy_connect_signal (channel, "RequestStarted",
+ G_CALLBACK (request_started_cb), loop, NULL);
+ dbus_g_proxy_connect_signal (channel, "RequestStopped",
+ G_CALLBACK (request_stopped_cb), loop, NULL);
+ dbus_g_proxy_connect_signal (channel, "DataAvailable",
+ G_CALLBACK (data_available_cb), loop, NULL);
+
+ if (!gruschler_channel_proxy_open (channel, &error))
+ goto OUT;
+
+ g_main_loop_run (loop);
+
+OUT:
+ if (error)
+ {
+ g_printerr ("%s(%d): %s\n",
+ g_quark_to_string (error->domain),
+ error->code, error->message);
+ g_error_free (error);
+ }
+
+ if (channel)
+ g_object_unref (channel);
+ if (service)
+ g_object_unref (service);
+
+ if (loop)
+ g_main_loop_unref (loop);
+
+ g_free (path);
+
+ return (error ? 1 : 0);
+}