mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2025-12-20 04:10:03 +01:00
pw_factory objects allow permissions to be set on its clients, wp-factory exposes this funtionality to wireplumber clients.
65 lines
1.7 KiB
C
65 lines
1.7 KiB
C
/* WirePlumber
|
|
*
|
|
* Copyright © 2021 Collabora Ltd.
|
|
* @author Ashok Sidipotu <ashok.sidipotu@collabora.com>
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
#include "../common/base-test-fixture.h"
|
|
|
|
typedef struct {
|
|
WpBaseTestFixture base;
|
|
WpObjectManager *om;
|
|
} TestFixture;
|
|
|
|
static void
|
|
test_factory_setup (TestFixture *self, gconstpointer user_data)
|
|
{
|
|
wp_base_test_fixture_setup (&self->base, 0);
|
|
self->om = wp_object_manager_new ();
|
|
}
|
|
|
|
static void
|
|
test_factory_teardown (TestFixture *self, gconstpointer user_data)
|
|
{
|
|
g_clear_object (&self->om);
|
|
wp_base_test_fixture_teardown (&self->base);
|
|
}
|
|
|
|
static void
|
|
test_factory_enumeration_object_added (WpObjectManager *om,
|
|
WpFactory *factory, TestFixture *fixture)
|
|
{
|
|
g_autoptr (WpProperties) properties =
|
|
wp_global_proxy_get_global_properties(WP_GLOBAL_PROXY(factory));
|
|
const gchar* name = wp_properties_get (properties, PW_KEY_FACTORY_NAME);
|
|
g_assert_nonnull(name);
|
|
g_debug("factory name=%s", name);
|
|
|
|
/* among all the pw factory objects look for client-node-factory object */
|
|
if (!g_strcmp0(name, "client-node"))
|
|
g_main_loop_quit(fixture->base.loop);
|
|
}
|
|
|
|
static void
|
|
test_factory_enumeration (TestFixture *self, gconstpointer user_data)
|
|
{
|
|
g_signal_connect (self->om, "object_added",
|
|
(GCallback) test_factory_enumeration_object_added, self);
|
|
|
|
wp_object_manager_add_interest(self->om, WP_TYPE_FACTORY, NULL);
|
|
wp_core_install_object_manager(self->base.core, self->om);
|
|
g_main_loop_run(self->base.loop);
|
|
}
|
|
|
|
gint
|
|
main (gint argc, gchar *argv[])
|
|
{
|
|
g_test_init (&argc, &argv, NULL);
|
|
wp_init (WP_INIT_ALL);
|
|
|
|
g_test_add ("/wp/factory/enumeration", TestFixture, NULL,
|
|
test_factory_setup, test_factory_enumeration, test_factory_teardown);
|
|
|
|
return g_test_run ();
|
|
}
|