KWin
Loading...
Searching...
No Matches
keymap_creation_failure_test.cpp
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2017 Martin Flöser <mgraesslin@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#include "kwin_wayland_test.h"
10
11#include "keyboard_input.h"
12#include "keyboard_layout.h"
13#include "virtualdesktops.h"
14#include "wayland_server.h"
15#include "window.h"
16#include "workspace.h"
17
18#include <KConfigGroup>
19#include <KGlobalAccel>
20
21#include <linux/input.h>
22
23using namespace KWin;
24
25static const QString s_socketName = QStringLiteral("wayland_test_kwin_keymap_creation_failure-0");
26
27class KeymapCreationFailureTest : public QObject
28{
29 Q_OBJECT
30private Q_SLOTS:
31 void initTestCase();
32 void init();
33 void cleanup();
34
35 void testPointerButton();
36};
37
38void KeymapCreationFailureTest::initTestCase()
39{
40 // situation for for BUG 381210
41 // this will fail to create keymap
42 qputenv("XKB_DEFAULT_RULES", "no");
43 qputenv("XKB_DEFAULT_MODEL", "no");
44 qputenv("XKB_DEFAULT_LAYOUT", "no");
45 qputenv("XKB_DEFAULT_VARIANT", "no");
46 qputenv("XKB_DEFAULT_OPTIONS", "no");
47
48 qRegisterMetaType<KWin::Window *>();
49 QSignalSpy applicationStartedSpy(kwinApp(), &Application::started);
50 QVERIFY(waylandServer()->init(s_socketName));
52 QRect(0, 0, 1280, 1024),
53 QRect(1280, 0, 1280, 1024),
54 });
55
56 kwinApp()->setConfig(KSharedConfig::openConfig(QString(), KConfig::SimpleConfig));
57 kwinApp()->setKxkbConfig(KSharedConfig::openConfig(QString(), KConfig::SimpleConfig));
58 KConfigGroup layoutGroup = kwinApp()->kxkbConfig()->group(QStringLiteral("Layout"));
59 layoutGroup.writeEntry("LayoutList", QStringLiteral("no"));
60 layoutGroup.writeEntry("Model", "no");
61 layoutGroup.writeEntry("Options", "no");
62 layoutGroup.sync();
63
64 kwinApp()->start();
65 QVERIFY(applicationStartedSpy.wait());
66}
67
68void KeymapCreationFailureTest::init()
69{
71}
72
73void KeymapCreationFailureTest::cleanup()
74{
76}
77
78void KeymapCreationFailureTest::testPointerButton()
79{
80 // test case for BUG 381210
81 // pressing a pointer button results in crash
82
83 // now create the crashing condition
84 // which is sending in a pointer event
85 Test::pointerButtonPressed(BTN_LEFT, 0);
86 Test::pointerButtonReleased(BTN_LEFT, 1);
87}
88
90#include "keymap_creation_failure_test.moc"
#define WAYLANDTEST_MAIN(TestObject)
void destroyWaylandConnection()
void setOutputConfig(const QList< QRect > &geometries)
bool setupWaylandConnection(AdditionalWaylandInterfaces flags=AdditionalWaylandInterfaces())
void pointerButtonPressed(quint32 button, quint32 time)
void pointerButtonReleased(quint32 button, quint32 time)
WaylandServer * waylandServer()