15#include "KWayland/Client/appmenu.h"
16#include "KWayland/Client/compositor.h"
17#include "KWayland/Client/connection_thread.h"
18#include "KWayland/Client/event_queue.h"
19#include "KWayland/Client/region.h"
20#include "KWayland/Client/registry.h"
21#include "KWayland/Client/surface.h"
34 void testCreateAndSet();
40 KWayland::Client::ConnectionThread *m_connection;
41 KWayland::Client::Compositor *m_compositor;
42 KWayland::Client::AppMenuManager *m_appmenuManager;
43 KWayland::Client::EventQueue *m_queue;
47static const QString s_socketName = QStringLiteral(
"kwayland-test-wayland-appmenu-0");
52 , m_compositorInterface(nullptr)
53 , m_connection(nullptr)
54 , m_compositor(nullptr)
60void TestAppmenu::init()
63 qRegisterMetaType<AppMenuInterface::InterfaceAddress>();
71 m_connection =
new KWayland::Client::ConnectionThread;
72 QSignalSpy connectedSpy(m_connection, &KWayland::Client::ConnectionThread::connected);
73 m_connection->setSocketName(s_socketName);
75 m_thread =
new QThread(
this);
76 m_connection->moveToThread(m_thread);
79 m_connection->initConnection();
80 QVERIFY(connectedSpy.wait());
82 m_queue =
new KWayland::Client::EventQueue(
this);
83 QVERIFY(!m_queue->isValid());
84 m_queue->setup(m_connection);
85 QVERIFY(m_queue->isValid());
87 KWayland::Client::Registry registry;
88 QSignalSpy compositorSpy(®istry, &KWayland::Client::Registry::compositorAnnounced);
90 QSignalSpy appmenuSpy(®istry, &KWayland::Client::Registry::appMenuAnnounced);
92 QVERIFY(!registry.eventQueue());
93 registry.setEventQueue(m_queue);
94 QCOMPARE(registry.eventQueue(), m_queue);
95 registry.create(m_connection->display());
96 QVERIFY(registry.isValid());
100 QVERIFY(compositorSpy.wait());
101 m_compositor = registry.createCompositor(compositorSpy.first().first().value<quint32>(), compositorSpy.first().last().value<quint32>(),
this);
105 QVERIFY(appmenuSpy.wait());
106 m_appmenuManager = registry.createAppMenuManager(appmenuSpy.first().first().value<quint32>(), appmenuSpy.first().last().value<quint32>(),
this);
109void TestAppmenu::cleanup()
111#define CLEANUP(variable) \
114 variable = nullptr; \
120 m_connection->deleteLater();
121 m_connection =
nullptr;
130 CLEANUP(m_appmenuManagerInterface)
135void TestAppmenu::testCreateAndSet()
139 std::unique_ptr<KWayland::Client::Surface> surface(m_compositor->createSurface());
140 QVERIFY(serverSurfaceCreated.wait());
147 auto appmenu = m_appmenuManager->create(surface.get(), surface.get());
148 QVERIFY(appMenuCreated.wait());
150 QCOMPARE(m_appmenuManagerInterface->
appMenuForSurface(serverSurface), appMenuInterface);
152 QCOMPARE(appMenuInterface->address().serviceName, QString());
153 QCOMPARE(appMenuInterface->address().objectPath, QString());
157 appmenu->setAddress(
"net.somename",
"/test/path");
159 QVERIFY(appMenuChangedSpy.wait());
160 QCOMPARE(appMenuInterface->address().serviceName, QString(
"net.somename"));
161 QCOMPARE(appMenuInterface->address().objectPath, QString(
"/test/path"));
164 QSignalSpy destroyedSpy(appMenuInterface, &QObject::destroyed);
166 QVERIFY(destroyedSpy.wait());
171#include "test_wayland_appmenu.moc"
void surfaceCreated(KWin::SurfaceInterface *surface)
Class holding the Wayland server display loop.
bool addSocketName(const QString &name=QString())
Resource representing a wl_surface.
#define CLEANUP(variable)