summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Sparber <julian@sparber.net>2024-09-19 22:18:16 +0200
committerJulian Sparber <julian@sparber.net>2024-10-01 18:25:52 +0200
commit59877f5cc66d98f1f8f33455e24384bf46605ab7 (patch)
tree06281aada280f43662216a940a6663049acfc382
parent73970ee0b4ea6351958b01ab6d9973b9eb6b2065 (diff)
tests: Add launch context to `g_app_info_launch_uris()` tests
This ensure that `g_app_info_launch_uris()` uses and set the correct activation token.
-rw-r--r--gio/tests/dbus-appinfo.c46
-rw-r--r--gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop1
2 files changed, 41 insertions, 6 deletions
diff --git a/gio/tests/dbus-appinfo.c b/gio/tests/dbus-appinfo.c
index 80861fdd1..4ab86a547 100644
--- a/gio/tests/dbus-appinfo.c
+++ b/gio/tests/dbus-appinfo.c
@@ -290,6 +290,11 @@ test_dbus_appinfo (void)
g_object_unref (app);
}
+static GType test_flatpak_application_get_type (void);
+typedef GApplication TestFlatpakApplication;
+typedef GApplicationClass TestFlatpakApplicationClass;
+G_DEFINE_TYPE (TestFlatpakApplication, test_flatpak_application, G_TYPE_APPLICATION)
+
static void
on_flatpak_launch_uris_finish (GObject *object,
GAsyncResult *result,
@@ -300,6 +305,8 @@ on_flatpak_launch_uris_finish (GObject *object,
g_app_info_launch_uris_finish (G_APP_INFO (object), result, &error);
g_assert_no_error (error);
+ g_assert_true (requested_startup_id);
+ g_assert_true (saw_startup_id);
g_application_release (app);
}
@@ -308,6 +315,7 @@ static void
on_flatpak_activate (GApplication *app,
gpointer user_data)
{
+ GAppLaunchContext *ctx;
GDesktopAppInfo *flatpak_appinfo = user_data;
char *uri;
GList *uris;
@@ -318,8 +326,12 @@ on_flatpak_activate (GApplication *app,
uri = g_filename_to_uri (g_desktop_app_info_get_filename (flatpak_appinfo), NULL, NULL);
g_assert_nonnull (uri);
uris = g_list_prepend (NULL, uri);
- g_app_info_launch_uris_async (G_APP_INFO (flatpak_appinfo), uris, NULL,
+ ctx = g_object_new (test_app_launch_context_get_type (), NULL);
+ requested_startup_id = FALSE;
+ saw_startup_id = FALSE;
+ g_app_info_launch_uris_async (G_APP_INFO (flatpak_appinfo), uris, ctx,
NULL, on_flatpak_launch_uris_finish, app);
+ g_object_unref (ctx);
g_list_free (uris);
g_free (uri);
}
@@ -342,6 +354,17 @@ on_flatpak_open (GApplication *app,
}
static void
+test_flatpak_application_init (TestApplication *app)
+{
+}
+
+static void
+test_flatpak_application_class_init (GApplicationClass *class)
+{
+ class->before_emit = test_application_before_emit;
+}
+
+static void
test_flatpak_doc_export (void)
{
const gchar *argv[] = { "myapp", NULL };
@@ -364,8 +387,10 @@ test_flatpak_doc_export (void)
g_assert_nonnull (flatpak_appinfo);
g_free (desktop_file);
- app = g_application_new ("org.gtk.test.dbusappinfo.flatpak",
- G_APPLICATION_HANDLES_OPEN);
+ app = g_object_new (test_flatpak_application_get_type (),
+ "application-id", "org.gtk.test.dbusappinfo.flatpak",
+ "flags", G_APPLICATION_HANDLES_OPEN,
+ NULL);
g_signal_connect (app, "activate", G_CALLBACK (on_flatpak_activate),
flatpak_appinfo);
g_signal_connect (app, "open", G_CALLBACK (on_flatpak_open), NULL);
@@ -389,6 +414,8 @@ on_flatpak_launch_invalid_uri_finish (GObject *object,
g_app_info_launch_uris_finish (G_APP_INFO (object), result, &error);
g_assert_no_error (error);
+ g_assert_true (requested_startup_id);
+ g_assert_true (saw_startup_id);
g_application_release (app);
}
@@ -397,6 +424,7 @@ static void
on_flatpak_activate_invalid_uri (GApplication *app,
gpointer user_data)
{
+ GAppLaunchContext *ctx;
GDesktopAppInfo *flatpak_appinfo = user_data;
GList *uris;
@@ -404,8 +432,12 @@ on_flatpak_activate_invalid_uri (GApplication *app,
g_application_hold (app);
uris = g_list_prepend (NULL, "file:///hopefully/an/invalid/path.desktop");
- g_app_info_launch_uris_async (G_APP_INFO (flatpak_appinfo), uris, NULL,
+ ctx = g_object_new (test_app_launch_context_get_type (), NULL);
+ requested_startup_id = FALSE;
+ saw_startup_id = FALSE;
+ g_app_info_launch_uris_async (G_APP_INFO (flatpak_appinfo), uris, ctx,
NULL, on_flatpak_launch_invalid_uri_finish, app);
+ g_object_unref (ctx);
g_list_free (uris);
}
@@ -448,8 +480,10 @@ test_flatpak_missing_doc_export (void)
flatpak_appinfo = g_desktop_app_info_new_from_filename (desktop_file);
g_assert_nonnull (flatpak_appinfo);
- app = g_application_new ("org.gtk.test.dbusappinfo.flatpak",
- G_APPLICATION_HANDLES_OPEN);
+ app = g_object_new (test_flatpak_application_get_type (),
+ "application-id", "org.gtk.test.dbusappinfo.flatpak",
+ "flags", G_APPLICATION_HANDLES_OPEN,
+ NULL);
g_signal_connect (app, "activate", G_CALLBACK (on_flatpak_activate_invalid_uri),
flatpak_appinfo);
g_signal_connect (app, "open", G_CALLBACK (on_flatpak_open_invalid_uri), NULL);
diff --git a/gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop b/gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop
index 9ef248a5f..6a814ae43 100644
--- a/gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop
+++ b/gio/tests/org.gtk.test.dbusappinfo.flatpak.desktop
@@ -3,3 +3,4 @@ Type=Application
Name=Test
DBusActivatable=true
X-Flatpak=org.gtk.test.dbusappinfo.flatpak
+StartupNotify=true