71 lines
2.6 KiB
Go
71 lines
2.6 KiB
Go
// Copyright (c) 2026 Storm Dragon
|
|
// Authors: Storm Dragon, Angus Kola
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package xorg
|
|
|
|
import "testing"
|
|
|
|
func TestSteamFocusRepairActivation(t *testing.T) {
|
|
repair := steamFocusRepair{}
|
|
inner := steamFocusSample{known: true, steam: true, window: 10, focus: 12, pid: 123, innerFocus: true}
|
|
if target := repair.observe(inner); target != 0 {
|
|
t.Fatal("valid browser focus requested a repair")
|
|
}
|
|
repair.observe(steamFocusSample{known: true, window: 20, focus: 20})
|
|
outer := inner
|
|
outer.focus, outer.innerFocus = 10, false
|
|
if target := repair.observe(outer); target != 0 {
|
|
t.Fatal("repair did not allow Steam its first restoration sample")
|
|
}
|
|
if target := repair.observe(outer); target != 12 {
|
|
t.Fatalf("repair target = %d, want remembered browser child 12", target)
|
|
}
|
|
}
|
|
|
|
func TestSteamFocusRepairPreservesControlAndWindowBoundaries(t *testing.T) {
|
|
for _, test := range []struct {
|
|
name string
|
|
sample steamFocusSample
|
|
}{
|
|
{"other application", steamFocusSample{known: true, window: 20, focus: 20}},
|
|
{"other Steam window", steamFocusSample{known: true, steam: true, window: 30, focus: 30, pid: 123}},
|
|
{"reused window with different process", steamFocusSample{known: true, steam: true, window: 10, focus: 10, pid: 456}},
|
|
{"already focused browser popup", steamFocusSample{known: true, steam: true, window: 10, focus: 14, pid: 123, innerFocus: true}},
|
|
{"external keyboard focus", steamFocusSample{known: true, steam: true, window: 10, focus: 99, pid: 123}},
|
|
{"unknown foreground", steamFocusSample{}},
|
|
} {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
repair := steamFocusRepair{}
|
|
repair.observe(steamFocusSample{known: true, steam: true, window: 10, focus: 12, pid: 123, innerFocus: true})
|
|
repair.observe(steamFocusSample{known: true, window: 20})
|
|
for i := 0; i < 12; i++ {
|
|
if target := repair.observe(test.sample); target != 0 {
|
|
t.Fatalf("unexpected focus repair to %d", target)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSteamFocusRepairRemembersPopupAndExpires(t *testing.T) {
|
|
repair := steamFocusRepair{}
|
|
inner := steamFocusSample{known: true, steam: true, window: 10, focus: 12, pid: 123, innerFocus: true}
|
|
repair.observe(inner)
|
|
inner.focus = 14
|
|
repair.observe(inner)
|
|
repair.observe(steamFocusSample{known: true, window: 20})
|
|
outer := inner
|
|
outer.focus, outer.innerFocus = 10, false
|
|
repair.observe(outer)
|
|
if target := repair.observe(outer); target != 14 {
|
|
t.Fatalf("target = %d, want most recently focused popup 14", target)
|
|
}
|
|
for i := 0; i < 10; i++ {
|
|
repair.observe(inner)
|
|
}
|
|
if target := repair.observe(outer); target != 0 {
|
|
t.Fatalf("repair remained armed after activation window expired: %d", target)
|
|
}
|
|
}
|