Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
196 changes: 190 additions & 6 deletions hyprtester/src/tests/main/layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,11 +303,29 @@ TEST_CASE(ruleConfinementRuntimeToggle) {

TEST_CASE(layerVisibilityOnFs) {

// For default handled fullscreen
const auto doMassacre = [&]() -> void {
Tests::killAllLayers();
Tests::waitUntilLayersN(0);
Tests::killAllWindows();
Tests::waitUntilWindowsN(0);
};

static constexpr const char* LAYER_NAMESPACE = "bar-like-layer";

ASSERT(spawnLayer(LAYER_NAMESPACE, {"--edge=top", "--layer=top", "--lines=48px", "--focus-policy=not-allowed"}), true);
const auto spawnLayerAndWaitTillSuccess_TOP = [&]() {
ASSERT(spawnLayer(LAYER_NAMESPACE, {"--edge=top", "--layer=top", "--lines=48px", "--focus-policy=not-allowed"}), true);
Tests::waitUntilLayersN(1);
};

const auto spawnLayerAndWaitTillSuccess_OVERLAY = [&]() {
ASSERT(spawnLayer(LAYER_NAMESPACE, {"--edge=top", "--layer=overlay", "--lines=48px", "--focus-policy=not-allowed"}), true);
Tests::waitUntilLayersN(1);
};

// For default handled fullscreen

// FS after a layer has been created
spawnLayerAndWaitTillSuccess_TOP();

SPAWN_KITTY("cat");

Expand All @@ -318,35 +336,201 @@ TEST_CASE(layerVisibilityOnFs) {
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'set', window = 'class:cat' })"));
{

auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);

EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 1");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'set', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 0");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 2");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1")
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

// TOP Layer spawn after FS

doMassacre();

// allow_new_top_layers_over_existing_fullscreen = true
OK(getFromSocket("/eval hl.config({ misc = { allow_new_top_layers_over_existing_fullscreen = true } })"));

SPAWN_KITTY("cat");

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'set', window = 'class:cat' })"));
spawnLayerAndWaitTillSuccess_TOP();
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 1");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

doMassacre();
SPAWN_KITTY("cat");

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'set', window = 'class:cat' })"));
spawnLayerAndWaitTillSuccess_TOP();
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1")
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 2");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

// allow_new_top_layers_over_existing_fullscreen = false

doMassacre();

OK(getFromSocket("/eval hl.config({ misc = { allow_new_top_layers_over_existing_fullscreen = false },})"));

SPAWN_KITTY("cat");

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'set', window = 'class:cat' })"));
spawnLayerAndWaitTillSuccess_TOP();
{

auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 1");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

doMassacre();
SPAWN_KITTY("cat");

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'set', window = 'class:cat' })"));
spawnLayerAndWaitTillSuccess_TOP();
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 0");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 2");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

doMassacre();

// Overlay is always ontop, spawn later or before FS

// we need not test with the allow_new_top_layers_over_existing_fullscreen config opt as it's only relevant to TOP layer.

// FS after a layer has been created
spawnLayerAndWaitTillSuccess_OVERLAY();

SPAWN_KITTY("cat");

{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 0")
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'set', window = 'class:cat' })"));
{

auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 1");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'set', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 2");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

// overlay Layer spawn after FS

doMassacre();
SPAWN_KITTY("cat");

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'set', window = 'class:cat' })"));
spawnLayerAndWaitTillSuccess_OVERLAY();
{

auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1")
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 1");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'maximized', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}

doMassacre();
SPAWN_KITTY("cat");

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'set', window = 'class:cat' })"));
spawnLayerAndWaitTillSuccess_OVERLAY();
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 2");
}

OK(getFromSocket("/dispatch hl.dsp.window.fullscreen({ mode = 'fullscreen', action = 'unset', window = 'class:cat' })"));
{
auto str = getLayerLine(getFromSocket("/layers"), LAYER_NAMESPACE);
EXPECT_CONTAINS(str, "a: 1");
EXPECT_CONTAINS(getFromSocket("/activewindow"), "fullscreen: 0");
}
}
Expand Down
Loading
Loading