15#include "qwayland-server-decoration-palette.h"
17#include "KWayland/Client/compositor.h"
18#include "KWayland/Client/connection_thread.h"
19#include "KWayland/Client/event_queue.h"
20#include "KWayland/Client/registry.h"
21#include "KWayland/Client/surface.h"
47 void testCreateAndSet();
53 KWayland::Client::ConnectionThread *m_connection;
54 KWayland::Client::Compositor *m_compositor;
56 KWayland::Client::EventQueue *m_queue;
60static const QString s_socketName = QStringLiteral(
"kwayland-test-wayland-decopalette-0");
65 , m_compositorInterface(nullptr)
66 , m_connection(nullptr)
67 , m_compositor(nullptr)
73void TestServerSideDecorationPalette::init()
83 m_connection =
new KWayland::Client::ConnectionThread;
84 QSignalSpy connectedSpy(m_connection, &KWayland::Client::ConnectionThread::connected);
85 m_connection->setSocketName(s_socketName);
87 m_thread =
new QThread(
this);
88 m_connection->moveToThread(m_thread);
91 m_connection->initConnection();
92 QVERIFY(connectedSpy.wait());
94 m_queue =
new KWayland::Client::EventQueue(
this);
95 QVERIFY(!m_queue->isValid());
96 m_queue->setup(m_connection);
97 QVERIFY(m_queue->isValid());
102 KWayland::Client::Registry registry;
104 connect(®istry, &KWayland::Client::Registry::interfaceAnnounced,
this, [
this, ®istry](
const QByteArray &interfaceName, quint32 name, quint32
version) {
105 if (interfaceName == org_kde_kwin_server_decoration_palette_manager_interface.name) {
106 m_paletteManager = new ServerSideDecorationPaletteManager();
107 m_paletteManager->init(registry.registry(), name, version);
111 QSignalSpy interfacesAnnouncedSpy(®istry, &KWayland::Client::Registry::interfacesAnnounced);
112 QSignalSpy compositorSpy(®istry, &KWayland::Client::Registry::compositorAnnounced);
116 QCOMPARE(
registry.eventQueue(), m_queue);
117 registry.create(m_connection->display());
120 QVERIFY(interfacesAnnouncedSpy.wait());
122 m_compositor =
registry.createCompositor(compositorSpy.first().first().value<quint32>(), compositorSpy.first().last().value<quint32>(),
this);
124 QVERIFY(m_compositor);
125 QVERIFY(m_paletteManager);
128void TestServerSideDecorationPalette::cleanup()
130#define CLEANUP(variable) \
133 variable = nullptr; \
139 m_connection->deleteLater();
140 m_connection =
nullptr;
149 CLEANUP(m_paletteManagerInterface)
154void TestServerSideDecorationPalette::testCreateAndSet()
158 std::unique_ptr<KWayland::Client::Surface> surface(m_compositor->createSurface());
159 QVERIFY(serverSurfaceCreated.wait());
166 auto palette = std::make_unique<ServerSideDecorationPalette>();
167 palette->init(m_paletteManager->create(*surface.get()));
168 QVERIFY(paletteCreatedSpy.wait());
170 QCOMPARE(m_paletteManagerInterface->
paletteForSurface(serverSurface), paletteInterface);
172 QCOMPARE(paletteInterface->palette(), QString());
175 palette->set_palette(QStringLiteral(
"foobar"));
176 QVERIFY(changedSpy.wait());
177 QCOMPARE(paletteInterface->palette(), QString(
"foobar"));
180 QSignalSpy destroyedSpy(paletteInterface, &QObject::destroyed);
182 QVERIFY(destroyedSpy.wait());
187#include "test_server_side_decoration_palette.moc"
void surfaceCreated(KWin::SurfaceInterface *surface)
Class holding the Wayland server display loop.
bool addSocketName(const QString &name=QString())
void paletteChanged(const QString &palette)
void paletteCreated(KWin::ServerSideDecorationPaletteInterface *)
ServerSideDecorationPaletteInterface * paletteForSurface(SurfaceInterface *)
Resource representing a wl_surface.
~ServerSideDecorationPalette()
TestServerSideDecorationPalette(QObject *parent=nullptr)
KWayland::Client::Registry * registry
#define CLEANUP(variable)