1package webkit
2
3import (
4 "testing"
5
6 webkitlib "github.com/bnema/puregotk/v4/webkit"
7 "github.com/stretchr/testify/assert"
8)
9
10func TestWebProcessTerminationReasonString(t *testing.T) {
11 assert.Equal(t, "crashed", webProcessTerminationReasonString(webkitlib.WebProcessCrashedValue))
12 assert.Equal(t, "exceeded_memory", webProcessTerminationReasonString(webkitlib.WebProcessExceededMemoryLimitValue))
13 assert.Equal(t, "terminated_by_api", webProcessTerminationReasonString(webkitlib.WebProcessTerminatedByApiValue))
14 assert.Equal(t, "unknown", webProcessTerminationReasonString(webkitlib.WebProcessTerminationReason(99)))
15}
16
17func TestResolveTerminatePolicy(t *testing.T) {
18 t.Setenv("DUMBER_WEBVIEW_TERMINATE_POLICY", "")
19 assert.Equal(t, terminatePolicyAuto, resolveTerminatePolicy(""))
20 assert.Equal(t, terminatePolicyAlways, resolveTerminatePolicy("always"))
21 assert.Equal(t, terminatePolicyNever, resolveTerminatePolicy("never"))
22 assert.Equal(t, terminatePolicyAuto, resolveTerminatePolicy("invalid"))
23
24 t.Setenv("DUMBER_WEBVIEW_TERMINATE_POLICY", "always")
25 assert.Equal(t, terminatePolicyAlways, resolveTerminatePolicy(""))
26}
27
28func TestShouldTerminateWebProcess(t *testing.T) {
29 assert.False(t, shouldTerminateWebProcess(terminatePolicyAlways, true, true)) // isRelated=true, navigationActive=true
30 assert.False(t, shouldTerminateWebProcess(terminatePolicyNever, false, true)) // isRelated=false, navigationActive=true
31 assert.True(t, shouldTerminateWebProcess(terminatePolicyAlways, false, false)) // isRelated=false, navigationActive=false
32 assert.True(t, shouldTerminateWebProcess(terminatePolicyAuto, false, true)) // isRelated=false, navigationActive=true
33 assert.False(t, shouldTerminateWebProcess(terminatePolicyAuto, false, false)) // isRelated=false, navigationActive=false
34}